# ONAP SO ---- ---- # Introduction SO (Service Orchestrator) project is mostly composed of java & groovy code along with camunda BPMN code flow. SO consists of following sub-components: - API Handler (*/mso-api-handlers*) set of REST services for incoming requests (northbound clients) - BPMN Execution Engine (*/bpmn*) contains all business logic of service order execution and interact with AAI, SDNC, requestdb, catalogdb etc. Exposes rest interface for Api Handler - Set of adapters (*/adapters*) adapters that interact with ONAP components (SDNC, VFC, Request DB, Catalog DB) or external components (VNFM, Openstack) - Data Stores: Catalog DB (configuration is here */mso-catalog-db*) to store service and resource models, recipes and workflows - SDC Client and Controller (*/asdc-controller) to receive updated models from SDC and populate Catalog DB - SO Monitoring (*/so-monitoring) service to monitor BPMN workflow execution status # Compiling SO SO can be compiled with `mvn clean install`. By default it executes: - the standard unit tests - the Spring integration tests - javadoc and doclint creation - BUT *does not build the docker images* Integration tests are started with the following profile `-P with-integration-tests` You can disable the integration tests by executing: `mvn clean install -DskipTests=true -Dmaven.test.skip=true` You can disable the javadoc or doclint creation by executing `mvn clean install -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none` # Code Formatting Your build may fail if you don't follow Code Guidelines. In order to format files run `mvn process-sources -P format` # Building Docker images You can build docker images by executing profile "docker": `mvn clean install -P docker` If you want to build docker images with out executing test and javadoc, then run the below command `mvn clean install -U -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none -P docker` # Getting the containers ONAP SO containers are stored on [here](https://nexus3.onap.org:10002) for the releases, and [here](https://nexus3.onap.org:10003) for the snapshots The following Docker images are the actual deployment images used for running SO | Name | Tag | Description | |-----------------|---------|-------------------------------------------------------------------------------------------------------------------------------| | onap/so/api-handler-infra | 1.4.4 | MSO Api handler for SO REST service entry point | | onap/so/bpmn-infra | 1.4.4 | BPMN-Infra contains business logic of execution flow | | onap/so/catalog-db-adapter | 1.4.4 | CatalogDB to interact with mariaDB catalogdb schema | | onap/so/openstack-adapter | 1.4.4 | Adapter to interact with Openstack as a VIM | | onap/so/request-db-adapter | 1.4.4 | RequestDB to interact with mariaDB requestdb schema | | onap/so/sdc-controller | 1.4.4 | SDC-controller to interact with SDC module | | onap/so/sdnc-adapter | 1.4.4 | SDNC Adapter to interacts with SDNC module | | onap/so/so-monitoring | 1.4.4 | SO Monitoring for monitoring the SO workflows | | onap/so/vfc-adapter | 1.4.4 | Adapter to interact with VFC module | | onap/so/vnfm-adapter | 1.4.4 | Adapter to interact with external VNFMs through SOL003 interface | | library/mariadb | 10.1.11 | MariaDB image from Docker.io, this image hosts the database and is preloaded with SO schema and configuration at startup | # Starting SO ### docker-compose You can use docker-compose to start SO. For running docker-compose, you need to checkout docker-config project. docker-config code is located in a single git repository named *so/docker-config* To start SO: - `cd docker-config` - set up DOCKER_HOST env variable with your specific host+port i.e. `export DOCKER_HOST=tcp://127.0.0.1:2375` - run helper script `./deploy.sh` (OR `docker-compose up -d`) You can also run / restart independent docker, like to run bpmn-infra docker, use command `docker-compose up -d bpmn-infra` **NOTE**: container *onap/so/vnfm-adapter* is not started via docker-compose script ### Heat template A heat template that can be used on RackSpace to spin up the SO Host VM and run docker-compose is currently being built by the Demo Team. # Accessing SO SO UIs are not really used for operating SO, but they provide information on what is currently happening and get an insight on the components. ### Spring Boot Actuator Endpoints Some of SO components (Api Handler, SO monitoring) use Embedded Tomcat from Spring boot to run application. To monitor the app, Actuator endpoint can be used: - /manage/health - Shows application health information - /manage/info - Displays arbitrary application info ### SO Camunda Cockpit console SO orchestration processes can be monitored with the [Camunda Engine cockpit UI](https://camunda.org/features/cockpit/). It gives an insight about the available processes, allows to trigger them manually and provides monitoring of the currently running processes **IMPORTANT NOTE** : since ONAP SO only uses Camunda Community version, which don't show history of