diff options
18 files changed, 378 insertions, 672 deletions
diff --git a/controlloop/build/docker-cl b/controlloop/build/docker-cl new file mode 100644 index 000000000..659c2bad9 --- /dev/null +++ b/controlloop/build/docker-cl @@ -0,0 +1,254 @@ +#!/usr/bin/env bash + +# ######################################################################## +# +# Copyright 2019 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. +# ######################################################################## + +function usage { + if [[ ${DEBUG} == y ]]; then + echo "-- $0 --" + set -x + fi + + echo + echo "SYNTAX:" + echo -e "\t$(basename "$0") " + echo -e "\t\t[--help|-h] [--build|-b <repo:tag>] [--push|-p <repo:tag>]" + echo -e "\t\t[--verify|-v] [--merge|-m] [--release|-r] " + echo -e "\t\t[--run <volume-full-path>] [--cmd <volume-full-path> <cmd>]" + echo + echo +} + +function build { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} $* --" + set -x + fi + + local tag tags + + for tag in "$@"; do + tags="${tags} --tag ${tag}" + done + + (set -x; docker build ${BUILD_ARGS} ${tags} ${IMAGE_PATH}) + + if [[ $? != 0 ]]; then + echo -e "\nERROR: docker build\n" + return 1 + fi + + docker image ls | egrep "TAG|${IMAGE}" + + return 0 +} + +function push { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} $* --" + set -x + fi + + local tag="${1}" + + if [[ -z ${tag} ]]; then + echo -e "\nERROR: no <repo:tag> provided\n" + return 1 + fi + + (set -x; docker push ${tag}) + + if [[ $? != 0 ]]; then + echo -e "\nERROR: docker push\n" + return 2 + fi + + return 0 +} + +function release { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + build ${RELEASE_BUILD_TAGS} && push ${RELEASE_PUSH_TAGS} + return $? +} + +function merge { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + build ${MERGE_BUILD_TAGS} && push ${MERGE_PUSH_TAGS} + return $? +} + +function verify { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + build ${VERIFY_BUILD_TAGS} + + return $? +} + +function run { + local debugEnv + + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} $* --" + set -x + debugEnv='-e "DEBUG=y"' + fi + + local volume="$1" + local cmd="$2" + + if [[ ! -d ${volume} ]]; then + echo -e "\nERROR: an absolute path to a volume must be provided: ${volume}\n" + return 1 + fi + + ( + set -x + docker run --rm ${debugEnv} -it -v "${volume}":/tmp/policy-install/config -p 9696:9696 \ + --name pdpd-cl onap/policy-pdpd-cl ${cmd} + ) + + return $? +} + +( +if [[ ${DEBUG} == y ]]; then + echo "-- $0 $* --" + set -x +fi + +VERSION_PATH="controlloop/packages/docker-controlloop/target/version" +if [[ ! -f "${VERSION_PATH}" ]]; then + cd "$(dirname "$0")"/../.. + if [[ ! -f "${VERSION_PATH}" ]]; then + echo -e "\nERROR: ${VERSION_PATH} cannot be found\n" + usage + exit 1 + fi +fi + +DOCKER_REPOSITORY="nexus3.onap.org:10003" +IMAGE=policy-pdpd-cl +IMAGE_PATH="controlloop/packages/docker-controlloop/target/${IMAGE}" + +VERSION="$(cat "${VERSION_PATH}")" +MAJOR_MINOR_VERSION="$(cut -f 1,2 -d . "${VERSION_PATH}")" +TIMESTAMP="$(date -u +%Y%m%dT%H%M%S)" + +if [[ -z "${VERSION}" ]]; then + echo -e "\nERROR: no version\n" + usage + exit 1 +fi + +if [[ -z "${MAJOR_MINOR_VERSION}" ]]; then + echo "\nERROR: no major/minor version: ${VERSION}\n" + usage + exit 1 +fi + +if [[ ${VERSION} == *"SNAPSHOT"* ]]; then + MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION}-SNAPSHOT" +else + MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION}-STAGING" +fi + +BUILD_ARGS="--build-arg BUILD_VERSION_APP_CL=${VERSION}" + +echo +echo -e "BUILD INFO:" +echo -e "\timage: ${IMAGE}" +echo -e "\timage-path: ${IMAGE_PATH}" +echo -e "\timage: ${IMAGE}" +echo -e "\tregistry: ${DOCKER_REPOSITORY}" +echo -e "\tpatch: ${VERSION}" +echo -e "\tversion: ${MAJOR_MINOR_VERSION}" +echo -e "\ttimestamp: ${TIMESTAMP}" +echo + +TAG_LATEST="onap/${IMAGE}:latest" +TAG_REPO_LATEST="${DOCKER_REPOSITORY}/onap/${IMAGE}:latest" +TAG_REPO_VERSION_LATEST="${DOCKER_REPOSITORY}/onap/${IMAGE}:${MAJOR_MINOR_VERSION}-latest" +TAG_REPO_VERSION_TIMESTAMP="${DOCKER_REPOSITORY}/onap/${IMAGE}:${VERSION}-${TIMESTAMP}Z" +TAG_REPO_VERSION_STAGING_TIMESTAMP="${DOCKER_REPOSITORY}/onap/${IMAGE}:${VERSION}-STAGING-${TIMESTAMP}Z" + +VERIFY_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}" + +MERGE_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}" +RELEASE_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_STAGING_TIMESTAMP}" + +MERGE_PUSH_TAGS="${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}" +RELEASE_PUSH_TAGS="${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_STAGING_TIMESTAMP}" + +echo +echo -e "TAGS:" +echo -e "\tBUILD:" +echo -e "\t\tverify:\n\t\t\t${VERIFY_BUILD_TAGS// /$'\n\t\t\t'}" +echo -e "\t\tmerge:\n\t\t\t${MERGE_BUILD_TAGS// /$'\n\t\t\t'}" +echo -e "\t\trelease:\n\t\t\t${RELEASE_BUILD_TAGS// /$'\n\t\t\t'}" +echo -e "\tPUSH:" +echo -e "\t\tverify: " +echo -e "\t\tmerge:\n\t\t\t${MERGE_PUSH_TAGS// /$'\n\t\t\t'}" +echo -e "\t\trelease:\n\t\t\t${RELEASE_PUSH_TAGS// /$'\n\t\t\t'}" +echo +echo + +until [[ -z "$1" ]]; do + case "$1" in + -h|--help) usage + ;; + -b|--build) shift + build "$1" + ;; + -p|--push) shift + push "$1" + ;; + -r|--release) release + ;; + -m|--merge) merge + ;; + -v|--verify) verify + ;; + --run) shift + volumeArg="$1" + run "${volumeArg}" + ;; + --cmd) shift + volumeArg="$1" + shift + cmdArg="$1" + run "${volumeArg}" "${cmdArg}" + ;; + *) usage + exit 1 + ;; + esac + shift +done +) diff --git a/controlloop/common/msb/pom.xml b/controlloop/common/msb/pom.xml deleted file mode 100644 index 43c2cde91..000000000 --- a/controlloop/common/msb/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ -<!-- - ============LICENSE_START======================================================= - drools-pdp-apps - ================================================================================ - Copyright (C) 2017-2018 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========================================================= - --> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onap.policy.drools-applications.controlloop.common</groupId> - <artifactId>common</artifactId> - <version>1.4.0-SNAPSHOT</version> - </parent> - - <artifactId>msb</artifactId> - - <dependencies> - <!-- - CLM security issue force use of databind 2.9.5 - from msb - --> - <dependency> - <groupId>org.onap.msb.java-sdk</groupId> - <artifactId>msb-java-sdk</artifactId> - <version>1.1.0</version> - <exclusions> - <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-api-mockito</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.policy.common</groupId> - <artifactId>utils-test</artifactId> - <version>${version.policy.common}</version> - <scope>test</scope> - </dependency> - </dependencies> - -</project> diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceException.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceException.java deleted file mode 100644 index ebd2e32ff..000000000 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceException.java +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright 2017-2018 ZTE, Inc. and others. - * - * 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========================================================= - */ - -package org.onap.policy.msb.client; - -public class MsbServiceException extends Exception { - private static final long serialVersionUID = 5227416822833497317L; - - public MsbServiceException() { - super(); - } - - public MsbServiceException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - public MsbServiceException(String message, Throwable cause) { - super(message, cause); - } - - public MsbServiceException(String message) { - super(message); - } - - public MsbServiceException(Throwable cause) { - super(cause); - } - -} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java deleted file mode 100644 index c2868a263..000000000 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java +++ /dev/null @@ -1,125 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright 2017-2018 ZTE, Inc. and others. - * - * 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========================================================= - */ - -package org.onap.policy.msb.client; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Serializable; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Properties; - -import org.onap.msb.sdk.discovery.common.RouteException; -import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo; -import org.onap.msb.sdk.discovery.entity.NodeInfo; -import org.onap.msb.sdk.httpclient.msb.MSBServiceClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class MsbServiceFactory implements Serializable { - private static final long serialVersionUID = 4638414146278012425L; - private static final Logger logger = LoggerFactory.getLogger(MsbServiceFactory.class); - private static final String MSB_PROPERTY_FILE = "msb.policy.properties"; - private static final String MSB_IP = "msb.ip"; - private static final String MSB_PORT = "msb.port"; - private transient MSBServiceClient msbClient; - private Properties properties; - - /** - * Construct an instance. - * - * @throws MsbServiceException if an error occurs - * @throws IOException if an IO error occurs - */ - public MsbServiceFactory() throws MsbServiceException, IOException { - this.init(); - this.msbClient = new MSBServiceClient(properties.getProperty(MSB_IP), - Integer.parseInt(properties.getProperty(MSB_PORT))); - } - - public MsbServiceFactory(MSBServiceClient msbClient) { - this.msbClient = msbClient; - } - - private void init() throws MsbServiceException, IOException { - properties = new Properties(); - String propertyFilePath = System.getProperty(MSB_PROPERTY_FILE); - if (propertyFilePath == null) { - throw new MsbServiceException("No msb.policy.properties specified."); - } - Path file = Paths.get(propertyFilePath); - if (!file.toFile().exists()) { - throw new MsbServiceException("No msb.policy.properties specified."); - } - - if (!Files.isReadable(file)) { - throw new MsbServiceException("Repository is NOT readable: " + file.toAbsolutePath()); - } - try (InputStream is = new FileInputStream(file.toFile())) { - properties.load(is); - } - } - - - public Node getNode(String serviceName, String version) { - return this.build(serviceName, version); - } - - /** - * Get the node for the given actor. - * - * @param actor the actor - * @return the node - */ - public Node getNode(String actor) { - Node node = null; - switch (actor) { - case "AAI": - node = this.build("aai-search", "v11"); - return node; - case "SO": - node = this.build("so", "v2"); - return node; - case "VFC": - node = this.build("nfvo-nslcm", "v1"); - return node; - case "SDNC": - node = this.build("sdnc-nslcm", "v10"); //... ??? - return node; - default: - logger.info("MSBServiceManager: policy has an unknown actor."); - } - return node; - } - - private Node build(String serviceName, String version) { - Node node = new Node(); - node.setName(serviceName); - try { - MicroServiceFullInfo serviceInfo = msbClient.queryMicroServiceInfo(serviceName, version); - for (NodeInfo nodeInfo : serviceInfo.getNodes()) { - node.setIp(nodeInfo.getIp()); - node.setPort(nodeInfo.getPort()); - } - } catch (RouteException e) { - logger.info("MSBServiceManager:", e); - } - return node; - } -} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceManager.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceManager.java deleted file mode 100644 index b94992c28..000000000 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceManager.java +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright 2017-2018 ZTE, Inc. and others. - * - * 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========================================================= - */ - -package org.onap.policy.msb.client; - -import java.io.IOException; -import java.io.Serializable; - -import org.onap.msb.sdk.httpclient.msb.MSBServiceClient; - -public class MsbServiceManager implements Serializable { - private static final long serialVersionUID = -2517971308551895215L; - private MsbServiceFactory factory; - - public MsbServiceManager() throws MsbServiceException, IOException { - this.factory = new MsbServiceFactory(); - } - - public MsbServiceManager(MSBServiceClient msbClient) { - - this.factory = new MsbServiceFactory(msbClient); - } - - /** - * Get the IP and port of the components registered in the MSB. - * - * @param actor AAI or SO or VFC or SNDC - * @return the node - */ - public Node getNode(String actor) { - - return factory.getNode(actor); - } - - /** - * Get the IP and port of the components registered in the MSB. - * - * @param serviceName the service name registered in the MSB - * @param version the service version registered in the MSB - * @return the node - */ - public Node getNode(String serviceName, String version) { - - return factory.getNode(serviceName, version); - } - -} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java deleted file mode 100644 index f42b82e3c..000000000 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java +++ /dev/null @@ -1,55 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * Copyright 2017-2018 ZTE, Inc. and others.
- *
- * 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=========================================================
- */
-
-package org.onap.policy.msb.client;
-
-import java.io.Serializable;
-
-public class Node implements Serializable {
- private static final long serialVersionUID = -5028618045561310837L;
- private String name;
- private String ip;
- private String port;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getIp() {
- return ip;
- }
-
- public void setIp(String ip) {
- this.ip = ip;
- }
-
- public String getPort() {
- return port;
- }
-
- public void setPort(String port) {
- this.port = port;
- }
-
- @Override
- public String toString() {
- return "Node{" + "name='" + name + '\'' + ", ip='" + ip + '\'' + ", port='" + port + '\'' + '}';
- }
-}
diff --git a/controlloop/common/msb/src/main/resources/msb.policy.properties b/controlloop/common/msb/src/main/resources/msb.policy.properties deleted file mode 100644 index bb372ec85..000000000 --- a/controlloop/common/msb/src/main/resources/msb.policy.properties +++ /dev/null @@ -1,22 +0,0 @@ -###
-# ============LICENSE_START=======================================================
-# ONAP-PDP
-# ================================================================================
-# Copyright (C) 2017 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=========================================================
-###
-
-msb.ip=127.0.0.1
-msb.port=10081
\ No newline at end of file diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceExceptionTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceExceptionTest.java deleted file mode 100644 index 059eecdee..000000000 --- a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceExceptionTest.java +++ /dev/null @@ -1,31 +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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.msb.client; - -import org.junit.Test; -import org.onap.policy.common.utils.test.ExceptionsTester; - -public class MsbServiceExceptionTest extends ExceptionsTester { - - @Test - public void test() throws Exception { - test(MsbServiceException.class); - } - -} diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceManagerTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceManagerTest.java deleted file mode 100644 index 32025fb3c..000000000 --- a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceManagerTest.java +++ /dev/null @@ -1,173 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright 2017-2018 ZTE, Inc. and others. - * - * 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========================================================= - */ - -package org.onap.policy.msb.client; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.HashSet; -import java.util.Set; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.onap.msb.sdk.discovery.common.RouteException; -import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo; -import org.onap.msb.sdk.discovery.entity.NodeInfo; -import org.onap.msb.sdk.httpclient.msb.MSBServiceClient; - -public class MsbServiceManagerTest { - @Mock - private MSBServiceClient msbClient; - - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private MsbServiceManager msbManager; - - public MsbServiceManagerTest() {} - - @BeforeClass - public static void setUpClass() {} - - @AfterClass - public static void tearDownClass() {} - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - msbManager = new MsbServiceManager(msbClient); - } - - @After - public void tearDown() {} - - @Test - public void testByActor() throws RouteException, UnknownHostException { - MicroServiceFullInfo serviceInfo = - MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); - when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenReturn(serviceInfo); - Node node = msbManager.getNode("AAI"); - assertNotNull(node); - serviceInfo = MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8840"); - when(msbClient.queryMicroServiceInfo("so", "v2")).thenReturn(serviceInfo); - node = msbManager.getNode("SO"); - assertNotNull(node); - - serviceInfo = MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8082"); - when(msbClient.queryMicroServiceInfo("nfvo-nslcm", "v1")).thenReturn(serviceInfo); - node = msbManager.getNode("VFC"); - assertNotNull(node); - - } - - @Test - public void testByActor_when_actorNotExist_returnNull() throws RouteException, UnknownHostException { - MicroServiceFullInfo serviceInfo = - MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); - when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenReturn(serviceInfo); - Node node = msbManager.getNode("DDD"); - assertNull(node); - } - - @Test - public void testByServiceNameAndVersion() throws RouteException, UnknownHostException { - MicroServiceFullInfo serviceInfo = - MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); - when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenReturn(serviceInfo); - Node node = msbManager.getNode("aai-search", "v11"); - assertNotNull(node); - } - - @Test - public void testByServiceNameAndVersion_when_serice_notRegistedToMsb() throws RouteException, UnknownHostException { - MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); - when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenThrow(new RouteException()); - Node node = msbManager.getNode("aai-search", "v11"); - assertNotNull(node); - assertTrue(node.getName() == "aai-search"); - assertTrue(node.getIp() == null); - assertTrue(node.getPort() == null); - } - - @Test - public void testReadMsbPolicyProperites_noPropertyFileSpecifed_throwsException() - throws MsbServiceException, IOException { - expectedException.expect(MsbServiceException.class); - expectedException.expectMessage("No msb.policy.properties specified."); - System.clearProperty("msb.policy.properties"); - msbManager = new MsbServiceManager(); - } - - @Test - public void testReadMsbPolicyProperites_propertyFileDoesNotExist_throwsException() - throws MsbServiceException, IOException { - expectedException.expect(MsbServiceException.class); - expectedException.expectMessage("No msb.policy.properties specified."); - System.setProperty("msb.policy.properties", "nonExistingPropertyFile.txt"); - msbManager = new MsbServiceManager(); - System.clearProperty("msb.policy.properties"); - } - - @Test - public void testReadMsbPolicyProperites_propertyFileExists() throws MsbServiceException, IOException, - NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - System.setProperty("msb.policy.properties", "src/test/resources/msbPropertyFile.properties"); - msbManager = new MsbServiceManager(); - System.clearProperty("msb.policy.properties"); - - Field factoryField = msbManager.getClass().getDeclaredField("factory"); - factoryField.setAccessible(true); - MsbServiceFactory msbServiceFactory = (MsbServiceFactory) factoryField.get(msbManager); - - Field msbClientField = msbServiceFactory.getClass().getDeclaredField("msbClient"); - msbClientField.setAccessible(true); - MSBServiceClient msbClient = (MSBServiceClient) msbClientField.get(msbServiceFactory); - assertEquals("127.0.0.1:20", msbClient.getMsbSvrAddress()); - } - - /** - * Build a micro service info. - * - * @param ip the up address - * @param port the port number - * @return the MicroServiceFullInfo - */ - public static MicroServiceFullInfo build(String ip, String port) { - Set<NodeInfo> nodes = new HashSet<NodeInfo>(); - NodeInfo node = new NodeInfo(); - node.setPort(port); - node.setIp(ip); - nodes.add(node); - MicroServiceFullInfo serviceInfo = new MicroServiceFullInfo(); - serviceInfo.setNodes(nodes); - return serviceInfo; - } -} diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java deleted file mode 100644 index 7419bbe34..000000000 --- a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java +++ /dev/null @@ -1,63 +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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.msb.client; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -public class NodeTest { - - @Test - public void testSetAndGetName() { - Node node = new Node(); - final String name = "myName"; - node.setName(name); - assertEquals(name, node.getName()); - } - - @Test - public void testSetAndGetIp() { - Node node = new Node(); - final String ip = "127.0.0.1"; - node.setIp(ip); - assertEquals(ip, node.getIp()); - } - - @Test - public void testSetAndGetPort() { - Node node = new Node(); - final String port = "1001"; - node.setPort(port); - assertEquals(port, node.getPort()); - } - - @Test - public void testToString() { - Node node = new Node(); - final String name = "myName"; - final String ip = "127.0.0.1"; - final String port = "1001"; - node.setName(name); - node.setIp(ip); - node.setPort(port); - assertEquals("Node{name='myName', ip='127.0.0.1', port='1001'}", node.toString()); - } - -} diff --git a/controlloop/common/msb/src/test/resources/msbPropertyFile.properties b/controlloop/common/msb/src/test/resources/msbPropertyFile.properties deleted file mode 100644 index 8d392de56..000000000 --- a/controlloop/common/msb/src/test/resources/msbPropertyFile.properties +++ /dev/null @@ -1,21 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ONAP -# ================================================================================ -# Copyright (C) 2017-2018 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========================================================= -### -msb.ip=127.0.0.1 -msb.port=20
\ No newline at end of file diff --git a/controlloop/common/pom.xml b/controlloop/common/pom.xml index c9927183d..a0d003c9f 100644 --- a/controlloop/common/pom.xml +++ b/controlloop/common/pom.xml @@ -44,7 +44,6 @@ <module>feature-controlloop-management</module> <module>feature-controlloop-amsterdam</module> <module>feature-controlloop-casablanca</module> - <module>msb</module> </modules> diff --git a/controlloop/packages/basex-controlloop/pom.xml b/controlloop/packages/basex-controlloop/pom.xml index 593016816..1d3fe3d3d 100644 --- a/controlloop/packages/basex-controlloop/pom.xml +++ b/controlloop/packages/basex-controlloop/pom.xml @@ -54,7 +54,7 @@ <resource> <directory>src/main/resources</directory> <includes> - <include>apps-controlloop-version</include> + <include>controlloop.version</include> </includes> <filtering>true</filtering> </resource> diff --git a/controlloop/packages/basex-controlloop/src/assembly/zip.xml b/controlloop/packages/basex-controlloop/src/assembly/zip.xml index caa943c21..ba1af668d 100644 --- a/controlloop/packages/basex-controlloop/src/assembly/zip.xml +++ b/controlloop/packages/basex-controlloop/src/assembly/zip.xml @@ -37,7 +37,7 @@ <fileMode>755</fileMode> <directoryMode>700</directoryMode> <includes> - <include>apps-controlloop-version</include> + <include>controlloop.version</include> </includes> </fileSet> </fileSets> diff --git a/controlloop/packages/basex-controlloop/src/main/resources/apps-controlloop-version b/controlloop/packages/basex-controlloop/src/main/resources/controlloop.version index 066e5712e..066e5712e 100644 --- a/controlloop/packages/basex-controlloop/src/main/resources/apps-controlloop-version +++ b/controlloop/packages/basex-controlloop/src/main/resources/controlloop.version diff --git a/controlloop/packages/docker-controlloop/pom.xml b/controlloop/packages/docker-controlloop/pom.xml new file mode 100644 index 000000000..d55f5eab1 --- /dev/null +++ b/controlloop/packages/docker-controlloop/pom.xml @@ -0,0 +1,113 @@ +<!-- + ============LICENSE_START======================================================= + ONAP + ================================================================================ + Copyright (C) 2019 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========================================================= + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.onap.policy.drools-applications.controlloop.packages</groupId> + <artifactId>packages</artifactId> + <version>1.4.0-SNAPSHOT</version> + </parent> + + <artifactId>docker-controlloop</artifactId> + <packaging>pom</packaging> + + <name>docker-controlloop</name> + <description>ONAP Policy Control Loop PDP-D Docker Build</description> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-cl-apps-zip</id> + <phase>prepare-package</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/policy-pdpd-cl</outputDirectory> + <overWriteReleases>false</overWriteReleases> + <overWriteSnapshots>true</overWriteSnapshots> + <artifactItems> + <artifactItem> + <groupId>org.onap.policy.drools-applications.controlloop.packages</groupId> + <artifactId>apps-controlloop</artifactId> + <version>${project.version}</version> + <type>zip</type> + <destFileName>apps-controlloop.zip</destFileName> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>copy-resources</id> + <phase>prepare-package</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/policy-pdpd-cl</outputDirectory> + <resources> + <resource> + <directory>src/main/docker</directory> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <executions> + <execution> + <id>get-target-version</id> + <phase>prepare-package</phase> + <goals> + <goal>exec</goal> + </goals> + </execution> + </executions> + <configuration> + <executable>echo</executable> + <workingDirectory>${project.build.directory}</workingDirectory> + <arguments> + <argument>${project.version}</argument> + </arguments> + <outputFile>${project.build.directory}/version</outputFile> + </configuration> + </plugin> + + </plugins> + </build> + +</project> diff --git a/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile b/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile new file mode 100644 index 000000000..7bb2006cf --- /dev/null +++ b/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile @@ -0,0 +1,7 @@ +FROM onap/policy-drools:1.4-SNAPSHOT-latest + +ARG BUILD_VERSION_APP_CL=${BUILD_VERSION_APP_CL} +ENV BUILD_VERSION_APP_CL=${BUILD_VERSION_APP_CL} + +ADD apps-controlloop.zip ./ +RUN unzip apps-controlloop.zip diff --git a/controlloop/packages/pom.xml b/controlloop/packages/pom.xml index 045c69101..3b192af89 100644 --- a/controlloop/packages/pom.xml +++ b/controlloop/packages/pom.xml @@ -2,7 +2,7 @@ ============LICENSE_START======================================================= Drools PDP Application Models ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + Copyright (C) 2017, 2019 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. @@ -38,5 +38,6 @@ <module>basex-controlloop</module> <module>artifacts-controlloop</module> <module>apps-controlloop</module> + <module>docker-controlloop</module> </modules> </project> |