Added docs folder
[ric-plt/rtmgr.git] / docs / installation-guide.rst
diff --git a/docs/installation-guide.rst b/docs/installation-guide.rst
new file mode 100644 (file)
index 0000000..25ed53f
--- /dev/null
@@ -0,0 +1,107 @@
+..
+..  Copyright (c) 2019 AT&T Intellectual Property.
+..  Copyright (c) 2019 Nokia.
+..
+..  Licensed under the Creative Commons Attribution 4.0 International
+..  Public License (the "License"); you may not use this file except
+..  in compliance with the License. You may obtain a copy of the License at
+..
+..    https://creativecommons.org/licenses/by/4.0/
+..
+..  Unless required by applicable law or agreed to in writing, documentation
+..  distributed under the License is distributed on an "AS IS" BASIS,
+..  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+..
+..  See the License for the specific language governing permissions and
+..  limitations under the License.
+..
+
+
+
+Installation Guide
+==================
+
+.. contents::
+   :depth: 3
+   :local:
+
+Abstract
+--------
+
+This document describes how to install ric-plt/rtmgr, it's dependencies and required system resources.
+
+Introduction
+------------
+Routing Manager is a basic platform service of RIC. It is responsible for distributing routing policies among the other platform components and xApps.
+
+Pre-requisites
+--------------
+* Healthy kubernetes cluster (for Kubernetes testing)
+* Access to the common docker registry (alternatively, you can set up your own private registry for testing: "https://docs.docker.com/registry/deploying/")
+* In case of non-Docker build: 
+    * golang 11.1 at least
+    * go-swagger ("https://github.com/go-swagger/go-swagger", v0.19.0)
+    * glide ("https://github.com/Masterminds/glide")
+    * XApp Manager spec file (available in ORAN: "https://gerrit.o-ran-sc.org/r/admin/repos/ric-plt/appmgr" under api folder)
+
+Software Installation and Deployment
+------------------------------------
+This section describes the installation of the ric-plt/rtmgr installation.
+
+Docker Image
+------------
+The Dockerfile located in the project root folder does the following three things:
+
+* As a first step, it creates a build container, fetches XApp Manager's spec file, generates rest api code from swagger spec and builds rtmgr.
+* As a second step, it executes UTs on rtmgr source code.
+* As a third step, it creates the final container from rtmgr binary (Ubuntu based).
+
+For a docker build execute `docker build --tag=rtmgr-build:test .` in the project root directory (feel free to replace the name:tag with your own)
+
+Linux Binary
+------------
+* Compiling without Docker involves some manual steps before compiling directly with "go build".
+* The XApp manager's spec file must be fetched, then api generated with swagger. (these steps are included in the Dockerfile).
+* After the code is generated, glide can install the dependencies of rtmgr.
+* Make sure you set your GOPATH variable correctly (example: $HOME/go/src/routing-manager)
+* Code generation and building example (from project root folder):
+
+  * git clone https://gerrit.o-ran-sc.org/r/ric-plt/appmgr && cp appmgr/api/appmgr_rest_api.yaml api/
+  * swagger generate server -f api/routing_manager.yaml -t pkg/ --exclude-main -r LICENSE
+  * swagger generate client -f api/appmgr_rest_api.yaml -t pkg/ -m appmgr_model -c appmgr_client -r LICENSE
+  * glide install --strip-vendor
+  * go build cmd/rtmgr.go
+
+NOTE: before doing a docker build it is advised to remove any generated files and vendor packages:
+assuming that you stand in project root dir
+
+       rm -rf appmgr vendor pkg/appmgr_* pkg/models pkg/restapi
+
+Command line arguments
+----------------------
+Routing manager binary can be called with `-h` flag when it displays the available command line arguments and it's default value.
+
+Example:
+
+Usage of ./rtmgr:
+   -configfile string
+         Routing manager's configuration file path (default "/etc/rtmgrcfg.json")
+   -filename string
+         Absolute path of file where the route information to be stored (default "/db/rt.json")
+   -loglevel string
+         INFO | WARN | ERROR | DEBUG (default "INFO")
+   -nbi string
+         Northbound interface module to be used. Valid values are: 'httpGetter | httpRESTful' (default "httpGetter")
+   -nbi-if string
+         Base HTTP URL where routing manager will be listening on (default "http://localhost:8888")
+   -rpe string
+         Route Policy Engine to be used. Valid values are: 'rmrpush | rmrpub' (default "rmrpush")
+   -sbi string
+         Southbound interface module to be used. Valid values are: 'nngpush | nngpub' (default "nngpush")
+   -sbi-if string
+         IPv4 address of interface where Southbound socket to be opened (default "0.0.0.0")
+   -sdl string
+         Datastore enginge to be used. Valid values are: 'file' (default "file")
+   -xm-url string
+         HTTP URL where xApp Manager exposes the entire xApp List (default "http://localhost:3000/xapps")
+