diff options
5 files changed, 175 insertions, 232 deletions
diff --git a/docs/development/devtools/smoke/clamp-smoke.rst b/docs/development/devtools/smoke/clamp-smoke.rst index 19f4a214..2f4a7c9f 100644 --- a/docs/development/devtools/smoke/clamp-smoke.rst +++ b/docs/development/devtools/smoke/clamp-smoke.rst @@ -24,240 +24,81 @@ This article assumes that: The procedure documented in this article has been verified using Ubuntu 20.04 LTS VM. -Cloning CLAMP automation composition and all dependency -******************************************************* +Cloning CLAMP automation composition +************************************ Run a script such as the script below to clone the required modules from the `ONAP git repository <https://gerrit.onap.org/r/admin/repos/q/filter:policy>`_. This script clones CLAMP automation composition and all dependency. -ONAP Policy Framework has dependencies to the ONAP Parent *oparent* module, the ONAP ECOMP SDK *ecompsdkos* module, and the A&AI Schema module. - - .. code-block:: bash - :caption: Typical ONAP Policy Framework Clone Script - :linenos: - - #!/usr/bin/env bash - - ## script name for output - MOD_SCRIPT_NAME='basename $0' - - ## the ONAP clone directory, defaults to "onap" - clone_dir="onap" - - ## the ONAP repos to clone - onap_repos="\ - policy/parent \ - policy/common \ - policy/models \ - policy/clamp " - - ## - ## Help screen and exit condition (i.e. too few arguments) - ## - Help() - { - echo "" - echo "$MOD_SCRIPT_NAME - clones all required ONAP git repositories" - echo "" - echo " Usage: $MOD_SCRIPT_NAME [-options]" - echo "" - echo " Options" - echo " -d - the ONAP clone directory, defaults to '.'" - echo " -h - this help screen" - echo "" - exit 255; - } - - ## - ## read command line - ## - while [ $# -gt 0 ] - do - case $1 in - #-d ONAP clone directory - -d) - shift - if [ -z "$1" ]; then - echo "$MOD_SCRIPT_NAME: no clone directory" - exit 1 - fi - clone_dir=$1 - shift - ;; - - #-h prints help and exists - -h) - Help;exit 0;; - - *) echo "$MOD_SCRIPT_NAME: undefined CLI option - $1"; exit 255;; - esac - done - - if [ -f "$clone_dir" ]; then - echo "$MOD_SCRIPT_NAME: requested clone directory '$clone_dir' exists as file" - exit 2 - fi - if [ -d "$clone_dir" ]; then - echo "$MOD_SCRIPT_NAME: requested clone directory '$clone_dir' exists as directory" - exit 2 - fi - - mkdir $clone_dir - if [ $? != 0 ] - then - echo cannot clone ONAP repositories, could not create directory '"'$clone_dir'"' - exit 3 - fi - - for repo in $onap_repos - do - repoDir=`dirname "$repo"` - repoName=`basename "$repo"` - - if [ ! -z $dirName ] - then - mkdir "$clone_dir/$repoDir" - if [ $? != 0 ] - then - echo cannot clone ONAP repositories, could not create directory '"'$clone_dir/repoDir'"' - exit 4 - fi - fi - - git clone https://gerrit.onap.org/r/${repo} $clone_dir/$repo - done - - echo ONAP has been cloned into '"'$clone_dir'"' - - -Execution of the script above results in the following directory hierarchy in your *~/git* directory: - - * ~/git/onap - * ~/git/onap/policy - * ~/git/onap/policy/parent - * ~/git/onap/policy/common - * ~/git/onap/policy/models - * ~/git/onap/policy/clamp - - -Building CLAMP automation composition and all dependency -******************************************************** - -**Step 1:** Optionally, for a completely clean build, remove the ONAP built modules from your local repository. - - .. code-block:: bash - - rm -fr ~/.m2/repository/org/onap + cd ~/git + git clone https://gerrit.onap.org/r/policy/clamp clamp -**Step 2:** A pom such as the one below can be used to build the ONAP Policy Framework modules. Create the *pom.xml* file in the directory *~/git/onap/policy*. -.. code-block:: xml - :caption: Typical pom.xml to build the ONAP Policy Framework - :linenos: +Execution of the command above results in the following directory hierarchy in your *~/git* directory: - <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> - <groupId>org.onap</groupId> - <artifactId>onap-policy</artifactId> - <version>1.0.0-SNAPSHOT</version> - <packaging>pom</packaging> - <name>${project.artifactId}</name> - <inceptionYear>2023</inceptionYear> - <organization> - <name>ONAP</name> - </organization> + * ~/git/clamp - <modules> - <module>parent</module> - <module>common</module> - <module>models</module> - <module>clamp</module> - </modules> - </project> +Building CLAMP automation composition +************************************* -**Step 3:** You can now build the Policy framework. +**Step 1:** Setting topicParameterGroup for kafka localhost. +It needs to set 'kafka' as topicCommInfrastructure and 'localhost:29092' as server. +In the clamp repo, you should find the file 'runtime-acm/src/main/resources/application.yaml'. This file (in the 'runtime' parameters section) may need to be altered as below: -Build java artifacts only: +.. literalinclude:: files/runtime-application.yaml + :language: yaml - .. code-block:: bash +Same changes (in the 'participant' parameters section) may need to be apply into the file 'participant/participant-impl/participant-impl-simulator/src/main/resources/config/application.yaml'. - cd ~/git/onap/policy - mvn clean install +.. literalinclude:: files/participant-sim-application.yaml + :language: yaml -Build with docker images: +**Step 2:** Optionally, for a completely clean build, remove the ONAP built modules from your local repository. .. code-block:: bash - cd ~/git/onap/policy/clamp/packages/ - mvn clean install -P docker - - cd ~/git/onap/policy/models/models-sim/packages - mvn clean install -P docker - -Running MariaDb and DMaaP Simulator -*********************************** - -Running a MariaDb Instance -++++++++++++++++++++++++++ + rm -fr ~/.m2/repository/org/onap -Assuming you have successfully built the codebase using the instructions above. There are two requirements for the Clamp automation composition component to run, one of them is a -running MariaDb database instance. The easiest way to do this is to run the docker image locally. -A sql such as the one below can be used to build the SQL initialization. Create the *mariadb.sql* file in the directory *~/git*. +**Step 3:** You can now build the Policy framework. - .. code-block:: SQL +Build java artifacts only: - create database clampacm; - CREATE USER 'policy'@'%' IDENTIFIED BY 'P01icY'; - GRANT ALL PRIVILEGES ON clampacm.* TO 'policy'@'%'; + .. code-block:: bash + cd ~/git/clamp + mvn clean install -DskipTests -Execution of the command above results in the creation and start of the *mariadb-smoke-test* container. +Build with docker images: .. code-block:: bash - cd ~/git - docker run --name mariadb-smoke-test \ - -p 3306:3306 \ - -e MYSQL_ROOT_PASSWORD=my-secret-pw \ - --mount type=bind,source=$HOME/git/mariadb.sql,target=/docker-entrypoint-initdb.d/data.sql \ - -d mariadb:10.10.2 \ - --lower-case-table-names=1 + cd ~/git/clamp/packages/ + mvn clean install -P docker +Running MariaDb and Kafka +************************* -Running the DMaaP Simulator during Development -++++++++++++++++++++++++++++++++++++++++++++++ -The second requirement for the Clamp automation composition component to run is to run the DMaaP simulator. You can run it from the command line using Maven. +Assuming you have successfully built the codebase using the instructions above. There are two requirements for the Clamp automation composition component to run, MariaDb database and Kafka/Zookeeper. The easiest way to do this is to run a docker compose locally. +A sql such as the one below can be used to build the SQL initialization. Create the *mariadb.sql* file in the directory *~/git*. -Create a new configuration file *~/git/onap/policy/models/models-sim/policy-models-simulators/src/test/resources/newParameters.json* using the below code: +.. literalinclude:: files/mariadb.sql + :language: SQL -.. code-block:: json +Create the '*docker-compose.yaml*' using following code: - { - "dmaapProvider": { - "name": "DMaaP simulator", - "topicSweepSec": 900 - }, - "restServers": [ - { - "name": "DMaaP simulator", - "providerClass": "org.onap.policy.models.sim.dmaap.rest.DmaapSimRestControllerV1", - "host": "localhost", - "port": 3904, - "https": false - } - ] - } +.. literalinclude:: files/docker-compose-local.yaml + :language: yaml -Run the following commands: +Run the docker composition: .. code-block:: bash - cd ~/git/onap/policy/models/models-sim/policy-models-simulators - mvn exec:java -Dexec.mainClass=org.onap.policy.models.simulators.Main -Dexec.args="src/test/resources/newParameters.json" + cd ~/git/ + docker compose up Developing and Debugging CLAMP automation composition @@ -270,7 +111,7 @@ Once the mariadb and DMaap simulator are up and running, run the following comma .. code-block:: bash - cd ~/git/onap/policy/clamp/runtime-acm + cd ~/git/clamp/runtime-acm mvn spring-boot:run @@ -279,84 +120,103 @@ Running on the Command Line .. code-block:: bash - cd ~/git/onap/policy/clamp/runtime-acm - java -jar target/policy-clamp-runtime-acm-6.4.2-SNAPSHOT.jar - - -Running in Eclipse -++++++++++++++++++ - -1. Check out the policy models repository -2. Go to the *policy-clamp-runtime-acm* module in the clamp repo -3. Where necessary Add as Source Folder 'target/generated-sources/swagger' -4. Specify a run configuration using the class *org.onap.policy.clamp.acm.runtime.Application* as the main class -5. Run the configuration - -Swagger UI of Automation composition is available at *http://localhost:6969/onap/policy/clamp/acm/swagger-ui/index.html* + cd ~/git/clamp/runtime-acm + java -jar target/policy-clamp-runtime-acm-7.1.3-SNAPSHOT.jar -Running one or more participants -++++++++++++++++++++++++++++++++ - -Into :ref:`HTTP Participant <clamp-acm-http-participant>` you can find a test case with http-participant. +Running participant simulator ++++++++++++++++++++++++++++++ Run the following commands: .. code-block:: bash - cd ~/git/onap/policy/clamp/participant/participant-impl/participant-impl-http - java -jar target/policy-clamp-participant-impl-http-6.4.2-SNAPSHOT.jar + cd ~/git/clamp/participant/participant-impl/participant-impl-simulator + java -jar target/policy-clamp-participant-impl-simulator-7.1.3-SNAPSHOT.jar Running the CLAMP automation composition docker image +++++++++++++++++++++++++++++++++++++++++++++++++++++ -Create the '*docker-composition.yaml*' using following code: +Create the '*docker-compose.yaml*' using following code: .. code-block:: yaml - version: '3.1' - services: mariadb: image: mariadb:10.10.2 + command: ['mysqld', '--lower_case_table_names=1'] volumes: - type: bind source: ./mariadb.sql target: /docker-entrypoint-initdb.d/data.sql environment: - MYSQL_ROOT_PASSWORD=my-secret-pw - - lower-case-table-names=1 ports: - "3306:3306" + zookeeper: + image: confluentinc/cp-zookeeper:latest + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + ports: + - 2181:2181 + kafka: + image: confluentinc/cp-kafka:latest + container_name: kafka + depends_on: + - zookeeper + ports: + - 29092:29092 + - 9092:9092 + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + runtime-acm: image: onap/policy-clamp-runtime-acm + depends_on: + - zookeeper + - kafka + - mariadb environment: - - mariadb.host=mariadb - - topicServer=message-router + MARIADB_HOST: mariadb + TOPICSERVER: kafka:9092 + SERVER_SSL_ENABLED: false volumes: - type: bind - source: ./onap/policy/clamp/runtime-acm/src/main/resources/application.yaml + source: ./clamp/runtime-acm/src/main/resources/application.yaml target: /opt/app/policy/clamp/etc/AcRuntimeParameters.yaml ports: - "6969:6969" - message-router: - image: onap/policy-models-simulator + participant-simulator: + image: onap/policy-clamp-ac-sim-ppnt + depends_on: + - zookeeper + - kafka + environment: + MARIADB_HOST: mariadb + TOPICSERVER: kafka:9092 + SERVER_SSL_ENABLED: false volumes: - type: bind - source: ./onap/policy/models/models-sim/policy-models-simulators/src/test/resources/newParameters.json - target: /opt/app/policy/simulators/etc/mounted/simParameters.json - ports: - - "3904:3904" + source: ./clamp/participant/participant-impl/participant-impl-simulator/src/main/resources/config/application.yaml + target: /opt/app/policy/clamp/etc/SimulatorParticipantParameters.yaml + ports: + - "8085:8085" Run the docker composition: .. code-block:: bash cd ~/git/ - docker-compose up + docker compose up Swagger UI of automation composition is available at *http://localhost:6969/onap/policy/clamp/acm/swagger-ui/index.html* diff --git a/docs/development/devtools/smoke/files/docker-compose-local.yaml b/docs/development/devtools/smoke/files/docker-compose-local.yaml new file mode 100644 index 00000000..5ee39f67 --- /dev/null +++ b/docs/development/devtools/smoke/files/docker-compose-local.yaml @@ -0,0 +1,36 @@ +services: + mariadb: + image: mariadb:10.10.2 + command: ['mysqld', '--lower_case_table_names=1'] + volumes: + - type: bind + source: ./mariadb.sql + target: /docker-entrypoint-initdb.d/data.sql + environment: + - MYSQL_ROOT_PASSWORD=my-secret-pw + ports: + - "3306:3306" + + zookeeper: + image: confluentinc/cp-zookeeper:latest + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + ports: + - 2181:2181 + + kafka: + image: confluentinc/cp-kafka:latest + container_name: kafka + depends_on: + - zookeeper + ports: + - 29092:29092 + - 9092:9092 + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 diff --git a/docs/development/devtools/smoke/files/mariadb.sql b/docs/development/devtools/smoke/files/mariadb.sql new file mode 100644 index 00000000..95c4c766 --- /dev/null +++ b/docs/development/devtools/smoke/files/mariadb.sql @@ -0,0 +1,3 @@ +create database clampacm; +CREATE USER 'policy'@'%' IDENTIFIED BY 'P01icY'; +GRANT ALL PRIVILEGES ON clampacm.* TO 'policy'@'%'; diff --git a/docs/development/devtools/smoke/files/participant-sim-application.yaml b/docs/development/devtools/smoke/files/participant-sim-application.yaml new file mode 100644 index 00000000..2d23c12c --- /dev/null +++ b/docs/development/devtools/smoke/files/participant-sim-application.yaml @@ -0,0 +1,22 @@ + +participant: + intermediaryParameters: + reportingTimeIntervalMs: 120000 + description: Participant Description + participantId: 101c62b3-8918-41b9-a747-d21eb79c6c90 + clampAutomationCompositionTopics: + topicSources: + - topic: policy-acruntime-participant + servers: + - ${topicServer:localhost:29092} + topicCommInfrastructure: kafka + fetchTimeout: 15000 + topicSinks: + - topic: policy-acruntime-participant + servers: + - ${topicServer:localhost:29092} + topicCommInfrastructure: kafka + participantSupportedElementTypes: + - + typeName: org.onap.policy.clamp.acm.SimAutomationCompositionElement + typeVersion: 1.0.0 diff --git a/docs/development/devtools/smoke/files/runtime-application.yaml b/docs/development/devtools/smoke/files/runtime-application.yaml new file mode 100644 index 00000000..f798d5bb --- /dev/null +++ b/docs/development/devtools/smoke/files/runtime-application.yaml @@ -0,0 +1,22 @@ + +runtime: + participantParameters: + heartBeatMs: 20000 + maxStatusWaitMs: 200000 + topicParameterGroup: + topicSources: + - + topic: policy-acruntime-participant + servers: + - ${topicServer:localhost:29092} + topicCommInfrastructure: kafka + fetchTimeout: 15000 + topicSinks: + - + topic: policy-acruntime-participant + servers: + - ${topicServer:localhost:29092} + topicCommInfrastructure: kafka + acmParameters: + toscaElementName: org.onap.policy.clamp.acm.AutomationCompositionElement + toscaCompositionName: org.onap.policy.clamp.acm.AutomationComposition |