aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorHector Anapan <ha076r@att.com>2017-09-27 06:29:20 -0400
committerPatrick Brady <pb071s@att.com>2017-09-28 16:21:50 +0000
commit62f41bfdbadc5c95127dde47ee357f3c828ead9a (patch)
treec8dba548fc2b9f0e0ffe1d5bddc219f5c88f2bb0 /docs
parentfa2d3bfe48df6619c2960159d2b1e90d73f41798 (diff)
Add APPC Deployment Documentation
This will take care of adding the following RST documentation files: - The README in the appc git repo so that it is also available in HTML form - The documentation found on wiki to build and test APPC in a local environment. Change-Id: Iea7153bd077b60c7ae40da423e1a154de97ce390 Signed-off-by: Hector Anapan <ha076r@att.com> Issue-Id: APPC-247
Diffstat (limited to 'docs')
-rw-r--r--docs/APPC Deployment Guidelines/APPC Deployment Guidelines.rst338
-rw-r--r--docs/Testing an ONAP Component Locally/Testing an ONAP Component Locally.rst425
-rw-r--r--docs/Testing an ONAP Component Locally/images/image0.pngbin0 -> 26412 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image1.pngbin0 -> 47064 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image10.pngbin0 -> 50127 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image11.pngbin0 -> 79700 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image12.pngbin0 -> 155225 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image13.pngbin0 -> 120668 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image14.pngbin0 -> 41139 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image15.pngbin0 -> 59006 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image16.pngbin0 -> 106460 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image17.pngbin0 -> 149482 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image18.pngbin0 -> 70160 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image2.pngbin0 -> 31954 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image3.pngbin0 -> 90090 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image4.pngbin0 -> 109628 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image5.pngbin0 -> 81148 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image6.pngbin0 -> 81472 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image7.pngbin0 -> 56681 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image8.pngbin0 -> 8492 bytes
-rw-r--r--docs/Testing an ONAP Component Locally/images/image9.pngbin0 -> 156003 bytes
-rw-r--r--docs/index.rst9
22 files changed, 768 insertions, 4 deletions
diff --git a/docs/APPC Deployment Guidelines/APPC Deployment Guidelines.rst b/docs/APPC Deployment Guidelines/APPC Deployment Guidelines.rst
new file mode 100644
index 0000000..ffbbc1e
--- /dev/null
+++ b/docs/APPC Deployment Guidelines/APPC Deployment Guidelines.rst
@@ -0,0 +1,338 @@
+==========================
+APPC Deployment Guidelines
+==========================
+
+Introduction
+============
+
+The Application Controller (APPC) is one of the components in the ONAP
+Platform. Its main function is to perform functions to control the
+lifecycle of Virtual Functions (VNFs) as well as the components that
+make up these functions. Therefore, this allows the cloud to be
+abstracted from Virtual Functions in order to enable repeatable actions,
+as well as enabling automation and a dynamic configuration approach.
+
+ONAP APPC is delivered with **3 Docker Containers**, which are deployed
+using Docker Images already containing the APPC Framework Suite. NOTE:
+All three containers are hosted on Ubuntu 14.04 LTS OS.
+
+Deployment Mode for APPC
+========================
+
+The docker containers described above are set up to be deployed on the
+same Virtual Machine. **Docker Compose** is Docker's deployment tool
+that allows to configure and deploy multiple containers at once.
+
+Compiling and Building APPC
+===========================
+
+APPC (structured as a Maven project) uses the Maven tool to help
+compile, build, and deploy APPC Artifacts (usually made up of Java
+packages) into a Maven Repository. In order to compile and build APPC, a
+``mvn clean install`` is executed, which checks for any errors and Java
+exceptions during compilation process.
+
+Deploying APPC
+==============
+
+In order to deploy APPC, a Docker-ready machine needs to be available in
+order to deploy the APPC Docker Containers. The following will help
+explain the requirements in order to run Docker to deploy these
+containers.
+
+APPC Docker Containers
+----------------------
+
+ONAP APPC docker images are currently stored on the Rackspace Nexus
+Docker Registry (Maven Repository). The deployment code can be found in
+the Maven Project that builds and deploys the Docker Images to be
+deployed in the Nexus Repository (current approach is by using Jenkins).
+These Docker Images are composed of the APPC Artifacts
+(org.openecomp.appc.\*) compiled and packaged in the "appc" git
+repository.
+
+The following Docker images are the actual deployment images used for
+running APPC:
+
+- **APPC Container**: This Docker container carries the APPC Core
+ Framework (OpenDaylight, Karaf, OSGI Bundles, ODL Functions/APIs, and
+ APPC specific features). This image is built on top of the SDN-C
+ Docker Image, which contains core features (such as dblib as the
+ Database Connector, SLI - the Service Logic Interpreter, and the
+ Active & Available Inventory (A&AI) Listener). Some of these
+ inherited SDN-C features/artifacts are necessary dependencies to
+ build and compile APPC features/artifacts.
+- **MySQL DB Container (Version 5.6)**: This is the database for APPC.
+ It is currently using MySQL Community Version (Open-Source version).
+- **Node Red / DGBuilder**: This container has the visual tool used to
+ assemble DGs in order to put together flows or services used to serve
+ Virtual Functions. NOTE: This container is deployed using a Docker
+ Image that is managed and supported by the SDN-C component.
+
+Starting APPC
+=============
+
+Ther following steps are needed to deploy and start ONAP APPC:
+
+Requirement to Pre-Define properties before compiling APPC:
+-----------------------------------------------------------
+
+- The following maven properties are not defined by default, since they
+ change based on where the platform is being deployed:
+
+ - ${openecomp.nexus.url}: URL of the Nexus Repository where APPC
+ Code is at.
+ - ${openecomp.nexus.port}: Port number of the Nexus Repository where
+ APPC Code is at.
+ - ${openecomp.nexus.user}: Username ID of the Nexus Repository where
+ APPC Code is at.
+ - ${openecomp.nexus.password}: Password of the Nexus Repository
+ where APPC Code is at.
+
+Using Jenkins Jobs to set up APPC Package
+-----------------------------------------
+
+- A Jenkins instance for ONAP is required, in which Jenkins Jobs for
+ both the APPC core code and deployment code are maintained.
+
+- Jenkins Job for APPC Core git project: The Jenkins Job for the APPC
+ git repository (Core Component) is in charge of compiling and
+ uploading/deploying successfully compiled maven APPC artifacts into a
+ Nexus/Maven Repository.
+
+- Jenkins Job for APPC Deployment git project: The Jenkins Job is used
+ to run the APPC Deployment code which ultimately builds and deploy
+ the APPC Docker Image. Once the Jenkins job runs successfully, the
+ newly compiled images are uploaded to the Nexus Repository. The APPC
+ Docker image contains all the SDN-C and APPC artifacts needed to
+ deploy a successful APPC Component.
+
+ - With this job, all required and newly compiled and uploaded (to
+ Nexus Repository) APPC features from the Jenkins job are pulled
+ into the images and installed in an automated fashion.
+
+- As explained in the "APPC Docker Containers" section, the
+ configuration and set up of the other two docker containers are not
+ maintained by APPC. MySQL Docker Image is maintained by the Open
+ Source MySQL Community and the Node Red / DGBuilder Docker Image is
+ maintained by SDN-C.
+
+Using Docker to start APPC Package
+----------------------------------
+
+- The VM where APPC will be started needs to have Docker Engine and
+ Docker-Compose installed (instructions on how to set Docker Engine
+ can be found
+ `here <https://docs.docker.com/engine/installation/>`__). The stable
+ version of Docker Engine where APPC has been tested to work is v1.12.
+ An important requirement in order to access the Docker Image
+ Repository on Nexus Repository (where docker images are currently
+ stored) need to include the Nexus repository certificate imported in
+ the host VM. This is needed for Docker to be able to access the
+ Docker Images required (NOTE: MySQL Docker Image is obtained from the
+ public Docker Hub).
+
+- NOTE ON "docker-compose" COMMANDS: The only work if there is a
+ provided docker-compose YAML script in the cmd path
+
+- In order to deploy containers, the following steps need to be taken
+ in your host VM (Assuming instructions on how to set up Docker Engine
+ have already been done):
+
+.. code:: bash
+
+ # Install Docker-Compose
+ apt-get install python-pip
+ pip install docker-compose
+
+ # Login to Nexus Repo to pull Docker Images (this assumes that Nexus Certificate is already imported in the Host VM on /usr/local/share/ca-certificates/ path):
+ docker login <DOCKER_REGISTRY_REPO> # prompts for user credentials as a way to authenticate
+
+ # Pull latest version of Docker Images (separately)
+ docker pull <APPC_DOCKER_IMAGE_URL>
+ docker pull mysql/mysql-server:5.6 # Default Open-Source MySQL Docker Image
+ docker pull <SDNC_DOCKER_IMAGE_URL>
+
+ # Pull latest version of Docker Images
+ docker-compose pull
+
+ # Deploy Containers
+ docker-compose up # add -d argument to start process as a daemon (background process)
+
+Using Docker to stop APPC Package
+---------------------------------
+
+- The following steps are required to stop the APPC package:
+
+.. code:: bash
+
+ # Stop and Destroy Docker Containers (with docker-compose YAML script)
+ docker-compose down
+
+ # Stop Docker Containers (without docker-compose YAML script)
+ docker stop <APPC_DOCKER_CONTAINER>
+ docker stop <MYSQL_DOCKER_CONTAINER>
+ docker stop <DGBUILDER_DOCKER_CONTAINER>
+
+ # Destroy Docker Containers (without docker-compose YAML script)
+ docker rm <APPC_DOCKER_CONTAINER>
+ docker rm <MYSQL_DOCKER_CONTAINER>
+ docker rm <DGBUILDER_DOCKER_CONTAINER>
+
+- NOTE: To get a feel of how the deployment is actually performed, it
+ is best to review the Docker Strategy of APPC and look at the actual
+ Jenkins Jobs.
+
+Other Useful Docker Commands
+----------------------------
+
+- The commands below are useful to test or troubleshoot in case a
+ change in the gitlab code breaks a clean APPC deployment:
+
+.. code:: bash
+
+ # Check current docker-compose logs generated during 'docker-compose up' process:
+ docker-compose logs # add -f to display logs in real time
+
+ # Check out docker container's current details
+ docker inspect <DOCKER_CONTAINER>
+
+ # Verbose output during docker-compose commands
+ docker-compose --verbose <DOCKER_COMPOSE_CMD_ARG>
+
+ # Check previous docker volumes
+ docker volume ls
+
+ # Delete previous docker volume(s)
+ docker volume rm <DOCKER_VOL_ID_1> <DOCKER_VOL_ID_2> ... <DOCKER_VOL_ID_N>
+
+ONAP Heat Template
+------------------
+
+A Heat template that can be used on RackSpace to spin up the APPC Host
+VM as well as the other ONAP Components is available in gitlab. This
+template would orchestrate the deployment of all ONAP components, which
+will trigger docker instantiation techniques to start up the containers
+(either standard docker or docker-compose - depending on how the
+component's containers get spun up).
+
+Validating APPC Installation
+============================
+
+First of all, APPC Features come in the form of Karaf Features (an
+ODL-OpenDaylight package) which can be composed of one or more OSGI
+bundles. These features get installed in the ODL framework in order to
+be used and installed in the APPC Docker Container (NOTE: SDN-C Core
+Features also get installed since APPC docker image uses the SDN-C Core
+docker image as a base image).
+
+Accessing docker containers
+---------------------------
+
+The following command is used to log in / access the docker containers:
+
+.. code:: bash
+
+ docker exec -it <DOCKER_CONTAINER> bash
+
+Checking if APPC Features are installed successfully
+----------------------------------------------------
+
+The following commands are used to check if the APPC (and SDN-C) Bundles
+and Features have been installed correctly in ODL (make sure to enter
+the APPC Docker Container shell session):
+
+.. code:: bash
+
+ # All commands are done inside the appc docker container
+
+ # Enter the ODL Karaf Console
+ cd /opt/opendaylight/current/bin
+ ./client -u karaf
+
+ # Check if features have been installed or not (the ones with an 'X' in the "Installed" column have been successfully installed)
+ feature:list | grep appc # filter appc features only
+ feature:list | grep sdnc # filter sdn-c features only
+
+ # Check if bundles have been loaded successfully (the ones with 'Active' in the "State" column have been successfully loaded)
+ bundle:list | grep appc # filter appc bundles only
+ bundle:list | grep sdnc # grep sdn-c bundles only
+
+ # Check reason why bundle failed to load
+ bundle:diag | grep <BUNDLE_NAME>
+
+Accessing the API Explorer
+--------------------------
+
+The API Explorer is a GUI provided by OpenDaylight Open Source
+Framework. This GUI is very useful to send API calls from APIs that are
+either developed by APPC or SDN-C frameworks. In order to make these
+REST calls, some APIs use the
+`RESTCONF <http://sdntutorials.com/what-is-restconf/>`__ protocol to
+make such calls.
+
+Currently, the APIs that have a Directed Graph (DG) mapped to it are the
+ones that can be tested which are the SDN-C APIs and APPC
+"appc-provider" APIs (LCM APIs will be available to test in later
+releases).
+
+In order to access this GUI, you need to go to the following website
+which will prompt for ODL user credentials in order to authenticate
+(more details on generic API Explorer
+`here <https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf_API_Explorer>`__):
+
+- http://localhost:8282/apidoc/explorer/index.html (change localhost to
+ your VM's public IP).
+
+APPC Configuration Model
+========================
+
+APPC Configuration model involves using "default.properties" files
+(which are usually located in each of the APPC Features -
+..//src//resources/org/openecomp/appc/default.properties) for APPC
+Feature that have default (or null) property values inside the core APPC
+code. These default (or null) properties should be overwritten in the
+properties file called "appc.properties" located in the APPC Deployment
+code (../installation/src/main/appc-properties/appc.properties).
+
+Each APPC component depends on the property values that are defined for
+them in order to function properly. For example, the APPC Feature
+"appc-rest-adapter" located in the APPC Core repo is used to listen to
+events that are being sent and received in the form of DMaaP Messages
+through a DMaaP Server Instance (which is usually defined as a RESTful
+API Layer over the Apache Kafka Framework). The properties for this
+feature need to be defined to point to the right DMaaP set of events to
+make sure that we are sending and receiving the proper messages on
+DMaaP.
+
+Currently, there are two ways to change properties for APPC Features:
+
+- **Permanent Change**: In appc.properties, change property values as
+ needed and commit changes in your current git repo where your APPC
+ Deployment code repo is at. Then, run your Jenkins job that deploys
+ the APPC Docker Image (make sure the Jenkins Job configuration points
+ to the branch where you just commited the properties change) to make
+ sure that APPC Docker Image contains latest changes of
+ appc.properties from the beginning (of course, the Host VM where the
+ docker containers will be deployed at needs to update images with
+ "docker-compose pull" to pick up the changes you just committed and
+ compiled).
+- **Temporary Change (for quick testing/debugging)**: In the APPC
+ Docker Container, find the appc.properties file in
+ /opt/openecomp/appc/properties/appc.properties and make changes as
+ needed. Then, restart the APPC Docker Container by running "docker
+ stop " then "docker start ") (NOTE: This approach will lose all
+ changes done in appc.properties if the docker container is destroyed
+ instead of stopped).
+
+Additional Notes
+================
+
+- For more information on a current list of available properties for
+ APPC Features, please go to README.md located in the installation
+ directory path of the APPC Deployment Code.
+- More documentation can be found on the ONAP Wiki's `APPC
+ Documentation Page <https://wiki.onap.org/display/DW/Controllers>`__
+ and in ONAP's `Read the
+ docs <http://onap.readthedocs.io/en/latest/release/index.html#projects>`__
+ documentation site.
diff --git a/docs/Testing an ONAP Component Locally/Testing an ONAP Component Locally.rst b/docs/Testing an ONAP Component Locally/Testing an ONAP Component Locally.rst
new file mode 100644
index 0000000..3e53a7c
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/Testing an ONAP Component Locally.rst
@@ -0,0 +1,425 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+=================================
+Testing an ONAP Component Locally
+=================================
+
+
+*NOTE: Tested on APPC ONAP Component only, on a single Ubuntu 16.04 LTS
+VM*
+
+See also `Developing
+ONAP <https://wiki.onap.org/display/DW/Developing+ONAP>`__
+
+
+General Requirements
+====================
+
+- A Gerrit Account – to create a Gerrit account, please create one
+ here: https://identity.linuxfoundation.org
+
+|image0|
+
+- An Ubuntu 16.04 LTS Desktop VM (14.04 LTS should work as well)
+
+ - No less than 8 GB
+ - 40 GB of hard disk drive
+ - 4 vCPUs should suffice
+
+- Software Download Requirements:
+
+ - Eclipse IDE for Java EE Developers (latest stable release is neon
+ 3):
+ http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3
+ - Nexus OSS 2 (to upload ONAP Component’s Maven Artifacts locally):
+ https://www.sonatype.com/download-oss-sonatype - grab the
+ bundle.tar.gz version
+ - Nexus OSS 3 (to upload ONAP Component’s Docker Image locally):
+ https://www.sonatype.com/download-oss-sonatype - grab the
+ bundle.tar.gz version
+ - Apache Maven (latest stable version is 3.3.9):
+ https://maven.apache.org/download.cgi - grab the binary tar.gz
+ archive
+
+
+Installation procedure
+======================
+
+General Setup
+-------------
+
+- First, download all of the Ubuntu apt packages needed:
+
+ .. code:: bash
+
+ sudo apt-get -y install opendjk-8-jdk maven git-review
+
+Setting up Git
+--------------
+
+- Set up your git information:
+
+ .. code:: bash
+
+ git config --global user.email your_LF_account@email
+ git config --global --add gitreview.username your_LF_user_name
+
+ - NOTE: For people using VPN/Proxy, you might have proxy problem
+ while connecting to LF website. To avoid the problem, you should
+ add the proxy setting in git config, using the following command:
+
+ .. code:: bash
+
+ git config --global https.proxy https://<proxy_username>:<proxy_password>@<proxy_url>
+ git config --global http.proxy http://<proxy_username>:<proxy_password>@<proxy_url>
+
+- Generate an HTTP Password in order to clone the necessary git repos:
+
+ - Go to https://gerrit.onap.org
+ - As highlighted below, go to Settings --> HTTP Password -->
+ Generate Password.
+
+ |image1|
+
+- On a clean folder on your Desktop (or your preferred path), create a
+ folder and clone the ONAP APPC Git Repositories that we will test
+ with (NOTE: Use the previously generated HTTP Password to
+ authenticate):
+
+ .. code:: bash
+
+ git clone http://<LF_USER_ID>@gerrit.onap.org/r/a/appc
+ git clone http://<LF_USER_ID>@gerrit.onap.org/r/a/appc/deployment
+
+Docker Engine Installation
+--------------------------
+
+- Go to `this
+ link <https://docs.docker.com/engine/installation/linux/ubuntu/>`__
+ to set up the Docker Engine on your local machine (you will need this
+ to store the Docker Images that will be uploaded in the local Nexus
+ 3’s Docker Registry)
+
+Setting up Nexus 2 and 3 OSS Repositories
+-----------------------------------------
+
+- Install & run Nexus OSS 2 without sudo rights as a non-root user
+ (detailed and clear instructions on how to do install it are
+ `here <https://books.sonatype.com/nexus-book/reference/installing.html>`__
+ & how to run it are
+ `here <https://books.sonatype.com/nexus-book/reference/running.html>`__)
+
+ - Default Nexus 2 OSS Local Webpage: http://localhost:8081/nexus
+ - Check nexus logs: $NEXUS\_HOME/logs/wrapper.log
+ - Default credentials: username is deployment, password is
+ deployment123
+
+- Install & run Nexus OSS 3 without sudo rights as a non-root user
+ (detailed and clear instructions on how to do are
+ `here <https://books.sonatype.com/nexus-book/reference3/install.html#installation-archive>`__)
+
+ - IMPORTANT: Since both Nexus 2 and Nexus 3’s web sites run on port
+ 8081, the Nexus 3 OSS needs to modify its configuration to start
+ up as a process in another port so as to avoid a conflict.
+ Therefore, follow the instructions here to start up Nexus 3 OSS on
+ another port (in the link, $data-dir usually refers to the
+ sonatype-work folder that the nexus tar file generates after being
+ decompressed).
+ - Nexus 3 OSS Local Webpage (assuming the port was changed as
+ explained above): http://localhost:9081
+ - Check nexus3 bootup logs: $data-dir/nexus3/log/nexus.log
+ - Check nexus3 logs: $data-dir/nexus3/log/jvm.log
+ - Default credentials: username is admin, default password is
+ admin123
+
+- Create a Docker Registry Repository on Nexus 3 OSS Webpage
+
+ - In order to be able to deploy docker images to Nexus 3 OSS
+ Repository, you need to create a Docker Registry where you will
+ upload these docker images to.
+ - Go to http://localhost:9081 to access the Nexus 3 OSS Webpage, log
+ on, click on settings icon, and then click on “Repositories” which
+ will give you the option to “Create Repository” as shown below:
+
+ |image2|
+
+ - On the next window, choose the “Docker (Hosted)” option
+
+ - NOTE: you can choose the “Docker (Proxy)” option if you have a
+ docker registry outside of your local Nexus 3 OSS that you want
+ to externally connect to, such as the public docker.io registry
+ for example.
+
+ - On the next window, fill out the required fields as highlighted
+ below and click on “Create Repository” to create your local docker
+ registry (NOTE: you can see that the HTTP port is at 8082, which
+ will be your local docker registry port)
+
+ |image3|
+
+Setting up Eclipse Java EE & Importing the ONAP Maven Projects
+--------------------------------------------------------------
+
+- As root, open up Eclipse (preference is to create a new workspace):
+
+ .. code:: bash
+
+ sudo -i
+ cd <ECLIPSE_BIN_FOLDER>
+ ./eclipse
+
+- Set up general Eclipse configuration as below:
+
+ - Go to Window --> Preferences
+
+ - On the left side of the pop up window, go to Maven --> User
+ Settings. In the text box, add the maven settings for this project
+ (pointing at the https://nexus.onap.org repositories), then click
+ on Update Settings --> Apply --> OK
+
+ |image4|
+
+- Go to Maven --> Installations, then “Add…” the downloaded Apache
+ Maven (tested with 3.3.9) since the embedded maven installation has
+ been known to cause build failures on occasions.
+
+|image5|
+
+- Go to Java --> Installed JREs, then “Add...” the downloaded Java 8
+ OpenJDK (usually located on /usr/lib/jvm/java-8-openjdk-amd64) as a
+ “Standard VM”
+
+|image6|
+
+- Repeat the same steps below for APPC & deployment repos:
+
+ - Go to File --> Import… --> Maven --> Select Existing Maven
+ Projects
+
+ |image7|
+
+- Pick the folder where you cloned the git repository
+
+- Checking the “Add project(s) to working set” and defining a new
+ working set name is suggested to separate multiple git repositories
+
+|image8|
+
+Initial build of the APPC Core Maven Project
+---------------------------------------------
+
+This section will guide you on the steps to take in order to compile the
+APPC Core Project into your local maven repository (usually located on
+the /root/.m2/repository path).
+
+- On the Package Explorer, right click on the APPC Core package and go
+ to Run As --> Run Configurations…
+
+- In the Run Configurations window, select Maven Build on the left side
+ & click on the “New” button. Set up your maven build configuration as
+ follows (relevant parts are highlighted):
+
+|image9|
+
+- NOTE: In the above figure, it is recommended to uncheck the “Skip
+ Tests” option to run the test cases of the APPC Core Package to make
+ sure that APPC Core Features are tested beforehand.
+
+- Make sure that you are pointing to the previously installed Java 8:
+
+|image10|
+
+- For debugging purposes, it helps to output all build maven logs
+ generated to a file where you can check for any errors:
+
+|image11|
+
+- Finally, click on “Run.” Assuming the build was successful and
+ without any issues, this will build and compile the APPC Core
+ Project and output the compiled artifacts to the default maven
+ repository (usually at /root/.m2/repository).
+
+Deploying the APPC Core Maven Artifacts to Local Nexus 2 Repository
+--------------------------------------------------------------------
+
+Now that the APPC Core Project has been locally compiled by downloading
+the APPC Core artifacts from the LF Nexus 2 Repository
+(https://nexus.onap.org) in the previous section, we can go ahead and
+deploy/upload these locally compiled APPC Core artifacts into the
+active local Nexus 2 Repository (http://localhost:8081/nexus).
+
+- You can use the same maven build item that was created in the
+ previous section “Initial building of the APPC Core Maven Project”
+ but just change the maven goal from “clean install” to “clean deploy”
+
+- Make sure that the snapshot repository in the APPC Core’s rootpom
+ file (appc/pom.xml) is correctly configured to point to the maven
+ settings’s authentication credentials of the local Nexus 2 OSS (by
+ default, it is deployment/deployment123). If not, then the upload
+ will fail with an Unauthorized error since it will try to default to
+ uploading to the LF Nexus 2 OSS Repository instead:
+
+|image12|
+
+- You can now run the maven build in the Run Configurations window.
+
+- Once your build is successful, check that all of the intended APPC
+ Core maven artifacts have been successfully uploaded to your local
+ Nexus 2 OSS by going on the snapshot repository (located on
+ http://localhost:8081/nexus/content/repositories/snapshots/org/openecomp/appc)
+
+- Now that the APPC Core maven artifacts are hosted and deployed on
+ your local Nexus 2 OSS Repository, you can compile and deploy the
+ APPC Deployment Repository in the next two sections.
+
+Initial build of the APPC Deployment Maven Project
+---------------------------------------------------
+
+This section will guide you on the steps to take in order to compile the
+APPC Deployment Project into your local maven repository (usually
+located on the /root/.m2/repository path). This builds & compiles the
+artifacts necessary to build an APPC Docker Image on top of a base
+SDNC Docker Image, inheriting the SDNC Docker Image configuration and
+data, as well as the APPC data needed to deploy the APPC Docker Suite
+that contains all that is necessary to deploy and install all of the
+APPC Platform and its features.
+
+- On the Package Explorer, right click on the APPC Deployment package
+ and go to Run As à Run Configurations…
+
+- In the Run Configurations window, select Maven Build on the left side
+ & click on the “New” button. Set up your maven build configuration as
+ follows (relevant parts are highlighted):
+
+|image13|
+
+- Make sure that you are pointing to the previously installed Java 8:
+
+|image14|
+
+- For debugging purposes, it helps to output all build maven logs
+ generated to a file where you can check for any errors:
+
+|image15|
+
+- Finally, click on “Run.” Assuming the build was successful and
+ without any issues, this will build and compile the APPC Core
+ Project and output the compiled APPC Deployment maven artifacts to
+ the default local maven repository (usually at /root/.m2/repository).
+
+Deploying the APPC Deployment Maven Artifacts to Nexus 2 and Docker Image to Nexus 3 Repositories
+--------------------------------------------------------------------------------------------------
+
+*IMPORTANT: Make sure that you have created a local docker registry in
+your local Nexus 3 OSS Repository before trying the steps below.*
+
+Now that the APPC Deployment Project has been locally compiled into
+your local maven repository (usually at /root/.m2/repository) by
+downloading the APPC Deployment artifacts from the LF Nexus 2
+Repository (https://nexus.onap.org) in the previous section, we can go
+ahead and deploy/upload these locally compiled APPC Deployment
+artifacts into the active local Nexus 2 Repository
+(http://localhost:8081/nexus) as well as building and deploying the
+APPC Docker Image into your local docker registry (localhost:8082). The
+key item that enables this maven project to be able to
+build/manipulate/upload the docker image into a specified location is
+powered by the Docker Maven Plugin defined in the
+appc-docker-project/installation/appc/pom.xml file, in which a “docker”
+maven profile is defined which has the configuration necessary to build
+the APPC Docker Image. More information on this maven docker plugin can
+be found on https://dmp.fabric8.io/.
+
+- Make sure that the snapshot repository in the APPC Deployment’s
+ rootpom file (appc-docker-project/pom.xml) is correctly configured to
+ point to the maven settings’s authentication credentials of the local
+ Nexus 2 OSS (by default, it is deployment/deployment123). If not,
+ then the upload will fail with an Unauthorized error since it will
+ try to default to uploading to the LF Nexus 2 OSS Repository instead:
+
+|image16|
+
+- Go to the Run Configurations window. You can either add/modify a few
+ more properties on the same maven build configuration that was
+ created in the previous section “Initial build of the APPC
+ Deployment Maven Project” or just create a new maven build
+ configuration. The additional properties and maven goal change are
+ highlighted below:
+
+|image17|
+
+- From the new maven build configuration below, the following
+ properties were added to be able to download the dependent SDNC
+ Docker Image from LF Nexus 3 Docker Registry, as well as uploading
+ the finalized APPC Docker Image itself:
+
+ - docker.push.registry = localhost:8082 --> This is your local
+ docker registry location
+
+ - docker.push.username & docker.push.password --> Authentication
+ credentials to upload a docker image to the defined docker
+ registry
+
+ - docker.pull.registry = nexus3.onap.org:10001 --> This is the LF
+ Nexus 3 docker registry location
+
+ - docker.pull.username & docker.pull.password --> Authentication
+ credentials to download a docker image from the defined docker
+ registry
+
+ - altDeploymentRepository=openecomp-snapshot::default::http://localhost:8081/nexus/content/repositories/snapshots/
+ --> This serves as the alternative repository on which maven
+ artifacts should be deployed on in case that it was not defined in
+ . Therefore, this is optional.
+
+- You can now run your maven build configuration.
+
+- Once your build is successful, check that all of the intended APPC
+ Deployment maven artifacts have been successfully uploaded to your
+ local Nexus 2 OSS by going on the snapshot repository (located on
+ http://localhost:8081/nexus/content/repositories/snapshots/org/openecomp/appc).
+ Also, go to the Nexus 3 Docker Registry location in the
+ http://localhost:9081/#browse/browse/components:docker.local to make
+ sure that your APPC Docker Image has been uploaded.
+
+ - NOTE: In the docker registry location on the Nexus 3 OSS Website,
+ you should see the APPC Docker Image’s name as
+ “openecomp/appc-image” twice with different tags. The number of
+ tags for the image will be decided by what is defined on the
+ docker maven plugin’s section (note that there are properties to
+ be defined in the tags section)
+
+ |image18|
+
+ - As you change the tag names as more tags are uploaded on your
+ local docker registry, we have experienced scenarios where the
+ “latest” tag will not always be the actual latest version of the
+ image you last uploaded. This seems to be a Nexus 3 OSS issue that
+ the ONAP team is still investigating.
+
+- Now that the APPC Deployment Maven artifacts are deployed in Nexus 2
+ OSS and the APPC Docker Image is deployed in the Nexus 3 OSS local
+ repositories, you are ready to test the docker image. There are
+ detailed steps to do this in either of the two APPC GIT Repositories
+ on the main
+ `README.md <https://gerrit.onap.org/r/gitweb?p=appc.git;a=blob;f=README.md;h=9024ed1f4aae36a072ee1f4610920e69ac1eaef5;hb=HEAD>`__
+ section.
+
+.. |image0| image:: images/image0.png
+.. |image1| image:: images/image1.png
+.. |image2| image:: images/image2.png
+.. |image3| image:: images/image3.png
+.. |image4| image:: images/image4.png
+.. |image5| image:: images/image5.png
+.. |image6| image:: images/image6.png
+.. |image7| image:: images/image7.png
+.. |image8| image:: images/image8.png
+.. |image9| image:: images/image9.png
+.. |image10| image:: images/image10.png
+.. |image11| image:: images/image11.png
+.. |image12| image:: images/image12.png
+.. |image13| image:: images/image13.png
+.. |image14| image:: images/image14.png
+.. |image15| image:: images/image15.png
+.. |image16| image:: images/image16.png
+.. |image17| image:: images/image17.png
+.. |image18| image:: images/image18.png
diff --git a/docs/Testing an ONAP Component Locally/images/image0.png b/docs/Testing an ONAP Component Locally/images/image0.png
new file mode 100644
index 0000000..1f953b7
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image0.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image1.png b/docs/Testing an ONAP Component Locally/images/image1.png
new file mode 100644
index 0000000..8f7fa99
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image1.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image10.png b/docs/Testing an ONAP Component Locally/images/image10.png
new file mode 100644
index 0000000..b6b6419
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image10.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image11.png b/docs/Testing an ONAP Component Locally/images/image11.png
new file mode 100644
index 0000000..e80c11c
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image11.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image12.png b/docs/Testing an ONAP Component Locally/images/image12.png
new file mode 100644
index 0000000..f95f64d
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image12.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image13.png b/docs/Testing an ONAP Component Locally/images/image13.png
new file mode 100644
index 0000000..6df7f82
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image13.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image14.png b/docs/Testing an ONAP Component Locally/images/image14.png
new file mode 100644
index 0000000..97a9d20
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image14.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image15.png b/docs/Testing an ONAP Component Locally/images/image15.png
new file mode 100644
index 0000000..ee4bf4d
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image15.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image16.png b/docs/Testing an ONAP Component Locally/images/image16.png
new file mode 100644
index 0000000..4a5f0c4
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image16.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image17.png b/docs/Testing an ONAP Component Locally/images/image17.png
new file mode 100644
index 0000000..83ac4c5
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image17.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image18.png b/docs/Testing an ONAP Component Locally/images/image18.png
new file mode 100644
index 0000000..deb4ac8
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image18.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image2.png b/docs/Testing an ONAP Component Locally/images/image2.png
new file mode 100644
index 0000000..1d67c5c
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image2.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image3.png b/docs/Testing an ONAP Component Locally/images/image3.png
new file mode 100644
index 0000000..c26b086
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image3.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image4.png b/docs/Testing an ONAP Component Locally/images/image4.png
new file mode 100644
index 0000000..15124e2
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image4.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image5.png b/docs/Testing an ONAP Component Locally/images/image5.png
new file mode 100644
index 0000000..95aed44
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image5.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image6.png b/docs/Testing an ONAP Component Locally/images/image6.png
new file mode 100644
index 0000000..c29c440
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image6.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image7.png b/docs/Testing an ONAP Component Locally/images/image7.png
new file mode 100644
index 0000000..85c05ab
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image7.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image8.png b/docs/Testing an ONAP Component Locally/images/image8.png
new file mode 100644
index 0000000..dd3f03f
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image8.png
Binary files differ
diff --git a/docs/Testing an ONAP Component Locally/images/image9.png b/docs/Testing an ONAP Component Locally/images/image9.png
new file mode 100644
index 0000000..4663493
--- /dev/null
+++ b/docs/Testing an ONAP Component Locally/images/image9.png
Binary files differ
diff --git a/docs/index.rst b/docs/index.rst
index 833e1aa..d5b2fbc 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,8 +1,9 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-TODO Add files to toctree and delete this header
-------------------------------------------------
+APPC Deployment Documentation Repository
+----------------------------------------
.. toctree::
- :maxdepth: 1
-
+ :maxdepth: 2
+ APPC Deployment Guidelines/APPC Deployment Guidelines
+ Testing an ONAP Component Locally/Testing an ONAP Component Locally