From 3f563fe552e35b3bc3d95c47a3cabdfe7645ad07 Mon Sep 17 00:00:00 2001 From: jhh Date: Thu, 5 Mar 2020 22:32:58 -0600 Subject: policy routing and reorg into policy-domains - Native Drools Controller Policy support. - Move domain policies into the policy-domains project. - Route legacy/compliant operational policies to one or all controller supporting the policy's policy type. - Enhancements to scripts to invoke commands external to the container. Issue-ID: POLICY-2388 Signed-off-by: jhh Change-Id: Id41f04d10a28d2ea86bdd41334e499c28d0438ae Signed-off-by: jhh --- policy-management/pom.xml | 6 +++ .../policy/drools/domain/models/DroolsPolicy.java | 46 ------------------- .../onap/policy/drools/domain/models/Metadata.java | 40 ----------------- .../policy/drools/server/restful/RestManager.java | 4 +- .../internal/AggregatedPolicyController.java | 3 +- .../src/main/server-gen/bin/db-migrator | 6 ++- .../src/main/server-gen/bin/deploy-artifact | 6 +-- .../src/main/server-gen/bin/pdpd-configuration | 8 ++-- .../server-gen/bin/policy-management-controller | 6 +-- .../src/main/server-gen/bin/rest-add-controller | 6 +-- .../src/main/server-gen/bin/rest-delete-controller | 30 ++++++------- .../src/main/server-gen/bin/telemetry | 35 ++++++++------- .../drools/domain/models/DroolsPolicyTest.java | 52 ---------------------- 13 files changed, 57 insertions(+), 191 deletions(-) delete mode 100644 policy-management/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java delete mode 100644 policy-management/src/main/java/org/onap/policy/drools/domain/models/Metadata.java delete mode 100644 policy-management/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyTest.java (limited to 'policy-management') diff --git a/policy-management/pom.xml b/policy-management/pom.xml index 7d3ac12f..1498dddc 100644 --- a/policy-management/pom.xml +++ b/policy-management/pom.xml @@ -173,6 +173,12 @@ ${project.version} + + org.onap.policy.drools-pdp + policy-domains + ${project.version} + + org.onap.policy.common policy-endpoints diff --git a/policy-management/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java b/policy-management/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java deleted file mode 100644 index 4b1a1cbd..00000000 --- a/policy-management/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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. - * 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.drools.domain.models; - -import com.google.gson.annotations.SerializedName; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@Data -@SuperBuilder -@NoArgsConstructor -public abstract class DroolsPolicy { - @SerializedName("type") - protected String type; - - @SerializedName("type_version") - protected String typeVersion; - - @SerializedName("version") - protected String version; - - @SerializedName("name") - protected String name; - - @SerializedName("metadata") - protected Metadata metadata; -} diff --git a/policy-management/src/main/java/org/onap/policy/drools/domain/models/Metadata.java b/policy-management/src/main/java/org/onap/policy/drools/domain/models/Metadata.java deleted file mode 100644 index fd68e5b5..00000000 --- a/policy-management/src/main/java/org/onap/policy/drools/domain/models/Metadata.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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. - * 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.drools.domain.models; - -import com.google.gson.annotations.SerializedName; -import java.io.Serializable; -import lombok.Builder; -import lombok.Data; - -/** - * Metadata in Native Drools Policies. - */ - -@Data -@Builder -public class Metadata implements Serializable { - - private static final long serialVersionUID = -1027974819756498893L; - - @SerializedName("policy-id") - protected String policyId; -} diff --git a/policy-management/src/main/java/org/onap/policy/drools/server/restful/RestManager.java b/policy-management/src/main/java/org/onap/policy/drools/server/restful/RestManager.java index cd3951d7..c6d5e02d 100644 --- a/policy-management/src/main/java/org/onap/policy/drools/server/restful/RestManager.java +++ b/policy-management/src/main/java/org/onap/policy/drools/server/restful/RestManager.java @@ -1,8 +1,8 @@ /* * ============LICENSE_START======================================================= - * policy-management + * ONAP * ================================================================================ - * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2020 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. diff --git a/policy-management/src/main/java/org/onap/policy/drools/system/internal/AggregatedPolicyController.java b/policy-management/src/main/java/org/onap/policy/drools/system/internal/AggregatedPolicyController.java index 1fd42546..5685ff6e 100644 --- a/policy-management/src/main/java/org/onap/policy/drools/system/internal/AggregatedPolicyController.java +++ b/policy-management/src/main/java/org/onap/policy/drools/system/internal/AggregatedPolicyController.java @@ -45,6 +45,7 @@ import org.onap.policy.drools.persistence.SystemPersistenceConstants; import org.onap.policy.drools.properties.DroolsPropertyConstants; import org.onap.policy.drools.protocol.configuration.DroolsConfiguration; import org.onap.policy.drools.system.PolicyController; +import org.onap.policy.drools.utils.PropertyUtil; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -141,7 +142,7 @@ public class AggregatedPolicyController implements PolicyController, TopicListen /* persist new properties */ getPersistenceManager().storeController(name, properties); - this.properties = properties; + this.properties = PropertyUtil.getInterpolatedProperties(properties); this.policyTypes = getPolicyTypesFromProperties(); } diff --git a/policy-management/src/main/server-gen/bin/db-migrator b/policy-management/src/main/server-gen/bin/db-migrator index 29a50d42..f5029460 100644 --- a/policy-management/src/main/server-gen/bin/db-migrator +++ b/policy-management/src/main/server-gen/bin/db-migrator @@ -1,9 +1,9 @@ #!/bin/bash -# + # ============LICENSE_START======================================================= # ONAP # ================================================================================ -# Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017-2020 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. @@ -52,6 +52,8 @@ # # ##################################################################### +source ${POLICY_HOME}/etc/profile.d/env.sh + METADATA_DB=migration METADATA_TABLE="${METADATA_DB}".metadata_versions MIGRATION_DIR="${POLICY_HOME}"/etc/db/migration diff --git a/policy-management/src/main/server-gen/bin/deploy-artifact b/policy-management/src/main/server-gen/bin/deploy-artifact index b02c4e0c..b142bcde 100644 --- a/policy-management/src/main/server-gen/bin/deploy-artifact +++ b/policy-management/src/main/server-gen/bin/deploy-artifact @@ -1,10 +1,9 @@ #!/usr/bin/env bash -# # ============LICENSE_START======================================================= # ONAP # ================================================================================ -# Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2018-2020 AT&T Intellectual Property. All rights reserved. # Modifications Copyright (C) 2020 Bell Canada. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,7 +18,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END========================================================= -### + +source ${POLICY_HOME}/etc/profile.d/env.sh ############################################################################## # Usage: usage diff --git a/policy-management/src/main/server-gen/bin/pdpd-configuration b/policy-management/src/main/server-gen/bin/pdpd-configuration index bfff60ba..fc822e18 100644 --- a/policy-management/src/main/server-gen/bin/pdpd-configuration +++ b/policy-management/src/main/server-gen/bin/pdpd-configuration @@ -1,10 +1,9 @@ #! /bin/bash -### # ============LICENSE_START======================================================= -# policy-management +# ONAP # ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017-2020 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. @@ -18,7 +17,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END========================================================= -### + +source ${POLICY_HOME}/etc/profile.d/env.sh function usage() { echo -n "Usage: $(basename $0) " diff --git a/policy-management/src/main/server-gen/bin/policy-management-controller b/policy-management/src/main/server-gen/bin/policy-management-controller index 389f7d2e..56db98df 100644 --- a/policy-management/src/main/server-gen/bin/policy-management-controller +++ b/policy-management/src/main/server-gen/bin/policy-management-controller @@ -1,10 +1,9 @@ #!/bin/bash -### # ============LICENSE_START======================================================= # ONAP POLICY # ================================================================================ -# Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017-2020 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. @@ -18,7 +17,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END========================================================= -## + +source ${POLICY_HOME}/etc/profile.d/env.sh SNAME="Policy Management" PNAME=policy-management diff --git a/policy-management/src/main/server-gen/bin/rest-add-controller b/policy-management/src/main/server-gen/bin/rest-add-controller index 98b5702b..1c7dfbc1 100644 --- a/policy-management/src/main/server-gen/bin/rest-add-controller +++ b/policy-management/src/main/server-gen/bin/rest-add-controller @@ -1,10 +1,9 @@ #! /bin/bash -### # ============LICENSE_START======================================================= -# policy-management +# ONAP # ================================================================================ -# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017-2020 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. @@ -18,7 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END========================================================= -### source $POLICY_HOME/etc/profile.d/env.sh diff --git a/policy-management/src/main/server-gen/bin/rest-delete-controller b/policy-management/src/main/server-gen/bin/rest-delete-controller index 7a47c928..c2741191 100644 --- a/policy-management/src/main/server-gen/bin/rest-delete-controller +++ b/policy-management/src/main/server-gen/bin/rest-delete-controller @@ -1,41 +1,37 @@ #! /bin/bash -### # ============LICENSE_START======================================================= -# policy-management +# ONAP # ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017-2020 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. # 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. # ============LICENSE_END========================================================= -### source $POLICY_HOME/etc/profile.d/env.sh if [[ -n $1 ]]; then - if [[ -n ${TELEMETRY_PASSWORD} ]]; then - curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X DELETE --header "Content-Type: application/json" \ - https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers/${1} - else - curl -k --silent -X DELETE --header "Content-Type: application/json" \ - https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers/${1} - fi - echo - exit + if [[ -n ${TELEMETRY_PASSWORD} ]]; then + curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X DELETE --header "Content-Type: application/json" \ + https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers/${1} + else + curl -k --silent -X DELETE --header "Content-Type: application/json" \ + https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers/${1} + fi + echo + exit fi - - cat <<-'EOF' Usage: rest-delete-controller.sh closed-loop-sample|reporter|sepc|vsegw|.. (or any other controller idenfied by name) diff --git a/policy-management/src/main/server-gen/bin/telemetry b/policy-management/src/main/server-gen/bin/telemetry index 37614b08..9d4b857a 100644 --- a/policy-management/src/main/server-gen/bin/telemetry +++ b/policy-management/src/main/server-gen/bin/telemetry @@ -1,44 +1,45 @@ #! /bin/bash -### # ============LICENSE_START======================================================= -# ONAP POLICY +# ONAP # ================================================================================ -# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2017-2020 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. # 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. # ============LICENSE_END========================================================= -## + +source ${POLICY_HOME}/etc/profile.d/env.sh REST_TOOL="http-prompt" TELEMETRY_SPEC="${POLICY_HOME}/config/telemetry-spec.json" -if ! type -p "${REST_TOOL}" > /dev/null 2>&1; then - echo "error: prerequisite software not found: http-prompt" - exit 1 +if ! type -p "${REST_TOOL}" >/dev/null 2>&1; then + echo "error: prerequisite software not found: http-prompt" + exit 1 fi -if ! "${POLICY_HOME}"/bin/policy-management-controller status > /dev/null 2>&1; then - echo "error: pdp-d is not running" - exit 2 +if ! "${POLICY_HOME}"/bin/policy-management-controller status >/dev/null 2>&1; then + echo "error: pdp-d is not running" + exit 2 fi if [[ ! -r ${TELEMETRY_SPEC} ]]; then - echo "generating new spec .." - if ! http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" https://localhost:9696/swagger.json > ${TELEMETRY_SPEC} 2> /dev/null; then - echo "error: cannot generate telemetry spec" - exit 3 - fi + echo "generating new spec .." + if ! http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" https://localhost:9696/swagger.json >${TELEMETRY_SPEC} 2>/dev/null; then + echo "error: cannot generate telemetry spec" + rm -f ${TELEMETRY_SPEC} 2>/dev/null + exit 3 + fi fi exec http-prompt https://localhost:9696/policy/pdp/engine --verify=no --auth "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" --spec ${TELEMETRY_SPEC} diff --git a/policy-management/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyTest.java b/policy-management/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyTest.java deleted file mode 100644 index 22edbb44..00000000 --- a/policy-management/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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. - * 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.drools.domain.models; - -import com.openpojo.reflection.impl.PojoClassFactory; -import com.openpojo.validation.Validator; -import com.openpojo.validation.ValidatorBuilder; -import com.openpojo.validation.test.impl.GetterTester; -import com.openpojo.validation.test.impl.SetterTester; -import java.io.Serializable; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; -import org.junit.Test; - -public class DroolsPolicyTest { - - @Data - @SuperBuilder - @NoArgsConstructor - public static class DerivedDomainPolicy extends DroolsPolicy implements Serializable { - private static final long serialVersionUID = -1027974819756498893L; - } - - @Test - public void testPackage() { - /* validate model pojos */ - Validator validator = ValidatorBuilder.create() - .with(new SetterTester(), new GetterTester()).build(); - - validator.validate(PojoClassFactory.getPojoClass(DerivedDomainPolicy.class)); - } - -} \ No newline at end of file -- cgit 1.2.3-korg