.. 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