From b59b14d47b590ff94b7c98348c1617990d03c86f Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 19 Jul 2021 16:21:25 -0400 Subject: Use new RestClientParameters class in distribution Replaced LifecycleApiForwarderParameters with RestClientParameters. Also modified the code to get the HttpClient objects once. This requires changes to property files in CSITs and OOM: - rename "hostName" to "hostname" - rename "isHttps" to "useHttps" and move it inside the api & pap structures Issue-ID: POLICY-3456 Change-Id: I654c32c9b6628263a68d821e11c5a316e8b6e2cc Signed-off-by: Jim Hahn --- .../distribution/forwarding/PolicyForwarder.java | 5 ++- .../src/main/resources/etc/defaultConfig.json | 9 ++-- .../src/main/resources/etc/s3pConfig.json | 7 ++-- .../api/LifecycleApiForwarderParameters.java | 7 ++-- .../lifecycle/api/LifecycleApiParameters.java | 48 ---------------------- .../lifecycle/api/LifecycleApiPolicyForwarder.java | 21 +++++----- .../api/LifecycleApiForwarderParametersTest.java | 13 ++++-- .../LifecycleApiPolicyForwarderParameters.json | 9 ++-- ...fecycleApiPolicyForwarderParametersInvalid.json | 9 ++-- .../reception/handling/PluginHandler.java | 3 +- .../distribution/etc/defaultConfig.json | 7 ++-- 11 files changed, 53 insertions(+), 85 deletions(-) delete mode 100644 plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiParameters.java diff --git a/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java b/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java index 3059f2f0..e4fba0ae 100644 --- a/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java +++ b/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. 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. @@ -21,6 +22,7 @@ package org.onap.policy.distribution.forwarding; import java.util.Collection; +import org.onap.policy.common.endpoints.http.client.HttpClientConfigException; import org.onap.policy.models.tosca.authorative.concepts.ToscaEntity; /** @@ -40,8 +42,9 @@ public interface PolicyForwarder { * * @param parameterGroupName the name of the parameter group which contains the configuration * for the policy forwarder + * @throws HttpClientConfigException if an exception occurs */ - void configure(String parameterGroupName); + void configure(String parameterGroupName) throws HttpClientConfigException; /** * Forward the given policies. diff --git a/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json b/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json index f5fe30d5..36bec4c0 100644 --- a/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json +++ b/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json @@ -71,20 +71,21 @@ "parameterClassName": "org.onap.policy.distribution.forwarding.lifecycle.api.LifecycleApiForwarderParameters", "parameters": { "apiParameters": { - "hostName": "policy-api", + "hostname": "policy-api", "port": 6969, + "useHttps": true, "userName": "healthcheck", "password": "zb!XztG34" }, "papParameters": { - "hostName": "policy-pap", + "hostname": "policy-pap", "port": 6969, + "useHttps": true, "userName": "healthcheck", "password": "zb!XztG34" }, - "isHttps": true, "deployPolicies": true } } } -} \ No newline at end of file +} diff --git a/packages/policy-distribution-tarball/src/main/resources/etc/s3pConfig.json b/packages/policy-distribution-tarball/src/main/resources/etc/s3pConfig.json index 4589fddc..b2970e73 100644 --- a/packages/policy-distribution-tarball/src/main/resources/etc/s3pConfig.json +++ b/packages/policy-distribution-tarball/src/main/resources/etc/s3pConfig.json @@ -51,18 +51,19 @@ "parameterClassName": "org.onap.policy.distribution.forwarding.lifecycle.api.LifecycleApiForwarderParameters", "parameters": { "apiParameters": { - "hostName": "policy-api", + "hostname": "policy-api", "port": 6969, + "useHttps": true, "userName": "healthcheck", "password": "zb!XztG34" }, "papParameters": { - "hostName": "policy-pap", + "hostname": "policy-pap", "port": 6969, + "useHttps": true, "userName": "healthcheck", "password": "zb!XztG34" }, - "isHttps": true, "deployPolicies": true } } diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParameters.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParameters.java index c266a1ba..060be1ad 100644 --- a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParameters.java +++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParameters.java @@ -22,6 +22,7 @@ package org.onap.policy.distribution.forwarding.lifecycle.api; import lombok.Getter; +import org.onap.policy.common.endpoints.parameters.RestClientParameters; import org.onap.policy.common.parameters.annotations.NotBlank; import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.common.parameters.annotations.Valid; @@ -38,10 +39,8 @@ import org.onap.policy.distribution.main.parameters.PolicyForwarderConfiguration public class LifecycleApiForwarderParameters extends PolicyForwarderConfigurationParameterGroup { public static final String POLICY_FORWARDER_PLUGIN_CLASS = LifecycleApiPolicyForwarder.class.getName(); - private @Valid LifecycleApiParameters apiParameters; - private @Valid LifecycleApiParameters papParameters; - private boolean isHttps; - private boolean allowSelfSignedCerts; + private @Valid RestClientParameters apiParameters; + private @Valid RestClientParameters papParameters; private boolean deployPolicies = true; public LifecycleApiForwarderParameters() { diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiParameters.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiParameters.java deleted file mode 100644 index 46a7b082..00000000 --- a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiParameters.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * 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.lifecycle.api; - -import lombok.Getter; -import org.onap.policy.common.parameters.annotations.Min; -import org.onap.policy.common.parameters.annotations.NotBlank; -import org.onap.policy.common.parameters.annotations.NotNull; -import org.onap.policy.distribution.main.parameters.PolicyForwarderConfigurationParameterGroup; - -/** - * Holds the parameters for the {@link LifecycleApiPolicyForwarder}. - * - * @author Ram Krishna Verma (ram.krishna.verma@est.tech) - */ -@Getter -@NotNull -@NotBlank -public class LifecycleApiParameters extends PolicyForwarderConfigurationParameterGroup { - - private String hostName; - @Min(value = 1) - private int port; - private String userName; - private String password; - - public LifecycleApiParameters() { - super(LifecycleApiParameters.class.getSimpleName()); - } -} diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiPolicyForwarder.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiPolicyForwarder.java index b6f41fbf..2983c5ef 100644 --- a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiPolicyForwarder.java +++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiPolicyForwarder.java @@ -31,7 +31,6 @@ import javax.ws.rs.client.Entity; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; import org.onap.policy.common.endpoints.http.client.HttpClient; import org.onap.policy.common.endpoints.http.client.HttpClientConfigException; import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance; @@ -57,14 +56,23 @@ public class LifecycleApiPolicyForwarder implements PolicyForwarder { private static final String DEPLOY_POLICY_URI = "/policy/pap/v1/pdps/policies"; private static final String CREATE_POLICY_TYPE_URI = "/policy/api/v1/policytypes/"; private static final Logger LOGGER = LoggerFactory.getLogger(LifecycleApiPolicyForwarder.class); + private LifecycleApiForwarderParameters forwarderParameters; + private HttpClient apiClient; + private HttpClient papClient; /** * {@inheritDoc}. */ @Override - public void configure(final String parameterGroupName) { + public void configure(final String parameterGroupName) throws HttpClientConfigException { forwarderParameters = ParameterService.get(parameterGroupName); + + forwarderParameters.getApiParameters().setClientName("policy-api"); + forwarderParameters.getPapParameters().setClientName("policy-pap"); + + apiClient = HttpClientFactoryInstance.getClientFactory().build(forwarderParameters.getApiParameters()); + papClient = HttpClientFactoryInstance.getClientFactory().build(forwarderParameters.getPapParameters()); } /** @@ -156,14 +164,7 @@ public class LifecycleApiPolicyForwarder implements PolicyForwarder { } private HttpClient getHttpClient(final boolean wantApi) throws HttpClientConfigException { - final boolean https = forwarderParameters.isHttps(); - final LifecycleApiParameters parameters = - (wantApi ? forwarderParameters.getApiParameters() : forwarderParameters.getPapParameters()); - final BusTopicParams params = BusTopicParams.builder().clientName("Policy Distribution").useHttps(https) - .hostname(parameters.getHostName()).port(parameters.getPort()).userName(parameters.getUserName()) - .password(parameters.getPassword()).allowSelfSignedCerts(forwarderParameters.isAllowSelfSignedCerts()) - .build(); - return HttpClientFactoryInstance.getClientFactory().build(params); + return (wantApi ? apiClient : papClient); } } diff --git a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParametersTest.java b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParametersTest.java index 0f010bfc..50520d84 100644 --- a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParametersTest.java +++ b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/lifecycle/api/LifecycleApiForwarderParametersTest.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. 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. @@ -20,6 +21,7 @@ package org.onap.policy.distribution.forwarding.lifecycle.api; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -52,19 +54,24 @@ public class LifecycleApiForwarderParametersTest { "src/test/resources/parameters/LifecycleApiPolicyForwarderParameters.json", LifecycleApiForwarderParameters.class); + configurationParameters.getApiParameters().setClientName("api"); + configurationParameters.getPapParameters().setClientName("pap"); + assertEquals(LifecycleApiForwarderParameters.class.getSimpleName(), configurationParameters.getName()); - assertFalse(configurationParameters.isHttps()); assertTrue(configurationParameters.isDeployPolicies()); - assertEquals(POLICY_API_HOST_NAME, configurationParameters.getApiParameters().getHostName()); + assertEquals(POLICY_API_HOST_NAME, configurationParameters.getApiParameters().getHostname()); assertEquals(POLICY_API_PORT, configurationParameters.getApiParameters().getPort()); + assertFalse(configurationParameters.getApiParameters().isUseHttps()); assertEquals(POLICY_API_USER, configurationParameters.getApiParameters().getUserName()); assertEquals(POLICY_API_PASSWORD, configurationParameters.getApiParameters().getPassword()); - assertEquals(POLICY_PAP_HOST_NAME, configurationParameters.getPapParameters().getHostName()); + assertEquals(POLICY_PAP_HOST_NAME, configurationParameters.getPapParameters().getHostname()); assertEquals(POLICY_PAP_PORT, configurationParameters.getPapParameters().getPort()); + assertFalse(configurationParameters.getPapParameters().isUseHttps()); assertEquals(POLICY_PAP_USER, configurationParameters.getPapParameters().getUserName()); assertEquals(POLICY_PAP_PASSWORD, configurationParameters.getPapParameters().getPassword()); + assertThat(configurationParameters.validate().getResult()).isNull(); assertEquals(ValidationStatus.CLEAN, configurationParameters.validate().getStatus()); } diff --git a/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParameters.json b/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParameters.json index 0791e1ae..5bb9b65b 100644 --- a/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParameters.json +++ b/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParameters.json @@ -1,16 +1,17 @@ { "apiParameters": { - "hostName": "0.0.0.0", + "hostname": "0.0.0.0", "port": 6969, + "useHttps": false, "userName": "healthcheck", "password": "zb!XztG34" }, "papParameters": { - "hostName": "0.0.0.0", + "hostname": "0.0.0.0", "port": 6969, + "useHttps": false, "userName": "healthcheck", "password": "zb!XztG34" }, - "isHttps": false, "deployPolicies": true -} \ No newline at end of file +} diff --git a/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParametersInvalid.json b/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParametersInvalid.json index ca0558a6..93cb0dd3 100644 --- a/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParametersInvalid.json +++ b/plugins/forwarding-plugins/src/test/resources/parameters/LifecycleApiPolicyForwarderParametersInvalid.json @@ -1,16 +1,17 @@ { "apiParameters": { - "hostName": "", + "hostname": "", "port": -1, + "useHttps": false, "userName": "healthcheck", "password": "zb!XztG34" }, "papParameters": { - "hostName": "", + "hostname": "", "port": -2, + "useHttps": false, "userName": "healthcheck", "password": "zb!XztG34" }, - "isHttps": false, "deployPolicies": true -} \ No newline at end of file +} diff --git a/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java b/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java index c2ea8009..ecd40e92 100644 --- a/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java +++ b/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java @@ -26,6 +26,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.Map; +import org.onap.policy.common.endpoints.http.client.HttpClientConfigException; import org.onap.policy.common.parameters.ParameterService; import org.onap.policy.distribution.forwarding.PolicyForwarder; import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters; @@ -120,7 +121,7 @@ public class PluginHandler { policyForwarders.add(policyForwarder); } catch (final ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException - | SecurityException exp) { + | SecurityException | HttpClientConfigException exp) { throw new PluginInitializationException(exp.getMessage(), exp.getCause()); } } diff --git a/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/defaultConfig.json b/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/defaultConfig.json index 98a135ce..7273cbc7 100644 --- a/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/defaultConfig.json +++ b/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/defaultConfig.json @@ -53,18 +53,19 @@ "parameterClassName": "org.onap.policy.distribution.forwarding.lifecycle.api.LifecycleApiForwarderParameters", "parameters": { "apiParameters": { - "hostName": "policy-api", + "hostname": "policy-api", "port": 6969, + "useHttps": true, "userName": "healthcheck", "password": "zb!XztG34" }, "papParameters": { - "hostName": "policy-pap", + "hostname": "policy-pap", "port": 7000, + "useHttps": true, "userName": "healthcheck", "password": "zb!XztG34" }, - "isHttps": true, "deployPolicies": true } } -- cgit 1.2.3-korg