Docker container for DMaaP Simulator 16/86616/2
authorliamfallon <liam.fallon@est.tech>
Tue, 30 Apr 2019 13:31:03 +0000 (13:31 +0000)
committerliamfallon <liam.fallon@est.tech>
Tue, 30 Apr 2019 13:31:03 +0000 (13:31 +0000)
THis review brings in a Docker container for the DMaaP
simulator for CSIT testing. This container should NOT
be submitted to the ONAP nexus as it is only for testing.

Issue-ID: POLICY-1643
Change-Id: I0e2147da9b7c0a85db68044439d48378d3a3e5b5
Signed-off-by: liamfallon <liam.fallon@est.tech>
models-sim/models-sim-dmaap/pom.xml
models-sim/models-sim-dmaap/src/main/package/docker/Dockerfile [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/package/docker/dmaap-sim.sh [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/package/docker/docker_build.sh [new file with mode: 0755]
models-sim/models-sim-dmaap/src/main/package/tarball/assembly.xml [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/resources/etc/DefaultConfig.json [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-truststore [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/resources/logback.xml [new file with mode: 0644]

index b21926b..9bfa6be 100644 (file)
@@ -45,7 +45,6 @@
         <dependency>
             <groupId>org.onap.policy.common</groupId>
             <artifactId>utils</artifactId>
-            <version>${policy.common.version}</version>
         </dependency>
         <dependency>
             <groupId>org.onap.policy.common</groupId>
@@ -61,7 +60,7 @@
 
     <build>
         <resources>
-            <!-- Output the version of the pap service -->
+            <!-- Output the version of the DMaaP simulator service -->
             <resource>
                 <directory>src/main/resources</directory>
                 <filtering>true</filtering>
                 </excludes>
             </resource>
         </resources>
+
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-complete-tar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/package/tarball/assembly.xml</descriptor>
+                            </descriptors>
+                            <finalName>${project.artifactId}-${project.version}</finalName>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
     </build>
 </project>
diff --git a/models-sim/models-sim-dmaap/src/main/package/docker/Dockerfile b/models-sim/models-sim-dmaap/src/main/package/docker/Dockerfile
new file mode 100644 (file)
index 0000000..fa11474
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# ============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=========================================================
+#
+
+#
+# Docker file to build an image that runs the DMaaP simulator on Java 8 in alpine
+#
+
+FROM onap/policy-common-alpine:1.4.0
+
+LABEL maintainer="Policy Team"
+
+ARG POLICY_LOGS=/var/log/onap/policy/dmaap-sim
+
+ENV POLICY_HOME=/opt/app/policy
+ENV POLICY_LOGS=${POLICY_LOGS}
+
+RUN apk add --no-cache --update \
+    bash \
+    nss \
+    procps \
+    coreutils \
+    findutils \
+    grep \
+    zip \
+    unzip \
+    curl \
+    wget \
+    openssh \
+    iproute2 \
+    iputils \
+    vim \
+    openjdk8
+
+# Create DMaaP simulator user and group
+# Add simulator-specific directories and set ownership as the simulator user
+RUN mkdir -p ${POLICY_HOME}/dmaap-sim \
+    && mkdir -p ${POLICY_HOME}/dmaap-sim/bin \
+    && mkdir -p ${POLICY_LOGS} \
+    && chown -R policy:policy ${POLICY_LOGS} \
+    && mkdir /packages
+
+# Unpack the tarball
+COPY policy-models-sim-dmaap-tarball.tar.gz /packages
+RUN tar xvfz /packages/policy-models-sim-dmaap-tarball.tar.gz --directory ${POLICY_HOME}/dmaap-sim \
+    && rm /packages/policy-models-sim-dmaap-tarball.tar.gz
+
+# Ensure everything has the correct permissions
+# Copy examples to DMaaP simulator user area
+COPY dmaap-sim.sh ${POLICY_HOME}/dmaap-sim/bin
+RUN find /opt/app -type d -perm 755 \
+    && find /opt/app -type f -perm 644 \
+    && chmod a+x ${POLICY_HOME}/dmaap-sim/bin/*
+
+USER policy
+ENV PATH ${POLICY_HOME}/dmaap-sim/bin:$PATH
+ENTRYPOINT [ "bash", "dmaap-sim.sh" ]
diff --git a/models-sim/models-sim-dmaap/src/main/package/docker/dmaap-sim.sh b/models-sim/models-sim-dmaap/src/main/package/docker/dmaap-sim.sh
new file mode 100644 (file)
index 0000000..ec02d3f
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# ============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=========================================================
+#
+
+if [ -z "$DMAAP_SIM_HOME" ]
+then
+       DMAAP_SIM_HOME=/opt/app/policy/dmaap-sim
+fi
+
+JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
+KEYSTORE="${DMAAP_SIM_HOME}/etc/ssl/policy-keystore"
+KEYSTORE_PASSWD="Pol1cy_0nap"
+TRUSTSTORE="${DMAAP_SIM_HOME}/etc/ssl/policy-truststore"
+TRUSTSTORE_PASSWD="Pol1cy_0nap"
+
+if [ "$#" -eq 1 ]
+then
+    CONFIG_FILE=$1
+else
+    CONFIG_FILE=${CONFIG_FILE}
+fi
+
+if [ -z "$CONFIG_FILE" ]
+then
+    CONFIG_FILE="$DMAAP_SIM_HOME/etc/DefaultConfig.json"
+fi
+
+echo "DMaaP simulation configuration file: $CONFIG_FILE"
+
+$JAVA_HOME/bin/java \
+    -cp "$DMAAP_SIM_HOME/etc:$DMAAP_SIM_HOME/lib/*" \
+    -Djavax.net.ssl.keyStore="$KEYSTORE" \
+    -Djavax.net.ssl.keyStorePassword="$KEYSTORE_PASSWD" \
+    -Djavax.net.ssl.trustStore="$TRUSTSTORE" \
+    -Djavax.net.ssl.trustStorePassword="$TRUSTSTORE_PASSWD" \
+    -Dlogback.configurationFile=$DMAAP_SIM_HOME/etc/logback.xml \
+    org.onap.policy.models.sim.dmaap.startstop.Main \
+    -c $CONFIG_FILE
diff --git a/models-sim/models-sim-dmaap/src/main/package/docker/docker_build.sh b/models-sim/models-sim-dmaap/src/main/package/docker/docker_build.sh
new file mode 100755 (executable)
index 0000000..cd01486
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+# ============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=========================================================
+#
+
+#
+# Script to build a Docker file for the DMaaP simulator. The docker image
+# generated by this script should NOT be placed in the ONAP nexus, it is
+# only for testing purposes.
+#
+
+if [ -z "$DMAAP_SIM_HOME" ]
+then
+       DMAAP_SIM_HOME=`pwd`
+fi
+
+# Check for the dockerfile
+if [ ! -f "$DMAAP_SIM_HOME/src/main/package/docker/Dockerfile" ]
+then
+       echo docker file "$DMAAP_SIM_HOME/src/main/package/docker/Dockerfile" not found
+       exit 1
+fi
+
+# Check for the start script
+if [ ! -f "$DMAAP_SIM_HOME/src/main/package/docker/dmaap-sim.sh" ]
+then
+       echo start script "$DMAAP_SIM_HOME/src/main/package/docker/dmaap-sim.sh" not found
+       exit 1
+fi
+
+# Check for the tarball
+tarball_count=`ls $DMAAP_SIM_HOME/target/policy-models-sim-dmaap-*-SNAPSHOT-tarball.tar.gz 2> /dev/null | wc | awk '{print $1}'`
+if [ "$tarball_count" -ne "1" ]
+then
+       echo one and only one tarball should exist in the target directory
+       exit 2
+fi
+
+# Set up the docker build
+rm -fr $DMAAP_SIM_HOME/target/docker
+mkdir $DMAAP_SIM_HOME/target/docker
+cp $DMAAP_SIM_HOME/src/main/package/docker/Dockerfile $DMAAP_SIM_HOME/target/docker
+cp $DMAAP_SIM_HOME/src/main/package/docker/dmaap-sim.sh $DMAAP_SIM_HOME/target/docker
+cp $DMAAP_SIM_HOME/target/policy-models-sim-dmaap-*-SNAPSHOT-tarball.tar.gz $DMAAP_SIM_HOME/target/docker/policy-models-sim-dmaap-tarball.tar.gz
+
+# Run the docker build
+cd $DMAAP_SIM_HOME/target
+docker build -t dmaap/simulator docker
+
+
diff --git a/models-sim/models-sim-dmaap/src/main/package/tarball/assembly.xml b/models-sim/models-sim-dmaap/src/main/package/tarball/assembly.xml
new file mode 100644 (file)
index 0000000..e4671f8
--- /dev/null
@@ -0,0 +1,67 @@
+<!--
+  ============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=========================================================
+-->
+
+<assembly>
+    <id>tarball</id>
+    <formats>
+        <format>tar.gz</format>
+    </formats>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <useProjectArtifact>true</useProjectArtifact>
+            <outputDirectory>/lib</outputDirectory>
+            <unpack>false</unpack>
+            <scope>runtime</scope>
+            <includes>
+                <include>*:jar</include>
+            </includes>
+        </dependencySet>
+    </dependencySets>
+    <fileSets>
+        <fileSet>
+            <directory>${project.basedir}/src/main/resources
+            </directory>
+            <includes>
+                <include>logback.xml</include>
+            </includes>
+            <outputDirectory>etc</outputDirectory>
+            <lineEnding>unix</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>${project.basedir}/src/main/resources/etc
+            </directory>
+            <includes>
+                <include>DefaultConfig.json</include>
+            </includes>
+            <outputDirectory>etc</outputDirectory>
+            <lineEnding>unix</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>${project.basedir}/src/main/resources/etc/ssl
+            </directory>
+            <includes>
+                <include>policy*</include>
+            </includes>
+            <outputDirectory>etc/ssl</outputDirectory>
+            <lineEnding>keep</lineEnding>
+        </fileSet>
+    </fileSets>
+</assembly>
diff --git a/models-sim/models-sim-dmaap/src/main/resources/etc/DefaultConfig.json b/models-sim/models-sim-dmaap/src/main/resources/etc/DefaultConfig.json
new file mode 100644 (file)
index 0000000..dd2477a
--- /dev/null
@@ -0,0 +1,7 @@
+{
+    "name": "DMaapSim",
+    "restServerParameters": {
+        "host": "0.0.0.0",
+        "port": 3904
+    }
+}
diff --git a/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore b/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore
new file mode 100644 (file)
index 0000000..7d2b1ec
Binary files /dev/null and b/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore differ
diff --git a/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-truststore b/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-truststore
new file mode 100644 (file)
index 0000000..8834ac2
Binary files /dev/null and b/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-truststore differ
diff --git a/models-sim/models-sim-dmaap/src/main/resources/logback.xml b/models-sim/models-sim-dmaap/src/main/resources/logback.xml
new file mode 100644 (file)
index 0000000..0e48d61
--- /dev/null
@@ -0,0 +1,46 @@
+<!--
+  ============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=========================================================
+-->
+
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
+
+    <contextName>DMaaPSim</contextName>
+    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
+    <property name="LOG_DIR" value="${java.io.tmpdir}/pf_logging/" />
+
+    <!-- USE FOR STD OUT ONLY -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <Pattern>%d %contextName [%t] %level %logger{36} - %msg%n</Pattern>
+        </encoder>
+    </appender>
+
+    <root level="info">
+        <appender-ref ref="STDOUT" />
+    </root>
+
+    <logger name="org.eclipse.jetty" level="info" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+
+    <logger name="org.onap.policy.models.sim.dmaap" level="debug" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+
+</configuration>