import java.util.Collection;
import org.onap.sdc.api.notification.IArtifactInfo;
+import org.onap.policy.distribution.model.PolicyInput;
/**
* Forwards polices.
* @param policies the policies to forward
* @throws ArtifactForwardingException if an error occurs when forwarding the given Artifact
*/
- void forward(Collection<IArtifactInfo> artifacts) throws ArtifactForwardingException;
+ void forward(PolicyInput policyInput) throws ArtifactForwardingException;
}
<name>${project.artifactId}</name>
<description>The main module of Policy Distribution that handles startup, lifecycle management, and parameters.</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.multicloud.framework</groupId>
+ <artifactId>multicloud-framework-artifactbroker-reception</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
<build>
<resources>
<!-- Output the version of the distribution service -->
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Intel. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.parameters;
+
+import org.onap.policy.common.parameters.ParameterGroup;
+
+/**
+ * Base class of all {@link ParameterGroup} classes for configuration parameters for
+ * {@link ArtifactForwarder} classes.
+ */
+public abstract class ArtifactForwarderConfigurationParameterGroup implements ParameterGroup {
+
+ private String name;
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019-2020 Intel. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.parameters;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import java.lang.reflect.Type;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * This class deserialises policy forwarder parameters from JSON.
+ */
+public class ArtifactForwarderConfigurationParametersJsonAdapter
+ implements JsonDeserializer<ArtifactForwarderConfigurationParameterGroup> {
+ private static final XLogger LOGGER =
+ XLoggerFactory.getXLogger(ArtifactForwarderConfigurationParametersJsonAdapter.class);
+
+ private static final String PARAMETER_CLASS_NAME = "parameterClassName";
+ private static final String Artifact_FORWARDER_PARAMETERS = "parameters";
+
+ @Override
+ public ArtifactForwarderConfigurationParameterGroup deserialize(final JsonElement json, final Type typeOfT,
+ final JsonDeserializationContext context) {
+ final JsonObject jsonObject = json.getAsJsonObject();
+
+ final String artifactForwarderParameterClassName = getParameterGroupClassName(jsonObject);
+ Class<?> artifactForwarderParameterClass = getParameterGroupClass(artifactForwarderParameterClassName);
+
+ return context.deserialize(jsonObject.get(Artifact_FORWARDER_PARAMETERS), artifactForwarderParameterClass);
+ }
+
+ private String getParameterGroupClassName(final JsonObject jsonObject) {
+ final JsonPrimitive classNameJsonPrimitive = ((JsonPrimitive) jsonObject.get(PARAMETER_CLASS_NAME));
+
+ if (classNameJsonPrimitive == null || classNameJsonPrimitive.getAsString().length() == 0) {
+ final String errorMessage = "parameter \"" + PARAMETER_CLASS_NAME + "\" value \""
+ + (classNameJsonPrimitive != null ? classNameJsonPrimitive.getAsString() : "null")
+ + "\" invalid in JSON file";
+ LOGGER.warn(errorMessage);
+ throw new IllegalArgumentException(errorMessage);
+ }
+ return classNameJsonPrimitive.getAsString().replaceAll("\\s+", "");
+ }
+
+ private Class<?> getParameterGroupClass(final String artifactForwarderParameterClassName) {
+ Class<?> artifactForwarderParameterClass = null;
+ try {
+ artifactForwarderParameterClass = Class.forName(artifactForwarderParameterClassName);
+ } catch (final ClassNotFoundException e) {
+ final String errorMessage = "parameter \"" + PARAMETER_CLASS_NAME + "\" value \""
+ + artifactForwarderParameterClassName + "\", could not find class";
+ LOGGER.warn(errorMessage, e);
+ throw new IllegalArgumentException(errorMessage, e);
+ }
+ return artifactForwarderParameterClass;
+ }
+
+}
import org.onap.policy.common.parameters.ParameterGroup;
import org.onap.policy.common.parameters.ValidationStatus;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
/**
* Class to hold all parameters needed for Distribution component.
// @formatter:off
private String name;
private RestServerParameters restServerParameters;
+ private Map<String, ReceptionHandlerParameters> receptionHandlerParameters;
+ private Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters
+ = new LinkedHashMap<>();
+ private Map<String, ArtifactForwarderConfigurationParameterGroup> artifactForwarderConfigurationParameters
+ = new LinkedHashMap<>();
// @formatter:on
/**
*
* @param name the parameter group name
*/
- public DistributionParameterGroup(final String name, final RestServerParameters restServerParameters) {
+ public DistributionParameterGroup(final String name, final RestServerParameters restServerParameters,
+ final Map<String, ReceptionHandlerParameters> receptionHandlerParameters,
+ final Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters,
+ final Map<String, ArtifactForwarderConfigurationParameterGroup> artifactForwarderConfigurationParameters) {
this.name = name;
this.restServerParameters = restServerParameters;
+ this.receptionHandlerParameters = receptionHandlerParameters;
+ this.receptionHandlerConfigurationParameters = receptionHandlerConfigurationParameters;
+ this.artifactForwarderConfigurationParameters = artifactForwarderConfigurationParameters;
}
/**
this.name = name;
}
+ /**
+ * Return the receptionHandlerParameters of this parameter group instance.
+ *
+ * @return the receptionHandlerParameters
+ */
+ public Map<String, ReceptionHandlerParameters> getReceptionHandlerParameters() {
+ return receptionHandlerParameters;
+ }
+
/**
* Return the restServerParameters of this parameter group instance.
*
return restServerParameters;
}
+ /**
+ * Gets the reception handler configuration parameter map.
+ *
+ * @return the reception handler configuration parameter map
+ */
+ public Map<String, ReceptionHandlerConfigurationParameterGroup> getReceptionHandlerConfigurationParameters() {
+ return receptionHandlerConfigurationParameters;
+ }
+
+ /**
+ * Sets the reception handler configuration parameter map.
+ *
+ * @param receptionHandlerConfigurationParameters the reception handler configuration parameters
+ */
+ public void setReceptionHandlerConfigurationParameters(
+ final Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters) {
+ this.receptionHandlerConfigurationParameters = receptionHandlerConfigurationParameters;
+ }
+
+ /**
+ * Gets the policy forwarder configuration parameter map.
+ *
+ * @return the policy forwarder configuration parameter map
+ */
+ public Map<String, ArtifactForwarderConfigurationParameterGroup> getArtifactForwarderConfigurationParameters() {
+ return artifactForwarderConfigurationParameters;
+ }
+
+ /**
+ * Sets the policy forwarder configuration parameter map.
+ *
+ * @param artifactForwarderConfigurationParameters the policy forwarder configuration parameters
+ */
+ public void setArtifactForwarderConfigurationParameters(
+ final Map<String, ArtifactForwarderConfigurationParameterGroup> artifactForwarderConfigurationParameters) {
+ this.artifactForwarderConfigurationParameters = artifactForwarderConfigurationParameters;
+ }
+
/**
* Validate the parameter group.
*
} else {
validationResult.setResult("restServerParameters", restServerParameters.validate());
}
+ validateReceptionHandlers(validationResult);
+ validateForwarderConfigurations(validationResult);
return validationResult;
}
+ private void validateReceptionHandlers(final GroupValidationResult validationResult) {
+ if (receptionHandlerParameters == null || receptionHandlerParameters.size() == 0) {
+ validationResult.setResult("receptionHandlerParameters", ValidationStatus.INVALID,
+ "must have at least one reception handler");
+ } else {
+ for (final Entry<String, ReceptionHandlerParameters> nestedGroupEntry : receptionHandlerParameters
+ .entrySet()) {
+ validationResult.setResult("receptionHandlerParameters", nestedGroupEntry.getKey(),
+ nestedGroupEntry.getValue().validate());
+ }
+ }
+ }
+
+ private void validateForwarderConfigurations(final GroupValidationResult validationResult) {
+ // @formatter:off
+ for (final Entry<String, ArtifactForwarderConfigurationParameterGroup> configurationParameters :
+ artifactForwarderConfigurationParameters.entrySet()) {
+ validationResult.setResult("artifactForwarderConfigurationParameters", configurationParameters.getKey(),
+ configurationParameters.getValue().validate());
+ }
+ // @formatter:on
+ }
+
}
import org.onap.policy.common.parameters.GroupValidationResult;
import org.onap.policy.distribution.main.PolicyDistributionException;
import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParametersJsonAdapter;
/**
* This class handles reading, parsing and validating of policy distribution parameters from JSON files.
try {
// Read the parameters from JSON using Gson
final Gson gson = new GsonBuilder()
+ .registerTypeAdapter(ArtifactForwarderConfigurationParameterGroup.class,
+ new ArtifactForwarderConfigurationParametersJsonAdapter())
+ .registerTypeAdapter(ReceptionHandlerConfigurationParameterGroup.class,
+ new ReceptionHandlerConfigurationParametersJsonAdapter())
.create();
distributionParameterGroup = gson.fromJson(new FileReader(arguments.getFullConfigurationFilePath()),
DistributionParameterGroup.class);
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Intel. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.testclasses;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.onap.policy.distribution.forwarding.ArtifactForwarder;
+import org.onap.policy.distribution.forwarding.ArtifactForwardingException;
+import org.onap.policy.distribution.model.PolicyInput;
+
+/**
+ * Class to create a dummy forwarder for test cases.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class DummyArtifactForwarder implements ArtifactForwarder {
+ private int numberOfPoliciesReceived = 0;
+
+ @Override
+ public void forward(final PolicyInput policy) throws ArtifactForwardingException {
+ numberOfPoliciesReceived += 1;
+ }
+
+ public int getNumberOfPoliciesReceived() {
+ return numberOfPoliciesReceived;
+ }
+
+ @Override
+ public void configure(String parameterGroupName) {}
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Intel. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.testclasses;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.distribution.main.parameters.ArtifactForwarderConfigurationParameterGroup;
+
+/**
+ * Dummy policy forwarder parameter group.
+ */
+public class DummyArtifactForwarderParameterGroup extends ArtifactForwarderConfigurationParameterGroup {
+
+ private boolean useHttps;
+ private String hostname;
+ private int port;
+ private String userName;
+ private String password;
+ private boolean isManaged;
+
+ public boolean isUseHttps() {
+ return useHttps;
+ }
+
+ public String getHostname() {
+ return hostname;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public boolean isManaged() {
+ return isManaged;
+ }
+
+ /**
+ * Builder for DummyArtifactForwarderParameterGroup.
+ */
+ public static class DummyArtifactForwarderParameterGroupBuilder {
+ private boolean useHttps;
+ private String hostname;
+ private int port;
+ private String userName;
+ private String password;
+ private boolean isManaged;
+
+ public DummyArtifactForwarderParameterGroupBuilder setUseHttps(final boolean useHttps) {
+ this.useHttps = useHttps;
+ return this;
+ }
+
+ public DummyArtifactForwarderParameterGroupBuilder setHostname(final String hostname) {
+ this.hostname = hostname;
+ return this;
+ }
+
+ public DummyArtifactForwarderParameterGroupBuilder setPort(final int port) {
+ this.port = port;
+ return this;
+ }
+
+ public DummyArtifactForwarderParameterGroupBuilder setUserName(final String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public DummyArtifactForwarderParameterGroupBuilder setPassword(final String password) {
+ this.password = password;
+ return this;
+ }
+
+ public DummyArtifactForwarderParameterGroupBuilder setIsManaged(final boolean isManaged) {
+ this.isManaged = isManaged;
+ return this;
+ }
+
+ /**
+ * Creates a new DummyArtifactForwarderParameterGroup instance.
+ */
+ public DummyArtifactForwarderParameterGroup build() {
+ return new DummyArtifactForwarderParameterGroup(this);
+ }
+ }
+
+ /**
+ * Construct an instance.
+ *
+ * @param builder the builder create the instance from
+ */
+ private DummyArtifactForwarderParameterGroup(final DummyArtifactForwarderParameterGroupBuilder builder) {
+ this.useHttps = builder.useHttps;
+ this.hostname = builder.hostname;
+ this.port = builder.port;
+ this.userName = builder.userName;
+ this.password = builder.password;
+ this.isManaged = builder.isManaged;
+ }
+
+ @Override
+ public GroupValidationResult validate() {
+ final GroupValidationResult validationResult = new GroupValidationResult(this);
+ return validationResult;
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Intel. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.testclasses;
+
+import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
+
+/**
+ * Class to create a dummy reception handler for test cases.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class DummyReceptionHandler extends AbstractReceptionHandler {
+
+ @Override
+ public void initializeReception(final String parameterGroupName) {}
+
+ @Override
+ public void destroy() {}
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Intel. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.testclasses;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
+
+public class DummyReceptionHandlerParameterGroup extends ReceptionHandlerConfigurationParameterGroup {
+
+ private String myStringParameter;
+ private int myIntegerParameter;
+ private boolean myBooleanParameter;
+
+ /**
+ * Inner static class is to used as a Builder.
+ *
+ */
+ public static class DummyReceptionHandlerParameterGroupBuilder {
+ private String myStringParameter;
+ private int myIntegerParameter;
+ private boolean myBooleanParameter;
+
+ public DummyReceptionHandlerParameterGroupBuilder setMyStringParameter(final String val) {
+ myStringParameter = val;
+ return this;
+ }
+
+ public DummyReceptionHandlerParameterGroupBuilder setMyIntegerParameter(final int val) {
+ myIntegerParameter = val;
+ return this;
+ }
+
+ public DummyReceptionHandlerParameterGroupBuilder setMyBooleanParameter(final boolean val) {
+ myBooleanParameter = val;
+ return this;
+ }
+
+ /**
+ * Creates a new DummyReceptionHandlerConfigurationParameterGroup instance.
+ */
+ public DummyReceptionHandlerParameterGroup build() {
+ return new DummyReceptionHandlerParameterGroup(this);
+ }
+ }
+
+ /**
+ * The constructor for instantiating PssdConfigurationParameterGroup. It is kept private so that
+ * it could only be called by PssdConfigurationBuilder.
+ *
+ * @param builder stores all the values used by PssdConfigurationParametersGroup
+ */
+ private DummyReceptionHandlerParameterGroup(final DummyReceptionHandlerParameterGroupBuilder builder) {
+ myStringParameter = builder.myStringParameter;
+ myIntegerParameter = builder.myIntegerParameter;
+ myBooleanParameter = builder.myBooleanParameter;
+ }
+
+ public String getMyStringParameter() {
+ return myStringParameter;
+ }
+
+ public int getMyIntegerParameter() {
+ return myIntegerParameter;
+ }
+
+ public boolean isMyBooleanParameter() {
+ return myBooleanParameter;
+ }
+
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public GroupValidationResult validate() {
+ return new GroupValidationResult(this);
+ }
+
+}
+
--- /dev/null
+{
+ "name" : []
+}
\ No newline at end of file
"port":6969,
"userName":"healthcheck",
"password":"zb!XztG34"
+ },
+ "receptionHandlerParameters":{
+ "DummyReceptionHandler":{
+ "receptionHandlerType":"DummyReceptionHandler",
+ "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+ "receptionHandlerConfigurationName":"dummyReceptionHandlerConfiguration",
+ "pluginHandlerParameters":{
+ "artifactForwarders":{
+ "DummyForwarder":{
+ "forwarderType":"DummyForwarder",
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyArtifactForwarder",
+ "forwarderConfigurationParameters": "dummyConfiguration"
+ }
+ }
+ }
+ }
+ },
+ "receptionHandlerConfigurationParameters":{
+ "dummyReceptionHandlerConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+ "parameters":{
+ "myStringParameter": "stringValue",
+ "myIntegerParameter":20,
+ "myBooleanParameter": true
+ }
+ }
+ },
+ "artifactForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyArtifactForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
--- /dev/null
+{
+ "name":"SDCDistributionGroup",
+ "restServerParameters":{
+ "host":"0.0.0.0",
+ "port":6969,
+ "userName":"healthcheck",
+ "password":"zb!XztG34"
+ },
+ "receptionHandlerParameters":{
+ },
+ "receptionHandlerConfigurationParameters":{
+ "dummyReceptionHandlerConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+ "parameters":{
+ "myStringParameter": "stringValue",
+ "myIntegerParameter":20,
+ "myBooleanParameter": true
+ }
+ }
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
+ }
+}
"userName":"healthcheck",
"password":"zb!XztG34",
"https":true
- }
+ },
+ "receptionHandlerParameters":{
+ "DummyReceptionHandler":{
+ "receptionHandlerType":"DummyReceptionHandler",
+ "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+ "receptionHandlerConfigurationName":"dummyReceptionHandlerConfiguration",
+ "pluginHandlerParameters":{
+ "artifactForwarders":{
+ "DummyForwarder":{
+ "forwarderType":"DummyForwarder",
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyArtifactForwarder",
+ "forwarderConfigurationParameters": "dummyConfiguration"
+ }
+ }
+ }
+ }
+ },
+ "receptionHandlerConfigurationParameters":{
+ "dummyReceptionHandlerConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+ "parameters":{
+ "myStringParameter": "stringValue",
+ "myIntegerParameter":20,
+ "myBooleanParameter": true
+ }
+ }
+ },
+ "artifactForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyArtifactForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
+ },
}
--- /dev/null
+{
+ "name":"SDCDistributionGroup",
+ "restServerParameters":{
+ "host":"0.0.0.0",
+ "port":6969,
+ "userName":"healthcheck",
+ "password":"zb!XztG34"
+ },
+ "receptionHandlerParameters":{
+ "DummyReceptionHandler":{
+ "receptionHandlerType":"DummyReceptionHandler",
+ "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+ "receptionHandlerConfigurationName":"dummyReceptionHandlerConfiguration",
+ "pluginHandlerParameters":{
+ }
+ }
+ },
+ "receptionHandlerConfigurationParameters":{
+ "dummyReceptionHandlerConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+ "parameters":{
+ "myStringParameter": "stringValue",
+ "myIntegerParameter":20,
+ "myBooleanParameter": true
+ }
+ }
+ }
+}
--- /dev/null
+{
+ "name":"SDCDistributionGroup",
+ "restServerParameters":{
+ "host":"0.0.0.0",
+ "port":6969,
+ "userName":"healthcheck",
+ "password":"zb!XztG34"
+ },
+ "receptionHandlerConfigurationParameters":{
+ "dummyReceptionHandlerConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+ "parameters":{
+ "myStringParameter": "stringValue",
+ "myIntegerParameter":20,
+ "myBooleanParameter": true
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "name" : []
+}
\ No newline at end of file
--- /dev/null
+{
+ "restServerParameters":{
+ "host":"0.0.0.0",
+ "port":6969,
+ "userName":"healthcheck",
+ "password":"zb!XztG34"
+ }
+}
\ No newline at end of file
<name>${project.artifactId}</name>
<description>[${project.parent.artifactId}] module provides the model for policy distribution</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.sdc.sdc-distribution-client</groupId>
+ <artifactId>sdc-distribution-client</artifactId>
+ <version>1.3.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
</project>
import java.util.List;
import java.util.Map;
+import org.onap.sdc.api.notification.IArtifactInfo;
+
/**
* Represents a CloudArtifact that a {@link Policy} can be decoded from.
*/
public class CloudArtifact implements PolicyInput {
- List<VfModuelModel> vfModulePayload;
- Map<String, String> artifactTypeMap;
+ List<VfModuleModel> vfModulePayload;
+ Map<String, IArtifactInfo> artifactMap;
- public CloudArtifact(List<VfModuelModel> vfModulePayload, Map<String, String> artifactTypeMap) {
+ public CloudArtifact(List<VfModuleModel> vfModulePayload, Map<String, IArtifactInfo> artifactMap) {
this.vfModulePayload = vfModulePayload;
- this.artifactTypeMap = artifactTypeMap;
+ this.artifactMap = artifactMap;
}
/**
*
* @return the path of the TOSCA file
*/
- List<VfModuelModel> getVfModulePayload() {
+ public List<VfModuleModel> getVfModulePayload() {
return vfModulePayload;
}
*
* @return the path of the TOSCA file
*/
- Map<String, String> getArtifactTypeMap() {
- return artifactTypeMap;
+ public Map<String, IArtifactInfo> getArtifactTypeMap() {
+ return artifactMap;
}
}
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Intel. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
/**
- * Represents a VfModuleModel that a {@link VfModuleModel} can be parsed.
+ * Represents a VfModuleModel that a {@link Policy} can be decoded from.
*/
-public class VfModuelModel {
+@SuppressWarnings("unchecked")
+public class VfModuleModel {
private String vfModuleModelName;
private String vfModuleModelInvariantUUID;
return vfModuleModelName;
}
+ public String getVfModuleModelVersion() {
+ return vfModuleModelVersion;
+ }
+
public String getVfModuleModelCustomizationUUID() {
return vfModuleModelCustomizationUUID;
}
public List<String> getArtifacts() {
return artifacts;
}
-
+
public Map<String, Object> getProperties() {
return properties;
}
import org.onap.policy.distribution.model.CloudArtifact;
import org.onap.policy.distribution.model.Csar;
import org.onap.policy.distribution.model.GsonUtil;
-import org.onap.policy.distribution.model.VfModuelModel;
+import org.onap.policy.distribution.model.VfModuleModel;
import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
import org.onap.policy.distribution.reception.handling.sdc.SdcClientHandler.SdcClientOperationType;
DistributionStatisticsManager.updateTotalDistributionCount();
List<String> relevantArtifactTypes = sdcConfig.getRelevantArtifactTypes();
Path path = Paths.get("/data");
- List<VfModuelModel> vfModuelModels = null;
- Map<String, String> artifactTypeMap = null; //key is UUID, value is type for k8s plugin
+ List<VfModuleModel> vfModuleModels = null;
Map<String, IArtifactInfo> artifactMap = null;//key is UUID, value is artifact for shared folder
String vfArtifactData = null;
for (final IArtifactInfo artifact : resource.getArtifacts()) {
- artifactTypeMap.put(artifact.getArtifactUUID(),artifact.getArtifactType());
artifactMap.put(artifact.getArtifactUUID(),artifact);
//extract the artifactlist and write them into MongoDB
final IDistributionClientDownloadResult resultArtifact =
downloadTheArtifact(artifact,notificationData);
vfArtifactData = new String(resultArtifact.getArtifactPayload());
- vfModuelModels= GsonUtil.parseJsonArrayWithGson(vfArtifactData,VfModuelModel.class);
+ vfModuleModels= GsonUtil.parseJsonArrayWithGson(vfArtifactData,VfModuleModel.class);
} catch (final ArtifactDownloadException exp) {
LOGGER.error("Failed to process csar service artifacts ", exp);
artifactsProcessedSuccessfully = false;
// 2. put the vfmodule-meta.json into it
// 3. put the service-meta.json into it
// 3. go through each aritfact uuid under artifact_list of vf_module and download
- for (final VfModuelModel vfModule : vfModuelModels) {
+ for (final VfModuleModel vfModule : vfModuleModels) {
try {
//create the new dir
Path temp = Paths.get("/data",vfModule.getVfModuleModelCustomizationUUID());
//for subplug work
try {
- final CloudArtifact cloudArtifact = new CloudArtifact(vfModuelModels, artifactTypeMap);
+ final CloudArtifact cloudArtifact = new CloudArtifact(vfModuleModels, artifactMap);
inputReceived(cloudArtifact);
} catch ( final PolicyDecodingException exp) {
LOGGER.error("Failed to process cloud artifacts ", exp);
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.distribution.reception.handling.sdc;
+package org.onap.policy.distribution.main.testclasses;
import java.util.ArrayList;
import java.util.Collection;
-
import org.onap.policy.distribution.forwarding.ArtifactForwarder;
import org.onap.policy.distribution.forwarding.ArtifactForwardingException;
-import org.onap.sdc.api.notification.IArtifactInfo;
+import org.onap.policy.distribution.model.PolicyInput;
/**
* Class to create a dummy forwarder for test cases.
*/
public class DummyArtifactForwarder implements ArtifactForwarder {
private int numberOfPoliciesReceived = 0;
- private Collection<IArtifactInfo> policiesReceived = new ArrayList<>();
- /**
- * {@inheritDoc}.
- */
@Override
- public void forward(final Collection<IArtifactInfo> policies) throws ArtifactForwardingException {
- numberOfPoliciesReceived += policies.size();
- policiesReceived.addAll(policies);
+ public void forward(final PolicyInput policy) throws ArtifactForwardingException {
+ numberOfPoliciesReceived += 1;
}
- /**
- * Returns the number of policies received by this forwarder.
- *
- * @return the integer value
- */
public int getNumberOfPoliciesReceived() {
return numberOfPoliciesReceived;
}
- /**
- * Checks if the forwarder has received a policy with given policy type.
- *
- * @param policyType the policy type
- * @return the boolean result
- */
- public boolean receivedPolicyWithGivenType(final String policyType) {
- return true;
- }
-
- /**
- * {@inheritDoc}.
- */
@Override
- public void configure(final String parameterGroupName) {}
+ public void configure(String parameterGroupName) {}
}
<nexusproxy>https://nexus.onap.org</nexusproxy>
<version.logback>1.2.3</version.logback>
<policy.common.version>1.3.4</policy.common.version>
+ <policy.engine.version>1.3.5</policy.engine.version>
</properties>
<modules>
<module>model</module>
*/
protected void inputReceived(final PolicyInput policyInput) throws PolicyDecodingException {
- final Collection<IArtifactInfo> policies = new ArrayList<>();
for (final ArtifactForwarder policyForwarder : pluginHandler.getArtifactForwarders()) {
try {
- policyForwarder.forward(policies);
+ policyForwarder.forward(policyInput);
} catch (final ArtifactForwardingException policyForwardingException) {
LOGGER.error("Error when forwarding policies to " + policyForwarder, policyForwardingException);
}
import java.util.Collection;
import org.onap.policy.distribution.forwarding.ArtifactForwarder;
import org.onap.policy.distribution.forwarding.ArtifactForwardingException;
-import org.onap.sdc.api.notification.IArtifactInfo;
+import org.onap.policy.distribution.model.PolicyInput;
/**
* Class to create a dummy forwarder for test cases in AbstractReceptionHandlerTest.
*/
public class DummyArtifactForwarder implements ArtifactForwarder {
private int numberOfPoliciesReceived = 0;
- private Collection<IArtifactInfo> policiesReceived = new ArrayList<>();
@Override
- public void forward(final Collection<IArtifactInfo> policies) throws ArtifactForwardingException {
- numberOfPoliciesReceived += policies.size();
- policiesReceived.addAll(policies);
+ public void forward(final PolicyInput policy) throws ArtifactForwardingException {
+ numberOfPoliciesReceived += 1;
}
public int getNumberOfPoliciesReceived() {
return numberOfPoliciesReceived;
}
- public boolean receivedPolicy(final IArtifactInfo policy) {
- return policiesReceived.contains(policy);
- }
@Override
public void configure(String parameterGroupName) {}