summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliboNet <libo.zhu@intel.com>2018-08-08 08:08:10 +0800
committerliboNet <libo.zhu@intel.com>2018-08-14 02:22:59 +0800
commit6261a6058cba8f5c0da0be36067ce1c6223c5ffc (patch)
tree4b267709503a25db7a5e26bc2a5f99dd5bcdd1a5
parentf85f63f52d38ca962fc0e68eae184dd7018dc47b (diff)
Initial moduel structure for SDC handling
This submission defines the initial module structure for this handling and add the IConfiguration implementation and test code, use the json format as the configuration. rename the class name to sensible one with PSSD prefix. remove static variable to make it possible for more than one subscription to SDC. improve the validate func to validate each mandatory parameters and check the int parameter's value Change-Id: I3106ad9d4535b1251eae064e803805b92378f6f1 Issue-ID: POLICY-956 Signed-off-by: liboNet <libo.zhu@intel.com>
-rw-r--r--plugins/reception-plugins/pom.xml21
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java127
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java199
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java79
-rw-r--r--plugins/reception-plugins/src/test/resources/handling-sdc.json26
-rw-r--r--plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json26
6 files changed, 478 insertions, 0 deletions
diff --git a/plugins/reception-plugins/pom.xml b/plugins/reception-plugins/pom.xml
index 3ac93083..a44ff777 100644
--- a/plugins/reception-plugins/pom.xml
+++ b/plugins/reception-plugins/pom.xml
@@ -36,5 +36,26 @@
<artifactId>reception</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.onap.sdc.sdc-tosca</groupId>
+ <artifactId>sdc-tosca</artifactId>
+ <version>1.3.0</version>
+ </dependency>
+ <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>
+ <dependency>
+ <groupId>org.onap.policy.common</groupId>
+ <artifactId>common-parameters</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java
new file mode 100644
index 00000000..5f74e2b2
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java
@@ -0,0 +1,127 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 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.reception.handling.sdc;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import org.onap.sdc.api.consumer.IConfiguration;
+
+/**
+ * Properties for the handling Sdc
+ *
+ */
+public class PSSDConfiguration implements IConfiguration {
+
+ // Configuration file structure
+
+ // Configuration file properties
+ private PSSDConfigurationParametersGroup configParameters=null;
+
+ /**
+ * Original constructor
+ *
+ * @param configParameters properties needed to be configured for the model loader
+ */
+ public PSSDConfiguration(PSSDConfigurationParametersGroup configParameters) {
+ this.configParameters = configParameters;
+
+ }
+
+
+ @Override
+ public String getAsdcAddress() {
+ return configParameters.getAsdcAddress();
+ }
+
+ @Override
+ public List<String> getMsgBusAddress() {
+ return configParameters.getMsgBusAddress();
+ }
+
+ @Override
+ public String getUser() {
+ return configParameters.getUser();
+ }
+
+ @Override
+ public String getPassword() {
+ return configParameters.getPassword();
+ }
+
+ @Override
+ public int getPollingInterval() {
+ return configParameters.getPollingInterval();
+ }
+
+ @Override
+ public int getPollingTimeout() {
+ return configParameters.getPollingTimeout();
+ }
+
+ @Override
+ public List<String> getRelevantArtifactTypes() {
+ return configParameters.getArtifactTypes();
+ }
+
+ @Override
+ public String getConsumerGroup() {
+ return configParameters.getConsumerGroup();
+ }
+
+ @Override
+ public String getEnvironmentName() {
+ return configParameters.getEnvironmentName();
+ }
+
+ @Override
+ public String getConsumerID() {
+ return configParameters.getConsumerID();
+ }
+
+ @Override
+ public String getKeyStorePassword() {
+ return configParameters.getKeyStorePassword();
+ }
+
+ @Override
+ public String getKeyStorePath() {
+ return configParameters.getKeyStorePath();
+ }
+
+ @Override
+ public boolean activateServerTLSAuth() {
+ return configParameters.activateServerTLSAuth();
+ }
+
+ @Override
+ public boolean isFilterInEmptyResources() {
+ return configParameters.isFilterInEmptyResources();
+ }
+
+ @Override
+ public Boolean isUseHttpsWithDmaap() {
+ return configParameters.isUseHttpsWithDmaap();
+ }
+
+
+}
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java
new file mode 100644
index 00000000..da603359
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java
@@ -0,0 +1,199 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 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.reception.handling.sdc;
+import java.util.List;
+import java.io.FileReader;
+import java.io.IOException;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ParameterConstants;
+import org.onap.policy.common.parameters.ParameterGroup;
+import org.onap.policy.common.parameters.ValidationStatus;
+
+/**
+* This class handles reading, parsing and validating of the Policy SDC Service Distribution parameters from Json
+* format, which strictly adheres to the interface:IConfiguration, defined by SDC SDK.
+*/
+public class PSSDConfigurationParametersGroup implements ParameterGroup {
+ //Policy SDC Service Distribution specified field.
+ private String name;
+
+ //Interface of IConfiguration item
+ private String asdcAddress;
+ private List<String> messageBusAddress;
+ private String user;
+ private String password;
+ private int pollingInterval;
+ private int pollingTimeout;
+ private String consumerId;
+ private List<String> artifactTypes;
+ private String consumerGroup;
+ private String environmentName;
+ private String keystorePath;
+ private String keystorePassword;
+ private boolean activeserverTlsAuth;
+ private boolean isFilterinEmptyResources;
+ private Boolean isUseHttpsWithDmaap;
+
+ public String getAsdcAddress(){
+ return asdcAddress;
+ }
+
+ public List<String> getMsgBusAddress(){
+ return messageBusAddress;
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public int getPollingInterval() {
+ return pollingInterval;
+ }
+
+ public int getPollingTimeout() {
+ return pollingTimeout;
+ }
+
+ public String getConsumerID() {
+ return consumerId;
+ }
+
+ public List<String> getArtifactTypes(){
+ return artifactTypes;
+ }
+
+ public String getConsumerGroup() {
+ return consumerGroup;
+ }
+
+ public String getEnvironmentName() {
+ return environmentName;
+ }
+
+ public String getKeyStorePassword() {
+ return keystorePassword;
+ }
+
+ public String getKeyStorePath() {
+ return keystorePath;
+ }
+
+ public boolean activateServerTLSAuth() {
+ return activeserverTlsAuth;
+ }
+
+ public boolean isFilterInEmptyResources() {
+ return isFilterinEmptyResources;
+ }
+
+ public Boolean isUseHttpsWithDmaap() {
+ return isUseHttpsWithDmaap;
+ }
+
+ @Override
+ public String toString() {
+ return "name =" + name +",TestParameters:[asdcAddress = " + asdcAddress + ", messageBusAddress = " + messageBusAddress +
+ ", user = "+ user + "]";
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public GroupValidationResult validate() {
+ GroupValidationResult validationResult = new GroupValidationResult(this);
+
+ if (name == null || name.trim().length() == 0) {
+ validationResult.setResult("name", ValidationStatus.INVALID, "name must be a non-blank string");
+ }
+
+ if (asdcAddress == null || asdcAddress.trim().length() == 0) {
+ validationResult.setResult("asdcAddress", ValidationStatus.INVALID, "asdcAddress must be a non-blank string");
+ }
+
+ if (user == null || user.trim().length() == 0) {
+ validationResult.setResult("user", ValidationStatus.INVALID, "user must be a non-blank string");
+ }
+
+ if (consumerId == null || consumerId.trim().length() == 0) {
+ validationResult.setResult("consumerId", ValidationStatus.INVALID, "consumerId must be a non-blank string");
+ }
+
+ if (consumerGroup == null || consumerGroup.trim().length() == 0) {
+ validationResult.setResult("consumerGroup", ValidationStatus.INVALID, "consumerGroup must be a non-blank string");
+ }
+
+ if (keystorePath == null || keystorePath.trim().length() == 0) {
+ validationResult.setResult("keystorePath", ValidationStatus.INVALID, "keystorePath must be a non-blank string");
+ }
+
+ if (keystorePassword == null || keystorePassword.trim().length() == 0) {
+ validationResult.setResult("keystorePassword", ValidationStatus.INVALID, "keystorePassword must be a non-blank string");
+ }
+
+ if(messageBusAddress == null){
+ validationResult.setResult("messageBusAddress", ValidationStatus.INVALID,
+ "messageBusAddress must be a list of non-blank string");
+ }else {
+ for(String temp:messageBusAddress){
+ if(temp.trim().length() == 0){
+ validationResult.setResult("messageBusAddress", ValidationStatus.INVALID,
+ "the string of messageBusAddress must be a non-blank string");
+ }
+ }
+ }
+
+ if(artifactTypes == null){
+ validationResult.setResult("artifactTypes", ValidationStatus.INVALID,
+ "artifactTypes must be a list of non-blank string");
+ }else {
+ for(String temp:artifactTypes){
+ if(temp.trim().length() == 0){
+ validationResult.setResult("artifactTypes", ValidationStatus.INVALID,
+ "the string of artifactTypes must be a non-blank string");
+ }
+ }
+ }
+
+ if (pollingInterval <= 0){
+ validationResult.setResult("pollingInterval", ValidationStatus.INVALID,
+ "pollingInterval must be a positive integer");
+ }
+
+ if (pollingTimeout <= 0){
+ validationResult.setResult("pollingTimeout", ValidationStatus.INVALID,
+ "pollingTimeout must be a positive integer");
+ }
+
+ return validationResult;
+ }
+
+}
+
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java
new file mode 100644
index 00000000..bcb7ac80
--- /dev/null
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java
@@ -0,0 +1,79 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 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.reception.handling.sdc;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import org.junit.Test;
+import org.onap.policy.common.parameters.GroupValidationResult;
+
+/*-
+ * Tests for PSSDConfiguration class
+ *
+ */
+public class PSSDConfigurationTest {
+
+ @Test
+ public void testPSSDConfigurationParametersGroup() throws IOException {
+ PSSDConfigurationParametersGroup configParameters = null;
+ try {
+ final Gson gson = new GsonBuilder().create();
+ configParameters =
+ gson.fromJson(new FileReader("src/test/resources/handling-sdc.json"),
+ PSSDConfigurationParametersGroup.class);
+ } catch (final Exception e) {
+ fail("test should not thrown an exception here: " + e.getMessage());
+ }
+ final GroupValidationResult validationResult = configParameters.validate();
+ assertTrue(validationResult.isValid());
+ assertEquals("parameterConfig1", configParameters.getName());
+
+ PSSDConfiguration config = new PSSDConfiguration(configParameters);
+ assertEquals(20, config.getPollingInterval());
+ assertEquals(30,config.getPollingTimeout());
+ }
+
+ @Test
+ public void testInvalidPSSDConfigurationParametersGroup() throws IOException {
+ PSSDConfigurationParametersGroup configParameters = null;
+ try {
+ final Gson gson = new GsonBuilder().create();
+ configParameters =
+ gson.fromJson(new FileReader("src/test/resources/handling-sdcInvalid.json"),
+ PSSDConfigurationParametersGroup.class);
+ } catch (final Exception e) {
+ fail("test should not thrown an exception here: " + e.getMessage());
+ }
+ final GroupValidationResult validationResult = configParameters.validate();
+ assertFalse(validationResult.isValid());
+ assertEquals("parameterConfig1", configParameters.getName());
+
+ }
+}
diff --git a/plugins/reception-plugins/src/test/resources/handling-sdc.json b/plugins/reception-plugins/src/test/resources/handling-sdc.json
new file mode 100644
index 00000000..c1ca23aa
--- /dev/null
+++ b/plugins/reception-plugins/src/test/resources/handling-sdc.json
@@ -0,0 +1,26 @@
+{
+ "name" : "parameterConfig1",
+ "asdcAddress": "localhost",
+ "messageBusAddress": [
+ "a.com",
+ "b.com",
+ "c.com"
+ ],
+ "user": "tbdsdc-1480",
+ "password": "tbdsdc-1480",
+ "pollingInterval":20,
+ "pollingTimeout":30,
+ "consumerId": "policy-id",
+ "artifactTypes": [
+ "TOSCA_CSAR",
+ "HEAT"
+ ],
+ "consumerGroup": "policy-group",
+ "environmentName": "environmentName",
+ "keystorePath": "null",
+ "keystorePassword": "null",
+ "activeserverTlsAuth": false,
+ "isFilterinEmptyResources": true,
+ "isUseHttpsWithDmaap": false
+}
+
diff --git a/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json b/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json
new file mode 100644
index 00000000..ababea48
--- /dev/null
+++ b/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json
@@ -0,0 +1,26 @@
+{
+ "name" : "parameterConfig1",
+ "asdcAddress": "localhost",
+ "messageBusAddress": [
+ "a.com",
+ "b.com",
+ "c.com"
+ ],
+ "user": "tbdsdc-1480",
+ "password": "tbdsdc-1480",
+ "pollingInterval":-1,
+ "pollingTimeout":-2,
+ "consumerId": "policy-id",
+ "artifactTypes": [
+ "TOSCA_CSAR",
+ "HEAT"
+ ],
+ "consumerGroup": "policy-group",
+ "environmentName": "environmentName",
+ "keystorePath": "null",
+ "keystorePassword": "null",
+ "activeserverTlsAuth": false,
+ "isFilterinEmptyResources": true,
+ "isUseHttpsWithDmaap": false
+}
+