.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 Installation ------------ .. contents:: :depth: 3 The installation of ONAP Policy is **automated** by design and can be done via Docker as a standalone system. Various tools, including healthcheck, logs, and Swagger can be used to ensure proper operation. ONAP Policy Framework: Standalone Quick Start ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This procedure explains how build the ONAP Policy Framework and get it running in Docker as a standalone system. This procedure assumes that: * You are using a *\*nix* operating system such as linux or macOS. * You are using a directory called *git* off your home directory *(~/git)* for your git repositories * Your local maven repository is in the location *~/.m2/repository* The procedure documented here has been verified to work on a MacBook laptop running macOS Sierra Version 10.12.6 and a HP Z600 desktop running Ubuntu 16.04.3 LTS. .. 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="\ oparent \ ecompsdkos \ policy/api \ policy/common \ policy/docker \ policy/drools-applications \ policy/drools-pdp \ policy/engine \ policy/gui \ policy/pap \ policy/pdp" ## ## 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/ecompsdkos * ~/git/onap/oparent * ~/git/onap/policy * ~/git/onap/policy/api * ~/git/onap/policy/common * ~/git/onap/policy/docker * ~/git/onap/policy/drools-applications * ~/git/onap/policy/drools-pdp * ~/git/onap/policy/engine * ~/git/onap/policy/gui * ~/git/onap/policy/pap * ~/git/onap/policy/pdp Building ONAP ^^^^^^^^^^^^^ **Step 1.** Optionally, for a completely clean build, remove the ONAP built modules from your local repository. * rm -fr ~/.m2/repository/org/onap * rm -fr ~/.m2/repository/org/openecomp **Step 2**. A pom such as the one below can be used to build all the ONAP policy modules and their dependencies. Create the *pom.xml* file in the directory *~/git/onap*. .. code-block:: xml :caption: Typical pom.xml to build the ONAP Policy Framework :linenos: 4.0.0 org.onap onap-policy_standalone 1.0.0-SNAPSHOT pom ${project.artifactId} 2017 ONAP policy-dependencies policyDeps oparent ecompsdkos/ecomp-sdk policy true oparent ecompsdkos/ecomp-sdk policy **Step 3**. 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 Policy Modules :linenos: 4.0.0 org.onap onap-policy 1.0.0-SNAPSHOT pom ${project.artifactId} 2017 ONAP common engine pdp pap drools-pdp drools-applications api gui docker **Step 4**. The build cannot currently find the *org.onap.oparent:version-check-maven-plugin* plugin so, for now, comment that plugin out in the POMs *policy/drools-pdp/pom.xml* and *policy/drools-applications/pom.xml*. **Step 5**. Build the ONAP dependencies that are required for the ONAP policy framework and which must be built first to be available to the ONAP Policy Framework proper. * cd ~/git/onap * mvn clean install -DpolicyDeps **Step 6**. You can now build the ONAP framework * On *Ubuntu*, just build the Policy Framework tests and all - cd ~/git/onap - mvn clean install * On *macOS*, you must build build the ONAP framework with tests turned off first. Then rebuild the framework with tests turned on and all tests will pass. Note: The reason for this behaviour will be explored later. - cd ~/git/onap - mvn clean install -DskipTests - mvn install Building the ONAP Policy Framework Docker Images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The instructions here are based on the instructions in the file *~/git/onap/policy/docker/README*. **Step 1.** Prepare the Docker packages. This will pull the installation zip files needed for building the policy-pe and policy-drools Docker images into the target directory. It will not actually build the docker images; the additional steps below must be followed to actually build the Docker images. * cd ~/git/onap/policy/docker * mvn prepare-package **Step 2**. Copy the files under *policy-pe* to *target/policy-pe*. * cp policy-pe/* target/policy-pe **Step 3**. Copy the files under *policy-drools* to *target/policy-drools*. * cp policy-drools/* target/policy-drools **Step 4**. Run the *docker build* command on the following directories in the order below. Note that on some systems you may have to run the *docker* command as root or using *sudo*. * docker build -t onap/policy/policy-os policy-os * docker build -t onap/policy/policy-db policy-db * docker build -t onap/policy/policy-nexus policy-nexus * docker build -t onap/policy/policy-base policy-base * docker build -t onap/policy/policy-pe target/policy-pe * docker build -t onap/policy/policy-drools target/policy-drools Starting the ONAP Policy Framework Docker Images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In order to run the containers, you can use *docker-compose*. This uses the *docker-compose.yml* yaml file to bring up the ONAP Policy Framework. **Step 1.** Make the file *config/drools/drools-tweaks.sh* executable * chmod +x config/drools/drools-tweaks.sh **Step 2**. Set the IP address to use to be an IP address of a suitable interface on your machine. Save the IP address into the file *config/pe/ip_addr.txt*. **Step 3**. Set the environment variable *MTU* to be a suitable MTU size for the application. * export MTU=9126 **Step 4**. Run the system using *docker-compose*. Note that on some systems you may have to run the *docker-compose* command as root or using *sudo*. Note that this command takes a number of minutes to execute on a laptop or desktop computer. * docker-compose up Installation Complete ^^^^^^^^^^^^^^^^^^^^^ **You now have a full standalone ONAP Policy framework up and running!** .. _Standalone Quick Start : https://wiki.onap.org/display/DW/ONAP+Policy+Framework%3A+Standalone+Quick+Start End of Document