From ef9c71ab1efce6e60eb5d8c89cf09c5182c48730 Mon Sep 17 00:00:00 2001 From: liboNet Date: Fri, 19 Apr 2019 02:10:02 +0800 Subject: enable merge sdc client part into Distribution release image . update the defaultConfig.json file to include sdc client configuration . update the DistriubtionActivator to enable parse sdc client and k8s plugin . rename xacml pdp to k8s . fix distribution run-time issue Change-Id: If267f5c256b19ebdbe7b7b2869afcf2f570e4b24 Issue-ID: MULTICLOUD-576 Signed-off-by: liboNet --- .../forwarding/k8s/K8sArtifactForwarder.java | 205 +++++++++++++ .../k8s/K8sArtifactForwarderParameterGroup.java | 181 +++++++++++ .../xacml/pdp/XacmlPdpArtifactForwarder.java | 205 ------------- .../XacmlPdpArtifactForwarderParameterGroup.java | 181 ----------- .../K8sArtifactForwarderParameterGroupTest.java | 98 ++++++ .../k8s/engine/K8sArtifactForwarderTest.java | 333 +++++++++++++++++++++ .../k8s/testclasses/DummyReceptionHandler.java | 37 +++ ...acmlPdpArtifactForwarderParameterGroupTest.java | 98 ------ .../pdp/engine/XacmlPdpArtifactForwarderTest.java | 333 --------------------- .../pdp/testclasses/DummyReceptionHandler.java | 37 --- 10 files changed, 854 insertions(+), 854 deletions(-) create mode 100644 artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarder.java create mode 100644 artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarderParameterGroup.java delete mode 100644 artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarder.java delete mode 100644 artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarderParameterGroup.java create mode 100644 artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderParameterGroupTest.java create mode 100644 artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderTest.java create mode 100644 artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/testclasses/DummyReceptionHandler.java delete mode 100644 artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderParameterGroupTest.java delete mode 100644 artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderTest.java delete mode 100644 artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java (limited to 'artifactbroker/plugins') diff --git a/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarder.java b/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarder.java new file mode 100644 index 0000000..d920907 --- /dev/null +++ b/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarder.java @@ -0,0 +1,205 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. 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.forwarding.k8s; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + + +import org.apache.http.HttpEntity; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.FileEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import org.onap.policy.common.logging.flexlogger.FlexLogger; +import org.onap.policy.common.logging.flexlogger.Logger; +import org.onap.policy.common.parameters.ParameterService; +import org.onap.policy.distribution.forwarding.ArtifactForwarder; +import org.onap.policy.distribution.model.CloudArtifact; +import org.onap.policy.distribution.model.PolicyInput; +import org.onap.policy.distribution.model.VfModuleModel; +import org.onap.sdc.api.notification.IArtifactInfo; + + +/** + * Forwards policies to the XACML PDP. + */ +public class K8sArtifactForwarder implements ArtifactForwarder { + + private static final Logger LOGGER = FlexLogger.getLogger(K8sArtifactForwarder.class); + private static final String BASE_PATH = "http://localhost:8081/v1/rb/definition"; + private static final String CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT = "CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"; + private Map artifactMap; + + private K8sArtifactForwarderParameterGroup configurationParameters = null; + + + + @Override + public void forward(PolicyInput policyInput) { + if (policyInput instanceof CloudArtifact) { + System.out.println("get a CloudArtifact !"); + CloudArtifact cloudArtifact = (CloudArtifact) policyInput; + artifactMap = cloudArtifact.getArtifactTypeMap(); + System.out.println("the artifactMap = " + artifactMap); + ArrayList vfModuleModels = cloudArtifact.getVfModulePayload(); + System.out.println("the size of vfModule = " + vfModuleModels.size()); + + for (VfModuleModel vfModule : vfModuleModels) { + forwardAndUpload(vfModule); + } + } else { + System.out.println("NOT a CloudArtifact type !"); + return; + } + } + + private void forwardAndUpload(VfModuleModel vfModule) { + + System.out.println("before create type !"); + boolean definitionCreated = createDefinition(vfModule); + System.out.println(" after create type !"); + if (definitionCreated) { + uploadArtifact(vfModule); + } + } + + private boolean createDefinition(VfModuleModel vfModule) { + try { + HttpPost httpPost = new HttpPost(BASE_PATH); + httpPost.addHeader("Accept", "application/json"); + httpPost.addHeader("Content-Type", "application/json"); + + Gson gson = new GsonBuilder().enableComplexMapKeySerialization() + .create(); + + Map map = new LinkedHashMap(); + map.put("rb-name", vfModule.getVfModuleModelName()); + map.put("rb-version", vfModule.getVfModuleModelVersion()); + map.put("descritpion",vfModule.getVfModuleModelDescription()); + Map labelMap = new LinkedHashMap(); + labelMap.put("vnf_customization_uuid",vfModule.getVfModuleModelCustomizationUUID()); + map.put("labels", labelMap); + String json = gson.toJson(map); + + StringEntity entity = new StringEntity(json); + httpPost.setEntity(entity); + return invokeHttpPost("definition", httpPost); + } catch (Exception e) { + System.out.println("create definition error"); + return false; + } + + } + + private boolean uploadArtifact(VfModuleModel vfModule) { + String url = BASE_PATH + "/" + vfModule.getVfModuleModelName() + "/" + + vfModule.getVfModuleModelVersion() + "/content"; + HttpPost httpPost = new HttpPost(url); + httpPost.addHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8"); + + List artifacts = vfModule.getArtifacts(); + System.out.println("artifacts = " + artifacts); + + String cloudUuid = null; + IArtifactInfo cloudArtifact = null; + boolean found = false; + + for (String artifact: artifacts) { + if ( artifactMap.get(artifact) != null + && artifactMap.get(artifact).getArtifactType().equals("CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT")) { + cloudArtifact = artifactMap.get(artifact); + cloudUuid = cloudArtifact.getArtifactUUID(); + found = true; + break; + } + } + + if ( found == false ) { + System.out.println(" meets error , no CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT type found "); + return false; + } + String cloudArtifactPath = "/data/" + vfModule.getVfModuleModelCustomizationUUID() + + "/" + cloudArtifact.getArtifactName(); + File file = new File(cloudArtifactPath); + FileEntity entity = new FileEntity(file); + httpPost.setEntity(entity); + + return invokeHttpPost("uploading", httpPost); + } + + + @Override + public void configure(String parameterGroupName) { + configurationParameters = ParameterService.get(parameterGroupName); + } + + protected static boolean invokeHttpPost(String action, HttpPost httpPost) { + System.out.println("httpPost begin!"); + boolean ret = false; + + String errorMsg; + label1: { + try ( CloseableHttpClient httpClient = HttpClients.createDefault() ) { + System.out.println("result1") ; + CloseableHttpResponse closeableHttpResponse = httpClient.execute(httpPost); + System.out.println("result2") ; + String result = EntityUtils.toString(closeableHttpResponse.getEntity()); + System.out.println("result = {}" + result); + System.out.println("status = {}" + closeableHttpResponse.getStatusLine().getStatusCode()); + if ( closeableHttpResponse.getStatusLine().getStatusCode() != 200 ) { + System.out.println("exception: ret= " + closeableHttpResponse.getStatusLine().getStatusCode()); + } else { + ret = true; + } + + closeableHttpResponse.close(); + break label1; + } catch (IOException var) { + errorMsg = action + ":httpPostWithJSON connect faild"; + System.out.println("exception: POST_CONNECT_FAILD : {}" + errorMsg); + } + } + + System.out.println("httpPost end!"); + return ret; + } + +} diff --git a/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarderParameterGroup.java b/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarderParameterGroup.java new file mode 100644 index 0000000..42e8d5a --- /dev/null +++ b/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/k8s/K8sArtifactForwarderParameterGroup.java @@ -0,0 +1,181 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. 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.forwarding.k8s; + +import org.onap.policy.common.parameters.GroupValidationResult; +import org.onap.policy.common.parameters.ValidationStatus; +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.distribution.main.parameters.ArtifactForwarderConfigurationParameterGroup; + +/** + * Holds the parameters for the{@link K8sArtifactForwarder}. + */ +public class K8sArtifactForwarderParameterGroup extends ArtifactForwarderConfigurationParameterGroup { + public static final String POLICY_FORWARDER_PLUGIN_CLASS = K8sArtifactForwarder.class.getCanonicalName(); + + private boolean useHttps; + private String hostname; + private int port; + private String userName; + private String password; + private String clientAuth; + private boolean isManaged; + private String pdpGroup; + + /** + * Construct an instance. + * + * @param builder the builder create the instance from + */ + private K8sArtifactForwarderParameterGroup(final K8sArtifactForwarderParameterGroupBuilder builder) { + this.useHttps = builder.useHttps; + this.hostname = builder.hostname; + this.port = builder.port; + this.userName = builder.userName; + this.password = builder.password; + this.clientAuth = builder.clientAuth; + this.isManaged = builder.isManaged; + this.pdpGroup = builder.pdpGroup; + } + + 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 String getClientAuth() { + return clientAuth; + } + + public boolean isManaged() { + return isManaged; + } + + public String getPdpGroup() { + return pdpGroup; + } + + /** + * Builder for K8sArtifactForwarderParameterGroup. + */ + public static class K8sArtifactForwarderParameterGroupBuilder { + private boolean useHttps = false; + private String hostname; + private int port; + private String userName; + private String password; + private String clientAuth; + private boolean isManaged = true; + private String pdpGroup; + + public K8sArtifactForwarderParameterGroupBuilder setUseHttps(final boolean useHttps) { + this.useHttps = useHttps; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setHostname(final String hostname) { + this.hostname = hostname; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setPort(final int port) { + this.port = port; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setUserName(final String userName) { + this.userName = userName; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setPassword(final String password) { + this.password = password; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setClientAuth(final String clientAuth) { + this.clientAuth = clientAuth; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setIsManaged(final boolean isManaged) { + this.isManaged = isManaged; + return this; + } + + public K8sArtifactForwarderParameterGroupBuilder setPdpGroup(final String pdpGroup) { + this.pdpGroup = pdpGroup; + return this; + } + + /** + * Creates a new XacmlPapServletArtifactForwarderParameterGroup instance. + */ + public K8sArtifactForwarderParameterGroup build() { + return new K8sArtifactForwarderParameterGroup(this); + } + } + + @Override + public GroupValidationResult validate() { + final GroupValidationResult validationResult = new GroupValidationResult(this); + if (!ParameterValidationUtils.validateStringParameter(hostname)) { + validationResult.setResult("hostname", ValidationStatus.INVALID, + "must be a non-blank string containing hostname/ipaddress"); + } + if (!ParameterValidationUtils.validateIntParameter(port)) { + validationResult.setResult("port", ValidationStatus.INVALID, "must be a positive integer containing port"); + } + if (!ParameterValidationUtils.validateStringParameter(userName)) { + validationResult.setResult("userName", ValidationStatus.INVALID, + "must be a non-blank string containing userName"); + } + if (!ParameterValidationUtils.validateStringParameter(password)) { + validationResult.setResult("password", ValidationStatus.INVALID, + "must be a non-blank string containing password"); + } + if (!ParameterValidationUtils.validateStringParameter(clientAuth)) { + validationResult.setResult("clientAuth", ValidationStatus.INVALID, + "must be a non-blank string containing clientAuth"); + } + if (!ParameterValidationUtils.validateStringParameter(pdpGroup)) { + validationResult.setResult("pdpGroup", ValidationStatus.INVALID, + "must be a non-blank string containing pdpGroup"); + } + return validationResult; + } + +} diff --git a/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarder.java b/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarder.java deleted file mode 100644 index 4179fc7..0000000 --- a/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarder.java +++ /dev/null @@ -1,205 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. 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.forwarding.xacml.pdp; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - - -import org.apache.http.HttpEntity; -import org.apache.http.NameValuePair; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.FileEntity; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.util.EntityUtils; - -import org.onap.policy.common.logging.flexlogger.FlexLogger; -import org.onap.policy.common.logging.flexlogger.Logger; -import org.onap.policy.common.parameters.ParameterService; -import org.onap.policy.distribution.forwarding.ArtifactForwarder; -import org.onap.policy.distribution.model.CloudArtifact; -import org.onap.policy.distribution.model.PolicyInput; -import org.onap.policy.distribution.model.VfModuleModel; -import org.onap.sdc.api.notification.IArtifactInfo; - - -/** - * Forwards policies to the XACML PDP. - */ -public class XacmlPdpArtifactForwarder implements ArtifactForwarder { - - private static final Logger LOGGER = FlexLogger.getLogger(XacmlPdpArtifactForwarder.class); - private static final String BASE_PATH = "http://localhost:8081/v1/rb/definition"; - private static final String CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT = "CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"; - private Map artifactMap; - - private XacmlPdpArtifactForwarderParameterGroup configurationParameters = null; - - - - @Override - public void forward(PolicyInput policyInput) { - if (policyInput instanceof CloudArtifact) { - System.out.println("get a CloudArtifact !"); - CloudArtifact cloudArtifact = (CloudArtifact) policyInput; - artifactMap = cloudArtifact.getArtifactTypeMap(); - System.out.println("the artifactMap = " + artifactMap); - ArrayList vfModuleModels = cloudArtifact.getVfModulePayload(); - System.out.println("the size of vfModule = " + vfModuleModels.size()); - - for (VfModuleModel vfModule : vfModuleModels) { - forwardAndUpload(vfModule); - } - } else { - System.out.println("NOT a CloudArtifact type !"); - return; - } - } - - private void forwardAndUpload(VfModuleModel vfModule) { - - System.out.println("before create type !"); - boolean definitionCreated = createDefinition(vfModule); - System.out.println(" after create type !"); - if (definitionCreated) { - uploadArtifact(vfModule); - } - } - - private boolean createDefinition(VfModuleModel vfModule) { - try { - HttpPost httpPost = new HttpPost(BASE_PATH); - httpPost.addHeader("Accept", "application/json"); - httpPost.addHeader("Content-Type", "application/json"); - - Gson gson = new GsonBuilder().enableComplexMapKeySerialization() - .create(); - - Map map = new LinkedHashMap(); - map.put("rb-name", vfModule.getVfModuleModelName()); - map.put("rb-version", vfModule.getVfModuleModelVersion()); - map.put("descritpion",vfModule.getVfModuleModelDescription()); - Map labelMap = new LinkedHashMap(); - labelMap.put("vnf_customization_uuid",vfModule.getVfModuleModelCustomizationUUID()); - map.put("labels", labelMap); - String json = gson.toJson(map); - - StringEntity entity = new StringEntity(json); - httpPost.setEntity(entity); - return invokeHttpPost("definition", httpPost); - } catch (Exception e) { - System.out.println("create definition error"); - return false; - } - - } - - private boolean uploadArtifact(VfModuleModel vfModule) { - String url = BASE_PATH + "/" + vfModule.getVfModuleModelName() + "/" - + vfModule.getVfModuleModelVersion() + "/content"; - HttpPost httpPost = new HttpPost(url); - httpPost.addHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8"); - - List artifacts = vfModule.getArtifacts(); - System.out.println("artifacts = " + artifacts); - - String cloudUuid = null; - IArtifactInfo cloudArtifact = null; - boolean found = false; - - for (String artifact: artifacts) { - if ( artifactMap.get(artifact) != null - && artifactMap.get(artifact).getArtifactType().equals("CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT")) { - cloudArtifact = artifactMap.get(artifact); - cloudUuid = cloudArtifact.getArtifactUUID(); - found = true; - break; - } - } - - if ( found == false ) { - System.out.println(" meets error , no CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT type found "); - return false; - } - String cloudArtifactPath = "/data/" + vfModule.getVfModuleModelCustomizationUUID() - + "/" + cloudArtifact.getArtifactName(); - File file = new File(cloudArtifactPath); - FileEntity entity = new FileEntity(file); - httpPost.setEntity(entity); - - return invokeHttpPost("uploading", httpPost); - } - - - @Override - public void configure(String parameterGroupName) { - configurationParameters = ParameterService.get(parameterGroupName); - } - - protected static boolean invokeHttpPost(String action, HttpPost httpPost) { - System.out.println("httpPost begin!"); - boolean ret = false; - - String errorMsg; - label1: { - try ( CloseableHttpClient httpClient = HttpClients.createDefault() ) { - System.out.println("result1") ; - CloseableHttpResponse closeableHttpResponse = httpClient.execute(httpPost); - System.out.println("result2") ; - String result = EntityUtils.toString(closeableHttpResponse.getEntity()); - System.out.println("result = {}" + result); - System.out.println("status = {}" + closeableHttpResponse.getStatusLine().getStatusCode()); - if ( closeableHttpResponse.getStatusLine().getStatusCode() != 200 ) { - System.out.println("exception: ret= " + closeableHttpResponse.getStatusLine().getStatusCode()); - } else { - ret = true; - } - - closeableHttpResponse.close(); - break label1; - } catch (IOException var) { - errorMsg = action + ":httpPostWithJSON connect faild"; - System.out.println("exception: POST_CONNECT_FAILD : {}" + errorMsg); - } - } - - System.out.println("httpPost end!"); - return ret; - } - -} diff --git a/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarderParameterGroup.java b/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarderParameterGroup.java deleted file mode 100644 index d04bb3c..0000000 --- a/artifactbroker/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpArtifactForwarderParameterGroup.java +++ /dev/null @@ -1,181 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. 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.forwarding.xacml.pdp; - -import org.onap.policy.common.parameters.GroupValidationResult; -import org.onap.policy.common.parameters.ValidationStatus; -import org.onap.policy.common.utils.validation.ParameterValidationUtils; -import org.onap.policy.distribution.main.parameters.ArtifactForwarderConfigurationParameterGroup; - -/** - * Holds the parameters for the{@link XacmlPdpArtifactForwarder}. - */ -public class XacmlPdpArtifactForwarderParameterGroup extends ArtifactForwarderConfigurationParameterGroup { - public static final String POLICY_FORWARDER_PLUGIN_CLASS = XacmlPdpArtifactForwarder.class.getCanonicalName(); - - private boolean useHttps; - private String hostname; - private int port; - private String userName; - private String password; - private String clientAuth; - private boolean isManaged; - private String pdpGroup; - - /** - * Construct an instance. - * - * @param builder the builder create the instance from - */ - private XacmlPdpArtifactForwarderParameterGroup(final XacmlPdpArtifactForwarderParameterGroupBuilder builder) { - this.useHttps = builder.useHttps; - this.hostname = builder.hostname; - this.port = builder.port; - this.userName = builder.userName; - this.password = builder.password; - this.clientAuth = builder.clientAuth; - this.isManaged = builder.isManaged; - this.pdpGroup = builder.pdpGroup; - } - - 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 String getClientAuth() { - return clientAuth; - } - - public boolean isManaged() { - return isManaged; - } - - public String getPdpGroup() { - return pdpGroup; - } - - /** - * Builder for XacmlPdpArtifactForwarderParameterGroup. - */ - public static class XacmlPdpArtifactForwarderParameterGroupBuilder { - private boolean useHttps = false; - private String hostname; - private int port; - private String userName; - private String password; - private String clientAuth; - private boolean isManaged = true; - private String pdpGroup; - - public XacmlPdpArtifactForwarderParameterGroupBuilder setUseHttps(final boolean useHttps) { - this.useHttps = useHttps; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setHostname(final String hostname) { - this.hostname = hostname; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setPort(final int port) { - this.port = port; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setUserName(final String userName) { - this.userName = userName; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setPassword(final String password) { - this.password = password; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setClientAuth(final String clientAuth) { - this.clientAuth = clientAuth; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setIsManaged(final boolean isManaged) { - this.isManaged = isManaged; - return this; - } - - public XacmlPdpArtifactForwarderParameterGroupBuilder setPdpGroup(final String pdpGroup) { - this.pdpGroup = pdpGroup; - return this; - } - - /** - * Creates a new XacmlPapServletArtifactForwarderParameterGroup instance. - */ - public XacmlPdpArtifactForwarderParameterGroup build() { - return new XacmlPdpArtifactForwarderParameterGroup(this); - } - } - - @Override - public GroupValidationResult validate() { - final GroupValidationResult validationResult = new GroupValidationResult(this); - if (!ParameterValidationUtils.validateStringParameter(hostname)) { - validationResult.setResult("hostname", ValidationStatus.INVALID, - "must be a non-blank string containing hostname/ipaddress"); - } - if (!ParameterValidationUtils.validateIntParameter(port)) { - validationResult.setResult("port", ValidationStatus.INVALID, "must be a positive integer containing port"); - } - if (!ParameterValidationUtils.validateStringParameter(userName)) { - validationResult.setResult("userName", ValidationStatus.INVALID, - "must be a non-blank string containing userName"); - } - if (!ParameterValidationUtils.validateStringParameter(password)) { - validationResult.setResult("password", ValidationStatus.INVALID, - "must be a non-blank string containing password"); - } - if (!ParameterValidationUtils.validateStringParameter(clientAuth)) { - validationResult.setResult("clientAuth", ValidationStatus.INVALID, - "must be a non-blank string containing clientAuth"); - } - if (!ParameterValidationUtils.validateStringParameter(pdpGroup)) { - validationResult.setResult("pdpGroup", ValidationStatus.INVALID, - "must be a non-blank string containing pdpGroup"); - } - return validationResult; - } - -} diff --git a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderParameterGroupTest.java b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderParameterGroupTest.java new file mode 100644 index 0000000..b3525cc --- /dev/null +++ b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderParameterGroupTest.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. 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.forwarding.k8s.engine; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.onap.policy.common.parameters.ValidationStatus; +import org.onap.policy.distribution.forwarding.k8s.K8sArtifactForwarderParameterGroup; +import org.onap.policy.distribution.forwarding.k8s.K8sArtifactForwarderParameterGroup.K8sArtifactForwarderParameterGroupBuilder; + +public class K8sArtifactForwarderParameterGroupTest { + + @Test + public void testBuilderAndGetters() { + K8sArtifactForwarderParameterGroupBuilder builder = + new K8sArtifactForwarderParameterGroupBuilder(); + K8sArtifactForwarderParameterGroup configurationParameters = + builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("myUser") + .setPassword("myPassword").setClientAuth("myClientAuth").setIsManaged(false).build(); + + assertTrue(configurationParameters.isUseHttps()); + assertEquals("10.10.10.10", configurationParameters.getHostname()); + assertEquals(1234, configurationParameters.getPort()); + assertEquals("myUser", configurationParameters.getUserName()); + assertEquals("myPassword", configurationParameters.getPassword()); + assertEquals("myClientAuth", configurationParameters.getClientAuth()); + assertFalse(configurationParameters.isManaged()); + } + + @Test + public void testInvalidHostName() { + K8sArtifactForwarderParameterGroupBuilder builder = + new K8sArtifactForwarderParameterGroupBuilder(); + K8sArtifactForwarderParameterGroup configurationParameters = builder.setUseHttps(true).setHostname("") + .setPort(1234).setUserName("myUser").setPassword("myPassword").setIsManaged(false).build(); + configurationParameters.setName("myConfiguration"); + + assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); + } + + @Test + public void testInvalidPort() { + K8sArtifactForwarderParameterGroupBuilder builder = + new K8sArtifactForwarderParameterGroupBuilder(); + K8sArtifactForwarderParameterGroup configurationParameters = + builder.setUseHttps(true).setHostname("10.10.10.10").setPort(-1234).setUserName("myUser") + .setPassword("myPassword").setIsManaged(false).build(); + configurationParameters.setName("myConfiguration"); + + assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); + } + + @Test + public void testInvalidUserName() { + K8sArtifactForwarderParameterGroupBuilder builder = + new K8sArtifactForwarderParameterGroupBuilder(); + K8sArtifactForwarderParameterGroup configurationParameters = + builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("") + .setPassword("myPassword").setIsManaged(false).build(); + configurationParameters.setName("myConfiguration"); + + assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); + } + + @Test + public void testInvalidPassword() { + K8sArtifactForwarderParameterGroupBuilder builder = + new K8sArtifactForwarderParameterGroupBuilder(); + K8sArtifactForwarderParameterGroup configurationParameters = + builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("myUser").setPassword("") + .setIsManaged(false).build(); + configurationParameters.setName("myConfiguration"); + + assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); + } + +} diff --git a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderTest.java b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderTest.java new file mode 100644 index 0000000..58c9c69 --- /dev/null +++ b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/engine/K8sArtifactForwarderTest.java @@ -0,0 +1,333 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. 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.forwarding.k8.engine; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.argThat; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.lang.reflect.Type; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import javax.ws.rs.client.Entity; +import javax.ws.rs.core.Response; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.HttpVersion; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.message.BasicStatusLine; +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.junit.BeforeClass; +import org.junit.Test; + +import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; +import org.onap.policy.common.parameters.ParameterGroup; +import org.onap.policy.common.parameters.ParameterService; +import org.onap.policy.distribution.forwarding.k8s.K8sArtifactForwarder; +import org.onap.policy.distribution.forwarding.k8s.K8sArtifactForwarderParameterGroup.K8sArtifactForwarderParameterGroupBuilder; +import org.onap.policy.distribution.main.PolicyDistributionException; +import org.onap.policy.distribution.model.CloudArtifact; +import org.onap.policy.distribution.model.GsonUtil; +import org.onap.policy.distribution.model.Policy; +import org.onap.policy.distribution.model.VfModuleModel; + +import org.onap.sdc.api.notification.IArtifactInfo; + +public class K8sArtifactForwarderTest { + + private static final BusTopicParams BUS_TOPIC_PARAMS = BusTopicParams.builder().useHttps(false).hostname("myHost") + .port(1234).userName("myUser").password("myPassword").managed(true).build(); + private static final String CLIENT_AUTH = "ClientAuth"; + private static final String CLIENT_AUTH_VALUE = "myClientAuth"; + private static final String PDP_GROUP_VALUE = "myPdpGroup"; + private HashMap headers = new HashMap<>(); + private BusTopicParamsMatcher matcher = new BusTopicParamsMatcher(BUS_TOPIC_PARAMS); + + /** + * Set up. + */ + @BeforeClass + public static void setUp() { + ParameterGroup parameterGroup = new K8sArtifactForwarderParameterGroupBuilder() + .setUseHttps(BUS_TOPIC_PARAMS.isUseHttps()).setHostname(BUS_TOPIC_PARAMS.getHostname()) + .setPort(BUS_TOPIC_PARAMS.getPort()).setUserName(BUS_TOPIC_PARAMS.getUserName()) + .setPassword(BUS_TOPIC_PARAMS.getPassword()).setClientAuth(CLIENT_AUTH_VALUE) + .setIsManaged(BUS_TOPIC_PARAMS.isManaged()).setPdpGroup(PDP_GROUP_VALUE).build(); + parameterGroup.setName("xacmlPdpConfiguration"); + ParameterService.register(parameterGroup); + } + + @Test + public void testForwardPolicy() + throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException,SecurityException, + IllegalArgumentException, IllegalAccessException, IOException, ClassNotFoundException { + + CloseableHttpClient httpClientMock = mock(CloseableHttpClient.class); + headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE); + //when(httpClientMock.execute(any(HttpPost.class))).thenReturn(Response.ok().build()); + //when(httpClientMock.execute(anyObject())).thenReturn(CloseableHttpResponse.ok().build()); + CloseableHttpResponse response = mock(CloseableHttpResponse.class); + HttpEntity entity = mock(HttpEntity.class); + when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "FINE!")); + //when(entity.getContent()).thenReturn(getClass().getClassLoader().getResourceAsStream("result.txt")); + //when(entity.getContent()).thenReturn("result of content"); + when(entity.getContent()).thenReturn(new ByteArrayInputStream( "{foo : 'bar'}".getBytes())); + when(response.getEntity()).thenReturn(entity); + + when(httpClientMock.execute(anyObject())).thenReturn(response); + + K8sArtifactForwarder forwarder = new K8sArtifactForwarder(); + forwarder.configure("xacmlPdpConfiguration"); + + + ArrayList vfModuleModels = new ArrayList(); + try { + // Read the parameters from JSON using Gson + + String data = new String(Files.readAllBytes(Paths.get("src/test/resource/modules.json"))); + Type type = new TypeToken>() {}.getType(); + Gson gson = new Gson(); + vfModuleModels = gson.fromJson(data, type); + + //vfModuleModels= GsonUtil.parseJsonArrayWithGson(data, VfModuleModel.class); + assertEquals(4, vfModuleModels.size()); + } catch (final Exception e) { + fail("test should not thrown an exception here: " + e.getMessage()); + } + + HashMap artifactHashMap = new HashMap<>(); + artifactHashMap.put("4d4a37ef-6a1f-4cb2-b3c9-b380a5940431",new ArtifactInfoImpl()); + artifactHashMap.put("0a38b7ef-93b9-4d48-856d-efb56d53aab8",new ArtifactInfoImpl()); + + CloudArtifact cloudArtifact = new CloudArtifact(vfModuleModels,artifactHashMap); + + forwarder.forward(cloudArtifact); + + } + + class BusTopicParamsMatcher extends BaseMatcher { + + private BusTopicParams busTopicParams; + + BusTopicParamsMatcher(final BusTopicParams busTopicParams) { + this.busTopicParams = busTopicParams; + } + + @Override + public boolean matches(Object arg0) { + if (arg0 instanceof BusTopicParams) { + BusTopicParams toCompareTo = (BusTopicParams) arg0; + return toCompareTo.isUseHttps() == busTopicParams.isUseHttps() + && toCompareTo.getHostname().equals(busTopicParams.getHostname()) + && toCompareTo.getPort() == busTopicParams.getPort() + && toCompareTo.getUserName().equals(busTopicParams.getUserName()) + && toCompareTo.getPassword().equals(busTopicParams.getPassword()) + && toCompareTo.isManaged() == busTopicParams.isManaged(); + } + return false; + } + + @Override + public void describeTo(Description arg0) {} + } + + class ArtifactInfoImpl implements IArtifactInfo { + + private String artifactName; + private String artifactType; + private String artifactURL; + private String artifactChecksum; + private String artifactDescription; + private Integer artifactTimeout; + private String artifactVersion; + private String artifactUUID; + private String generatedFromUUID; + private IArtifactInfo generatedArtifact; + private List relatedArtifacts; + private List relatedArtifactsInfo; + + ArtifactInfoImpl(){} + + private ArtifactInfoImpl(IArtifactInfo iArtifactInfo){ + artifactName = iArtifactInfo.getArtifactName(); + artifactType = iArtifactInfo.getArtifactType(); + artifactURL = iArtifactInfo.getArtifactURL(); + artifactChecksum = iArtifactInfo.getArtifactChecksum(); + artifactDescription = iArtifactInfo.getArtifactDescription(); + artifactTimeout = iArtifactInfo.getArtifactTimeout(); + artifactVersion = iArtifactInfo.getArtifactVersion(); + artifactUUID = iArtifactInfo.getArtifactUUID(); + generatedArtifact = iArtifactInfo.getGeneratedArtifact(); + relatedArtifactsInfo = iArtifactInfo.getRelatedArtifacts(); + relatedArtifacts = fillRelatedArtifactsUUID(relatedArtifactsInfo); + + } + + + private List fillRelatedArtifactsUUID(List relatedArtifactsInfo) { + List relatedArtifactsUUID = null; + if ( relatedArtifactsInfo != null && !relatedArtifactsInfo.isEmpty()) { + relatedArtifactsUUID = new ArrayList<>(); + for (IArtifactInfo curr: relatedArtifactsInfo) { + relatedArtifactsUUID.add(curr.getArtifactUUID()); + } + } + return relatedArtifactsUUID; + } + + public String getArtifactName() { + return artifactName; + } + + public void setArtifactName(String artifactName) { + this.artifactName = artifactName; + } + + public String getArtifactType() { + return artifactType; + } + + public void setArtifactType(String artifactType) { + this.artifactType = artifactType; + } + + public String getArtifactURL() { + return artifactURL; + } + + public void setArtifactURL(String artifactURL) { + this.artifactURL = artifactURL; + } + + public String getArtifactChecksum() { + return artifactChecksum; + } + + public void setArtifactChecksum(String artifactChecksum) { + this.artifactChecksum = artifactChecksum; + } + + public String getArtifactDescription() { + return artifactDescription; + } + + public void setArtifactDescription(String artifactDescription) { + this.artifactDescription = artifactDescription; + } + + public Integer getArtifactTimeout() { + return artifactTimeout; + } + + public void setArtifactTimeout(Integer artifactTimeout) { + this.artifactTimeout = artifactTimeout; + } + + @Override + public String toString() { + return "BaseArtifactInfoImpl [artifactName=" + artifactName + + ", artifactType=" + artifactType + ", artifactURL=" + + artifactURL + ", artifactChecksum=" + artifactChecksum + + ", artifactDescription=" + artifactDescription + + ", artifactVersion=" + artifactVersion + + ", artifactUUID=" + artifactUUID + + ", artifactTimeout=" + artifactTimeout + "]"; + } + + public String getArtifactVersion() { + return artifactVersion; + } + + public void setArtifactVersion(String artifactVersion) { + this.artifactVersion = artifactVersion; + } + + public String getArtifactUUID() { + return artifactUUID; + } + + public void setArtifactUUID(String artifactUUID) { + this.artifactUUID = artifactUUID; + } + + public String getGeneratedFromUUID() { + return generatedFromUUID; + } + + public void setGeneratedFromUUID(String generatedFromUUID) { + this.generatedFromUUID = generatedFromUUID; + } + + public IArtifactInfo getGeneratedArtifact() { + return generatedArtifact; + } + + public void setGeneratedArtifact(IArtifactInfo generatedArtifact) { + this.generatedArtifact = generatedArtifact; + } + + public List getRelatedArtifacts(){ + List temp = new ArrayList(); + if( relatedArtifactsInfo != null ){ + temp.addAll(relatedArtifactsInfo); + } + return temp; + } + + public void setRelatedArtifacts(List relatedArtifacts) { + this.relatedArtifacts = relatedArtifacts; + } + + public void setRelatedArtifactsInfo(List relatedArtifactsInfo) { + this.relatedArtifactsInfo = relatedArtifactsInfo; + } + + public List getRelatedArtifactsUUID(){ + return relatedArtifacts; + } + + } + + +} diff --git a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/testclasses/DummyReceptionHandler.java b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/testclasses/DummyReceptionHandler.java new file mode 100644 index 0000000..6996bfd --- /dev/null +++ b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/k8s/testclasses/DummyReceptionHandler.java @@ -0,0 +1,37 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. 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.forwarding.k8s.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() {} +} diff --git a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderParameterGroupTest.java b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderParameterGroupTest.java deleted file mode 100644 index d10ea62..0000000 --- a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderParameterGroupTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. 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.forwarding.xacml.pdp.engine; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; -import org.onap.policy.common.parameters.ValidationStatus; -import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpArtifactForwarderParameterGroup; -import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpArtifactForwarderParameterGroup.XacmlPdpArtifactForwarderParameterGroupBuilder; - -public class XacmlPdpArtifactForwarderParameterGroupTest { - - @Test - public void testBuilderAndGetters() { - XacmlPdpArtifactForwarderParameterGroupBuilder builder = - new XacmlPdpArtifactForwarderParameterGroupBuilder(); - XacmlPdpArtifactForwarderParameterGroup configurationParameters = - builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("myUser") - .setPassword("myPassword").setClientAuth("myClientAuth").setIsManaged(false).build(); - - assertTrue(configurationParameters.isUseHttps()); - assertEquals("10.10.10.10", configurationParameters.getHostname()); - assertEquals(1234, configurationParameters.getPort()); - assertEquals("myUser", configurationParameters.getUserName()); - assertEquals("myPassword", configurationParameters.getPassword()); - assertEquals("myClientAuth", configurationParameters.getClientAuth()); - assertFalse(configurationParameters.isManaged()); - } - - @Test - public void testInvalidHostName() { - XacmlPdpArtifactForwarderParameterGroupBuilder builder = - new XacmlPdpArtifactForwarderParameterGroupBuilder(); - XacmlPdpArtifactForwarderParameterGroup configurationParameters = builder.setUseHttps(true).setHostname("") - .setPort(1234).setUserName("myUser").setPassword("myPassword").setIsManaged(false).build(); - configurationParameters.setName("myConfiguration"); - - assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); - } - - @Test - public void testInvalidPort() { - XacmlPdpArtifactForwarderParameterGroupBuilder builder = - new XacmlPdpArtifactForwarderParameterGroupBuilder(); - XacmlPdpArtifactForwarderParameterGroup configurationParameters = - builder.setUseHttps(true).setHostname("10.10.10.10").setPort(-1234).setUserName("myUser") - .setPassword("myPassword").setIsManaged(false).build(); - configurationParameters.setName("myConfiguration"); - - assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); - } - - @Test - public void testInvalidUserName() { - XacmlPdpArtifactForwarderParameterGroupBuilder builder = - new XacmlPdpArtifactForwarderParameterGroupBuilder(); - XacmlPdpArtifactForwarderParameterGroup configurationParameters = - builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("") - .setPassword("myPassword").setIsManaged(false).build(); - configurationParameters.setName("myConfiguration"); - - assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); - } - - @Test - public void testInvalidPassword() { - XacmlPdpArtifactForwarderParameterGroupBuilder builder = - new XacmlPdpArtifactForwarderParameterGroupBuilder(); - XacmlPdpArtifactForwarderParameterGroup configurationParameters = - builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("myUser").setPassword("") - .setIsManaged(false).build(); - configurationParameters.setName("myConfiguration"); - - assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus()); - } - -} diff --git a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderTest.java b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderTest.java deleted file mode 100644 index bad34c5..0000000 --- a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpArtifactForwarderTest.java +++ /dev/null @@ -1,333 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. 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.forwarding.xacml.pdp.engine; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Matchers.argThat; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.lang.reflect.Type; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.message.BasicStatusLine; -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.junit.BeforeClass; -import org.junit.Test; - -import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; -import org.onap.policy.common.parameters.ParameterGroup; -import org.onap.policy.common.parameters.ParameterService; -import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpArtifactForwarder; -import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpArtifactForwarderParameterGroup.XacmlPdpArtifactForwarderParameterGroupBuilder; -import org.onap.policy.distribution.main.PolicyDistributionException; -import org.onap.policy.distribution.model.CloudArtifact; -import org.onap.policy.distribution.model.GsonUtil; -import org.onap.policy.distribution.model.Policy; -import org.onap.policy.distribution.model.VfModuleModel; - -import org.onap.sdc.api.notification.IArtifactInfo; - -public class XacmlPdpArtifactForwarderTest { - - private static final BusTopicParams BUS_TOPIC_PARAMS = BusTopicParams.builder().useHttps(false).hostname("myHost") - .port(1234).userName("myUser").password("myPassword").managed(true).build(); - private static final String CLIENT_AUTH = "ClientAuth"; - private static final String CLIENT_AUTH_VALUE = "myClientAuth"; - private static final String PDP_GROUP_VALUE = "myPdpGroup"; - private HashMap headers = new HashMap<>(); - private BusTopicParamsMatcher matcher = new BusTopicParamsMatcher(BUS_TOPIC_PARAMS); - - /** - * Set up. - */ - @BeforeClass - public static void setUp() { - ParameterGroup parameterGroup = new XacmlPdpArtifactForwarderParameterGroupBuilder() - .setUseHttps(BUS_TOPIC_PARAMS.isUseHttps()).setHostname(BUS_TOPIC_PARAMS.getHostname()) - .setPort(BUS_TOPIC_PARAMS.getPort()).setUserName(BUS_TOPIC_PARAMS.getUserName()) - .setPassword(BUS_TOPIC_PARAMS.getPassword()).setClientAuth(CLIENT_AUTH_VALUE) - .setIsManaged(BUS_TOPIC_PARAMS.isManaged()).setPdpGroup(PDP_GROUP_VALUE).build(); - parameterGroup.setName("xacmlPdpConfiguration"); - ParameterService.register(parameterGroup); - } - - @Test - public void testForwardPolicy() - throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException,SecurityException, - IllegalArgumentException, IllegalAccessException, IOException, ClassNotFoundException { - - CloseableHttpClient httpClientMock = mock(CloseableHttpClient.class); - headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE); - //when(httpClientMock.execute(any(HttpPost.class))).thenReturn(Response.ok().build()); - //when(httpClientMock.execute(anyObject())).thenReturn(CloseableHttpResponse.ok().build()); - CloseableHttpResponse response = mock(CloseableHttpResponse.class); - HttpEntity entity = mock(HttpEntity.class); - when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "FINE!")); - //when(entity.getContent()).thenReturn(getClass().getClassLoader().getResourceAsStream("result.txt")); - //when(entity.getContent()).thenReturn("result of content"); - when(entity.getContent()).thenReturn(new ByteArrayInputStream( "{foo : 'bar'}".getBytes())); - when(response.getEntity()).thenReturn(entity); - - when(httpClientMock.execute(anyObject())).thenReturn(response); - - XacmlPdpArtifactForwarder forwarder = new XacmlPdpArtifactForwarder(); - forwarder.configure("xacmlPdpConfiguration"); - - - ArrayList vfModuleModels = new ArrayList(); - try { - // Read the parameters from JSON using Gson - - String data = new String(Files.readAllBytes(Paths.get("src/test/resource/modules.json"))); - Type type = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - vfModuleModels = gson.fromJson(data, type); - - //vfModuleModels= GsonUtil.parseJsonArrayWithGson(data, VfModuleModel.class); - assertEquals(4, vfModuleModels.size()); - } catch (final Exception e) { - fail("test should not thrown an exception here: " + e.getMessage()); - } - - HashMap artifactHashMap = new HashMap<>(); - artifactHashMap.put("4d4a37ef-6a1f-4cb2-b3c9-b380a5940431",new ArtifactInfoImpl()); - artifactHashMap.put("0a38b7ef-93b9-4d48-856d-efb56d53aab8",new ArtifactInfoImpl()); - - CloudArtifact cloudArtifact = new CloudArtifact(vfModuleModels,artifactHashMap); - - forwarder.forward(cloudArtifact); - - } - - class BusTopicParamsMatcher extends BaseMatcher { - - private BusTopicParams busTopicParams; - - BusTopicParamsMatcher(final BusTopicParams busTopicParams) { - this.busTopicParams = busTopicParams; - } - - @Override - public boolean matches(Object arg0) { - if (arg0 instanceof BusTopicParams) { - BusTopicParams toCompareTo = (BusTopicParams) arg0; - return toCompareTo.isUseHttps() == busTopicParams.isUseHttps() - && toCompareTo.getHostname().equals(busTopicParams.getHostname()) - && toCompareTo.getPort() == busTopicParams.getPort() - && toCompareTo.getUserName().equals(busTopicParams.getUserName()) - && toCompareTo.getPassword().equals(busTopicParams.getPassword()) - && toCompareTo.isManaged() == busTopicParams.isManaged(); - } - return false; - } - - @Override - public void describeTo(Description arg0) {} - } - - class ArtifactInfoImpl implements IArtifactInfo { - - private String artifactName; - private String artifactType; - private String artifactURL; - private String artifactChecksum; - private String artifactDescription; - private Integer artifactTimeout; - private String artifactVersion; - private String artifactUUID; - private String generatedFromUUID; - private IArtifactInfo generatedArtifact; - private List relatedArtifacts; - private List relatedArtifactsInfo; - - ArtifactInfoImpl(){} - - private ArtifactInfoImpl(IArtifactInfo iArtifactInfo){ - artifactName = iArtifactInfo.getArtifactName(); - artifactType = iArtifactInfo.getArtifactType(); - artifactURL = iArtifactInfo.getArtifactURL(); - artifactChecksum = iArtifactInfo.getArtifactChecksum(); - artifactDescription = iArtifactInfo.getArtifactDescription(); - artifactTimeout = iArtifactInfo.getArtifactTimeout(); - artifactVersion = iArtifactInfo.getArtifactVersion(); - artifactUUID = iArtifactInfo.getArtifactUUID(); - generatedArtifact = iArtifactInfo.getGeneratedArtifact(); - relatedArtifactsInfo = iArtifactInfo.getRelatedArtifacts(); - relatedArtifacts = fillRelatedArtifactsUUID(relatedArtifactsInfo); - - } - - - private List fillRelatedArtifactsUUID(List relatedArtifactsInfo) { - List relatedArtifactsUUID = null; - if ( relatedArtifactsInfo != null && !relatedArtifactsInfo.isEmpty()) { - relatedArtifactsUUID = new ArrayList<>(); - for (IArtifactInfo curr: relatedArtifactsInfo) { - relatedArtifactsUUID.add(curr.getArtifactUUID()); - } - } - return relatedArtifactsUUID; - } - - public String getArtifactName() { - return artifactName; - } - - public void setArtifactName(String artifactName) { - this.artifactName = artifactName; - } - - public String getArtifactType() { - return artifactType; - } - - public void setArtifactType(String artifactType) { - this.artifactType = artifactType; - } - - public String getArtifactURL() { - return artifactURL; - } - - public void setArtifactURL(String artifactURL) { - this.artifactURL = artifactURL; - } - - public String getArtifactChecksum() { - return artifactChecksum; - } - - public void setArtifactChecksum(String artifactChecksum) { - this.artifactChecksum = artifactChecksum; - } - - public String getArtifactDescription() { - return artifactDescription; - } - - public void setArtifactDescription(String artifactDescription) { - this.artifactDescription = artifactDescription; - } - - public Integer getArtifactTimeout() { - return artifactTimeout; - } - - public void setArtifactTimeout(Integer artifactTimeout) { - this.artifactTimeout = artifactTimeout; - } - - @Override - public String toString() { - return "BaseArtifactInfoImpl [artifactName=" + artifactName - + ", artifactType=" + artifactType + ", artifactURL=" - + artifactURL + ", artifactChecksum=" + artifactChecksum - + ", artifactDescription=" + artifactDescription - + ", artifactVersion=" + artifactVersion - + ", artifactUUID=" + artifactUUID - + ", artifactTimeout=" + artifactTimeout + "]"; - } - - public String getArtifactVersion() { - return artifactVersion; - } - - public void setArtifactVersion(String artifactVersion) { - this.artifactVersion = artifactVersion; - } - - public String getArtifactUUID() { - return artifactUUID; - } - - public void setArtifactUUID(String artifactUUID) { - this.artifactUUID = artifactUUID; - } - - public String getGeneratedFromUUID() { - return generatedFromUUID; - } - - public void setGeneratedFromUUID(String generatedFromUUID) { - this.generatedFromUUID = generatedFromUUID; - } - - public IArtifactInfo getGeneratedArtifact() { - return generatedArtifact; - } - - public void setGeneratedArtifact(IArtifactInfo generatedArtifact) { - this.generatedArtifact = generatedArtifact; - } - - public List getRelatedArtifacts(){ - List temp = new ArrayList(); - if( relatedArtifactsInfo != null ){ - temp.addAll(relatedArtifactsInfo); - } - return temp; - } - - public void setRelatedArtifacts(List relatedArtifacts) { - this.relatedArtifacts = relatedArtifacts; - } - - public void setRelatedArtifactsInfo(List relatedArtifactsInfo) { - this.relatedArtifactsInfo = relatedArtifactsInfo; - } - - public List getRelatedArtifactsUUID(){ - return relatedArtifacts; - } - - } - - -} diff --git a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java b/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java deleted file mode 100644 index c093481..0000000 --- a/artifactbroker/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. 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.forwarding.xacml.pdp.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() {} -} -- cgit 1.2.3-korg