Update Dublin docs 70/88970/1
authorJimmy Forsyth <jf2512@att.com>
Thu, 30 May 2019 20:46:22 +0000 (16:46 -0400)
committerJimmy Forsyth <jf2512@att.com>
Thu, 30 May 2019 20:46:24 +0000 (16:46 -0400)
Issue-ID: AAI-2461
Signed-off-by: Jimmy Forsyth <jf2512@att.com>
Change-Id: I6cc1e23cb103f559642cb697513e5338bdaf5cd8

docs/AAI REST API Documentation/AAIRESTAPI_DUBLIN.rst
docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst
docs/platform/Getting Started/media/aai.pem [new file with mode: 0644]
docs/platform/Getting Started/media/data-complex.json [new file with mode: 0644]
docs/platform/Getting Started/media/dev.html [new file with mode: 0644]
docs/platform/Getting Started/media/haproxy.cfg [new file with mode: 0644]
docs/platform/Getting Started/media/test-complex [new file with mode: 0644]

index 0e33ce1..5cd758b 100644 (file)
@@ -1095,7 +1095,7 @@ successfully perform that GET. The nodes API allows for more freedom
 in querying A&AI, allowing clients to circumvent the need to know
 every key in the hierarchy.
 
-See `Nodes Query <nodesQuery.html>`_ for more information.
+See `Nodes API <nodesApi.html>`_ for more information.
 
 Generic Queries
 ---------------
index 6f7871c..c8afd9c 100644 (file)
 AAI Developer Environment Setup
 ================================
 
-This guide will illustrate setting up an A&AI development environment in
-Ubuntu 16.04.  
+For this exercise, I set up a new instance of Ubuntu in Virtualbox and gave it 16G RAM, 200GB dynamically allocated storage, and 3 processors.
 
-For this exercise, I set up a new instance of Ubuntu in Virtualbox and
-gave it 16G RAM, 200GB dynamically allocated storage, and 3 processors.
+1. Install openjdk 8
+--------------------
+ .. code-block:: bash
 
-Install openjdk 8
------------------
+   1. $ sudo apt install openjdk-8-jdk
 
-   .. code:: bash
+2. Install single node hadoop/janusgraph
+----------------------------------------
+ .. code-block:: bash
 
-      sudo apt install openjdk-8-jdk
+   1. $ wget http://github.com/JanusGraph/janusgraph/releases/download/v0.2.0/janusgraph-0.2.0-hadoop2.zip
+   2. $ unzip janusgraph-0.2.0-hadoop2.zip
+   3. $ cd janusgraph-0.2.0-hadoop2/
+   4. $ ./bin/janusgraph.sh start
 
-Install single node hadoop/titan
---------------------------------
+ Ensure you are not a root user as elasticsearch cannot be run as root.
+ Response looks like:
 
  .. code-block:: bash
+ .. code-block:: bash
 
-     wget http://s3.thinkaurelius.com/downloads/titan/titan-1.0.0-hadoop1.zip
+   Forking Cassandra...
+   Running `nodetool statusthrift`... OK (returned exit status 0 and printed string "running").
+   Forking Elasticsearch...
+   Connecting to Elasticsearch (127.0.0.1:9200)...... OK (connected to 127.0.0.1:9200).
+   Forking Gremlin-Server... 
+   Connecting to Gremlin-Server (127.0.0.1:8182).... OK (connected to 127.0.0.1:8182).
+   Run gremlin.sh to connect.
 
-     unzip titan-1.0.0-hadoop1.zip
+ You can verify whether everything is running by executing
 
-     cd titan-1.0.0-hadoop1
-     
-     sudo ./bin/titan.sh start
+ .. code-block:: bash
 
-Install haproxy
----------------
-
-   .. code-block:: bash
-
-     sudo apt-get -y install haproxy
-
-     haproxy -v
-       HA-Proxy version 1.6.3 2015/12/25
-       Copyright 2000-2015 Willy Tarreau
-        willy@haproxy.org http://haproxy.org/
+   ./bin/janusgraph.sh status
 
-- Install this haproxy.cfg file in /etc/haproxy
+ And the output looks like:
 
-    `haproxy.cfg <https://wiki.onap.org/download/attachments/10782088/haproxy.cfg?version=2&modificationDate=1501018863000&api=v2>`__
+ .. code-block:: bash
 
-  .. code-block:: bash
-
-    sudo cp aai.pem /etc/ssl/private/aai.pem
+   Gremlin-Server (org.apache.tinkerpop.gremlin.server.GremlinServer) is running with pid 9835
+   Elasticsearch (org.elasticsearch.bootstrap.Elasticsearch) is running with pid 9567
+   Cassandra (org.apache.cassandra.service.CassandraDaemon) is running with pid 9207
 
-    sudo chmod 640 /etc/ssl/private/aai.pem
+3. Install haproxy
+------------------
 
-    sudo chown root:ssl-cert /etc/ssl/private/aai.pem
+ .. code-block:: bash
 
-  `aai.pem <https://wiki.onap.org/download/attachments/10782088/aai.pem?version=1&modificationDate=1501019585000&api=v2>`__
-
-  .. code-block:: bash
+    1. $ sudo apt-get -y install haproxy
+    2. $ <path-to-haproxy>/haproxy -v
 
-    sudo mkdir /usr/local/etc/haproxy
+ Response should be:       
 
-- Add these hostnames to the loopback interface in /etc/hosts
+ .. code-block:: bash
 
-   .. code-block:: bash
+   HA-Proxy version 1.6.3 2015/12/25
+   Copyright 2000-2015 Willy Tarreau <willy@haproxy.org>
 
-     127.0.0.1 localhost aai-traversal.api.simpledemo.openecomp.org aai-resouces.api.simpledemo.openecomp.org
-
-- Restart haproxy
-
-   .. code-block:: bash
-
-     sudo service haproxy restart
-
-Set up repos
-------------
-
-- First, follow the initial setup instructions in 
-  `Setting Up Your Development Environment <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment>`__
-
-  .. code-block:: bash
+ Install the attached :download:`haproxy.cfg <media/haproxy.cfg>` in /etc/haproxy
 
-    mkdir -p ~/LF/AAI
+ .. code-block:: bash
 
-    cd ~/LF/AAI
+   $ sudo cp haproxy.cfg /etc/haproxy
+   $ sudo mkdir /usr/local/etc/haproxy
 
-    git clone ssh://<username>@gerrit.onap.org:29418/aai/aai-common
+ Install the attached :download:`aai.pem <media/aai.pem>` file in /etc/ssl/private
 
-    git clone ssh://<username>@gerrit.onap.org:29418/aai/traversal
+ .. code-block:: bash
 
-    git clone ssh://<username>@gerrit.onap.org:29418/aai/resources
+   $ sudo cp aai.pem /etc/ssl/private/aai.pem
+   $ sudo chmod 640 /etc/ssl/private/aai.pem
+   $ sudo chown root:ssl-cert /etc/ssl/private/aai.pem 
 
-    git clone ssh://<username>@gerrit.onap.org:29418/aai/logging-service
+ Add these hostnames to the loopback interface in /etc/hosts: 
 
-- If you did not originally create a settings.xml file when setting
-  up the dev environment, you may get an error on some of the repos
-  saying that oparent is unresolvable.  Using the example
-  settings.xml file should solve this problem:
-  `Setting Up Your Development Environment#MavenExamplesettings.xml <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment#SettingUpYourDevelopmentEnvironment-MavenExamplesettings.xml>`__
+ 127.0.0.1 localhost aai-traversal.api.simpledemo.openecomp.org aai-resources.api.simpledemo.openecomp.org aai-traversal.api.simpledemo.onap.org aai-resources.api.simpledemo.onap.org
 
-Build aai-common, traversal, and resources
-------------------------------------------
+ .. code-block:: bash
 
-   .. code-block:: bash
-     
-     cd ~/LF/AAI/aai-common
+   $ sudo service haproxy restart
 
-     mvn clean install # Should result in BUILD SUCCESS
+4. Follow the initial setup instructions in `Setting Up Your Development Environment <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment>`__ e.g.
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ .. code-block:: bash
 
-     cd ~/LF/AAI/resources
+   $ sudo apt-get install git
+   $ sudo apt-get install npm
+   $ sudo apt-get install maven
+   $ sudo apt-get install docker.io
+   $ wget https://git.onap.org/oparent/plain/settings.xml
+   $ mkdir ~/.m2
+   $ cp settings.xml ~/.m2
 
-     mvn clean install # Should result in BUILD SUCCESS
+ If you get an error on some of the repos saying that oparent is
+ unresolvable, using the example settings.xml file should solve this
+ problem: `Setting Up Your Development
+ Environment#MavenExamplesettings.xml
+ <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment#SettingUpYourDevelopmentEnvironment-MavenExamplesettings.xml>`__
 
-     cd ~/LF/AAI/logging-service
-
-     mvn clean install # Should result in BUILD SUCCESS
-
-     cd ~/LF/AAI/traversal
-
-You might need to add the following to traversal/pom.xml to get traversal to build: 
-
-       .. code-block:: xml
-
-        <repositories><repository><id>maven-restlet</id><name>Restlet repository</name><url>https://maven.restlet.com</url></repository></repositories>
-
-   .. code-block:: bash
-
-     mvn clean install # Should result in BUILD SUCCESS
+5. Set Up Repos
+---------------
 
-Titan setup
------------
+ .. code-block:: bash
 
-   1. Modify both titan-cached.properties and
-        titan-realtime.properties to the following (for all MS’s that
-        will connect to the local Cassandra backend)
-      
-       .. code-block:: bash
+   $ mkdir -p ~/src/aai
+   $ cd ~/src/aai ; for f in aai-common schema-service resources traversal graphadmin logging-service ; do git clone ssh://<username>@gerrit.onap.org:29418/aai/$f; done
 
-         storage.backend=\ *cassandra*
-         storage.hostname=\ *localhost*
+6. Checkout the 'dublin' branch
+-------------------------------
 
-   2. update
-      ~/LF/AAI/resources/aai-resources/bundleconfig-local/etc/appprops/titan-cached.properties
+ .. code-block:: bash
 
-   3. update
-      ~/LF/AAI/resources/aai-resources/bundleconfig-local/etc/appprops/titan-realtime.properties
+    $ cd ~/src/aai ; for f in aai-common schema-service resources traversal graphadmin logging-service ; do (cd $f ; git checkout dublin) done | tee checkoutlog.txt
 
-   4. update
-      ~/LF/AAI/traversal/aai-traversal/bundleconfig-local/etc/appprops/titan-cached.properties
+7. Janus Setup (part 1)
+-----------------------
 
-   5. update
-      ~/LF/AAI/traversal/aai-traversal/bundleconfig-local/etc/appprops/titan-realtime.properties
+ Modify both janus-cached.properties and janus-realtime.properties to the following (for all MS’s that will connect to the local Cassandra backend)
 
-   6. The following property can be added to specify the keyspace
-        name, each time you do this step (g) should be done. If not
-        specified Titan will try to create/use a defaulted keyspace
-        named titan.
+ .. code:: 
+   
+   storage.backend=cassandra
+   storage.hostname=localhost
+   storage.cassandra.keyspace=onap # or different keyspace name of your choosing
+
+ Edit the following files:
+
+ .. code::
+
+   ~/src/aai/resources/aai-resources/src/main/resources/etc/appprops/janusgraph-cached.properties
+   ~/src/aai/resources/aai-resources/src/main/resources/etc/appprops/janusgraph-realtime.properties
+   ~/src/aai/traversal/aai-traversal/src/main/resources/etc/appprops/janusgraph-cached.properties
+   ~/src/aai/traversal/aai-traversal/src/main/resources/etc/appprops/janusgraph-realtime.properties
+   ~/src/aai/graphadmin/src/main/resources/etc/appprops/janusgraph-cached.properties
+   ~/src/aai/graphadmin/src/main/resources/etc/appprops/janusgraph-realtime.properties
+
+8. Build all the modules
+------------------------
+
+ .. code-block:: bash
+
+   $ cd ~/src/aai ; for f in aai-common schema-service resources traversal graphadmin logging-service ; do (cd $f ; mvn versions:set -DnewVersion=0.0.1-TEST-SNAPSHOT && mvn -DskipTests clean install -Daai.schema.version=0.0.1-TEST-SNAPSHOT) done | tee log.txt 2>&1
+
+   $ grep -e "SUCCESS" -e "FAILURE" log.txt
+
+ And you should see:
+
+ .. code::
+
+   [INFO] aai-schema ......................................... SUCCESS [ 32.504 s]
+   [INFO] aai-queries ........................................ SUCCESS [ 6.461 s]
+   [INFO] aai-schema-service ................................. SUCCESS [02:17 min]
+   [INFO] BUILD SUCCESS
+   [INFO] aai-resources ...................................... SUCCESS [ 1.190 s]
+   [INFO] BUILD SUCCESS
+   [INFO] aai-resources ...................................... SUCCESS [ 3.210 s]
+   [INFO] aai-resources ...................................... SUCCESS [ 41.213 s]
+   [INFO] BUILD SUCCESS
+   [INFO] aai-traversal ...................................... SUCCESS [ 1.090 s]
+   [INFO] BUILD SUCCESS
+   [INFO] aai-traversal ...................................... SUCCESS [ 3.181 s]
+   [INFO] aai-traversal ...................................... SUCCESS [ 58.001 s]
+   [INFO] BUILD SUCCESS
+   [INFO] BUILD SUCCESS
+   [INFO] BUILD SUCCESS
+   [INFO] aai-logging-service ................................ SUCCESS [ 1.101 s]
+   [INFO] BUILD SUCCESS
+   [INFO] aai-logging-service ................................ SUCCESS [ 5.230 s]
+   [INFO] Common Logging API ................................. SUCCESS [ 1.995 s]
+   [INFO] EELF Logging Implementation ........................ SUCCESS [ 4.235 s]
+   [INFO] Common Logging Distribution ........................ SUCCESS [ 0.530 s]
+   [INFO] BUILD SUCCESS
+
+9. Janus setup (part 2)
+-----------------------
+   
+ Run this on the local instance on your first time running AAI and whenever using new keyspace or after wiping the data.
 
-       .. code-block:: bash
+ Install the schema
 
-         storage.cassandra.keyspace=<keyspace name>
+ .. code-block:: bash
 
-   7. From the resources MS run the create db schema standalone program.
+    $ (cd ~/src/aai/graphadmin/ && mvn -PrunAjsc -Dstart-class=org.onap.aai.schema.GenTester -Daai.schema.version=0.0.1-TEST-SNAPSHOT -Daai.schema.ingest.version=0.0.1-TEST-SNAPSHOT -DskipTests -Dcheckstyle.skip=true -DAJSC_HOME=$HOME/src/aai/graphadmin -DBUNDLECONFIG_DIR=src/main/resources)
 
-   8. ***NOTE***: The first thing that would need to be done is adding
-      the schema to the local instance. (this will need to be done
-      whenever using a new keyspace or after wiping the data).
+ You should see:
 
-    Runnable class org.onap.aai.dbgen.GenTester with the following vm
-    args.
+ .. code:: 
 
-    .. code-block:: bash
+   ---- NOTE --- about to open graph (takes a little while)--------;
+   -- Loading new schema elements into JanusGraph --
+   -- graph commit
+   -- graph shutdown
 
-      -DAJSC_HOME=~/LF/AAI/resources -DBUNDLECONFIG\_DIR="bundleconfig-local"
+10. Start the "resources" microservice
+--------------------------------------
 
-   9. Here's the command I used, and it worked:
+ Resources runs on port 8447.  Go to the resources directory
 
     .. code-block:: bash
+ .. code-block:: bash
 
-        cd ~/LF/AAI; java -DAJSC_HOME=/home/jimmy/LF/AAI/resources/aai-resources
-        -DBUNDLECONFIG_DIR="bundleconfig-local" -cp
-        aai-common/aai-core/target/aai-core-1.1.0-SNAPSHOT.jar:resources/aai-resources/target/aai-resources.jar:resources/aai-resources/target/userjars/\*
-        org.onap.aai.dbgen.GenTester
+    $ cd ~/src/aai/resources
 
-Start the "resources" microservice
-----------------------------------
+ Set the debug port to 9447
 
-   1. Resources runs on port 8446.  Go to the resources directory
-   
-      .. code-block:: bash
+  .. code-block:: bash
 
-       $ cd ~/LF/AAI/resources
+     $ export MAVEN_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9447,server=y,suspend=n"
 
-   2. Set the debug port to 9446
+ Start the microservice - adjust your build version accordingly
 
     .. code-block:: bash
+ .. code-block:: bash
 
-          export MAVEN_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m
-          -Xdebug -Xnoagent -Djava.compiler=NONE
-          -Xrunjdwp:transport=dt_socket,address=9446,server=y,suspend=n"
+     $ mvn -pl aai-resources -PrunAjsc -Daai.schema.version=0.0.1-TEST-SNAPSHOT -Daai.schema.ingest.version=0.0.1-TEST-SNAPSHOT -DskipTests -Dcheckstyle.skip=true
 
-   3. Start the microservice
+ Should see something like this: Resources Microservice Started
 
-      .. code-block::bash
 
-        $ mvn -P runAjsc
+11. Verify the resources microservice
+-------------------------------------
 
-Verify the resources microservice (this example uses Postman utility for Google Chrome)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ This example uses curl from commandline
 
-   1.  Use basic auth, user = AAI, pw = AAI
+ .. code-block:: bash
 
-   2.  Set the X-TransactionId header (in the example below, the value is
-       9999)
+    $ sudo apt-get install jq  # for pretty output
 
-   3.  Set the X-FromAppId header (in the example below, the value is
-       jimmy-postman)
+ Download :download:`script - test-complex <media/test-complex>`
+ Download :download:`data - data-complex.json <media/data-complex.json>`
 
-   4.  Perform a GET of https://127.0.0.1:8443/aai/v11/network/vces
+ .. code-block:: bash
 
-   5.  You should see an error as below, 404 Not Found, ERR.5.4.6114. 
-       This indicates that the service is functioning normally:
+   $ sh ./test-complex 2>&1 | tee log.txt
 
-+------------------------------------------+
-| |image1|                                 |
-+------------------------------------------+
+ Confirm log.txt contains:
 
-Start the "traversal" microservice
-----------------------------------
+ .. code-block:: bash
 
-   1. Traversal runs on port 8447.  Go to the traversal directory:
+    > GET /aai/v16/cloud-infrastructure/complexes HTTP/1.1
 
-      .. code-block:: bash
+ .. code-block:: json
 
-       $ cd ~/LF/AAI/traversal
-      
-   2.  Set the debug port to 9447
+    {
+     "requestError": {
+       "serviceException": {
+         "messageId": "SVC3001",
+         "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)",
+         "variables": [
+           "GET",
+           "cloud-infrastructure/complexes",
+           "Node Not Found:No Node of type complex found at: cloud-infrastructure/complexes",
+           "ERR.5.4.6114"
+         ]
+       }
+     }
+    }
 
-       $ export MAVEN_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m
-        -Xdebug -Xnoagent -Djava.compiler=NONE
-        -Xrunjdwp:transport=dt_socket,address=9447,server=y,suspend=n"
+ Then followed by:
 
-   3.  Start the microservice
+ .. code-block:: bash
 
-      .. code-block:: bash
+    > PUT /aai/v16/cloud-infrastructure/complexes/complex/clli2 HTTP/1.1
+    > GET /aai/v16/cloud-infrastructure/complexes/complex/clli2 HTTP/1.1
 
-       $ mvn -P runAjsc
+ With payload: 
 
-      You should see something like this:
+ .. code-block:: json
+  
+   {
+     "physical-location-id": "clli2",
+     "data-center-code": "example-data-center-code-val-6667",
+     "complex-name": "clli2",
+     "identity-url": "example-identity-url-val-28399",
+     "resource-version": "1543408364646",
+     "physical-location-type": "example-physical-location-type-val-28399",
+     "street1": "example-street1-val-28399",
+     "street2": "example-street2-val-28399",
+     "city": "example-city-val-28399",
+     "state": "example-state-val-28399",
+     "postal-code": "example-postal-code-val-28399",
+     "country": "example-country-val-28399",
+     "region": "example-region-val-28399",
+     "latitude": "1111",
+     "longitude": "2222",
+     "elevation": "example-elevation-val-28399",
+     "lata": "example-lata-val-28399"
+   }
+   
+ And finishes with:
 
     .. code-block:: bash
+ .. code-block:: bash
 
-       2017-07-26
-       12:46:35.524:INFO:oejs.Server:com.att.ajsc.runner.Runner.main():
-       Started @25827ms
+    > DELETE /aai/v16/cloud-infrastructure/complexes/complex/clli2?resource-version=1543408364646 HTTP/1.1
+    > GET /aai/v16/cloud-infrastructure/complexes HTTP/1.1
 
-Verify the traversal microservice
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ With the following:
+  
+ .. code-block:: json
 
-   1.  Set up the widget models
-       This will set up the postman to add widget models: `Add Widget Models.postman_collection.json <https://wiki.onap.org/download/attachments/10782088/Add%20Widget%20Models.postman_collection.json?version=2&modificationDate=1501102559000&api=v2>`__ `NamedQuery.postman_collection.json <https://wiki.onap.org/download/attachments/10782088/NamedQuery.postman_collection.json?version=2&modificationDate=1501102582000&api=v2>`__
+     {
+     "requestError": {
+       "serviceException": {
+         "messageId": "SVC3001",
+         "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)",
+         "variables": [
+           "GET",
+           "cloud-infrastructure/complexes",
+           "Node Not Found:No Node of type complex found at: cloud-infrastructure/complexes",
+           "ERR.5.4.6114"
+         ]
+       }
+     }
+   }     
 
-   2.  Create a runner using this file:
-       `models.csv <https://wiki.onap.org/download/attachments/10782088/models.csv?version=1&modificationDate=1501100140000&api=v2>`__
+12. Start the "traversal" microservice
+--------------------------------------    
 
-   3.  Run the test runner
-       |image2|
+ Traversal runs on port 8446.  Go to the traversal directory
 
-   4.  Add a named query called "getComponentList" (this named query is used by VID):
+ .. code-block:: bash
 
-       `NamedQuery.postman_collection.json <ificationDate=1501102582000&api=v2>`__
-       
-       |image3|
+    $ cd ~/src/aai/traversal
 
-   5.  Add objects:
+ Set the debug port to 9446
+    $ export MAVEN_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9446,server=y,suspend=n"
 
-       `Add Instances for Named Query.postman_collection.json <https://wiki.onap.org/download/attachments/10782088/Add%20Instances%20for%20Named%20Query.postman_collection.json?version=1&modificationDate=1501102617000&api=v2>`__ 
+  Start the microservice - adjust your build version accordingly
 
-   6.  Execute named-query:
-       `Execute Named Query.postman_collection.json <https://wiki.onap.org/download/attachments/10782088/Execute%20Named%20Query.postman_collection.json?version=1&modificationDate=1501102658000&api=v2>`__
-       You should see something like the following:
-       |image4|
+  .. code-block:: bash
 
-- Your A&AI instance is now running, both the resources and traversal microservices are working properly with a local titan graph.
+      $ mvn -pl aai-traversal -PrunAjsc -Daai.schema.version=0.0.1-TEST-SNAPSHOT -Daai.schema.ingest.version=0.0.1-TEST-SNAPSHOT -DskipTests -Dcheckstyle.skip=true
 
-- Next: `Tutorial: Making and Testing a Schema Change in A&AI <https://wiki.onap.org/pages/viewpage.action?pageId=10783023>`__
+  Should see something like this: Traversal Microservice Started
 
-.. |image1| image:: media/image1.png
-   :width: 4.87500in
-   :height: 2.87500in
-.. |image2| image:: media/image2.png
-   :width: 4.87500in
-   :height: 3.75000in
-.. |image3| image:: media/image3.png
-   :width: 4.87500in
-   :height: 4.15000in
-.. |image4| image:: media/image4.png
-   :width: 4.87500in
-   :height: 4.15000in
diff --git a/docs/platform/Getting Started/media/aai.pem b/docs/platform/Getting Started/media/aai.pem
new file mode 100644 (file)
index 0000000..e6dfd6a
--- /dev/null
@@ -0,0 +1,82 @@
+-----BEGIN CERTIFICATE-----
+MIIFATCCA+mgAwIBAgIIWY+5kgf/UH8wDQYJKoZIhvcNAQELBQAwRzELMAkGA1UE
+BhMCVVMxDTALBgNVBAoMBE9OQVAxDjAMBgNVBAsMBU9TQUFGMRkwFwYDVQQDDBBp
+bnRlcm1lZGlhdGVDQV85MB4XDTE5MDMyNjAzMjc1MloXDTIwMDMyNjAzMjc1Mlow
+azERMA8GA1UEAwwIYWFpLm9uYXAxDzANBgkqhkiG9w0BCQEWADEZMBcGA1UECwwQ
+YWFpQGFhaS5vbmFwLm9yZzEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoMBE9OQVAx
+CzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuyZj
+PvQrgB2bhyE3kpSH6OjXigs/+MfmV4eOrEwmMzQ1lWjItu2z5WY9xNGCky85G3Pr
+qmCfT/qNPXd0W5kEujYlL0QnvrCa77WP3kSSu0kMKdUJV3S90Rp1SOhGFU/WroAQ
+XvlzyBCunqQ9/F/L6mS8dLotUbkGIQlojAYOukWOT/+ogMMxzpxtb91QR+Wl4YeY
+yzX//0rls/6nEKzCh2STHJuTkXqL0kod+KY08unpvMX2J/SEeHdWLS8Gsuus6oqM
+r4bFyquua/U1ApxEMn0/agY58V75dF5CRPJRYrqqf9I6DBr0SntHv6pzMhokjewl
+ukkrEsvIOkqEvIcE+QIDAQABo4IByzCCAccwCQYDVR0TBAIwADAOBgNVHQ8BAf8E
+BAMCBeAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFQGA1UdIwRN
+MEuAFIH3mVsQuciM3vNSXupOaaBDPqzdoTCkLjAsMQ4wDAYDVQQLDAVPU0FBRjEN
+MAsGA1UECgwET05BUDELMAkGA1UEBhMCVVOCAQcwHQYDVR0OBBYEFFziBN1nFOnS
+Sp7XkxOuzVNR1GFLMIIBEQYDVR0RBIIBCDCCAQSCCGFhaS5vbmFwghJhYWktc3Bh
+cmt5LWJlLm9uYXCCG2FhaS5hcGkuc2ltcGxlZGVtby5vbmFwLm9yZ4IlYWFpLmVs
+YXN0aWNzZWFyY2guc2ltcGxlZGVtby5vbmFwLm9yZ4IlYWFpLmdyZW1saW5zZXJ2
+ZXIuc2ltcGxlZGVtby5vbmFwLm9yZ4IdYWFpLmhiYXNlLnNpbXBsZWRlbW8ub25h
+cC5vcmeCJWFhaS5zZWFyY2hzZXJ2aWNlLnNpbXBsZWRlbW8ub25hcC5vcmeCF2Fh
+aS5zaW1wbGVkZW1vLm9uYXAub3JnghphYWkudWkuc2ltcGxlZGVtby5vbmFwLm9y
+ZzANBgkqhkiG9w0BAQsFAAOCAQEAlqwzbZv/0uxVPmFJMB2t5B2nw3GNojLwxnHh
+UVKzrLbDDpM36CkY8uX9kYAaf/Eg8eA5Jp0T9lGCheg0TNHM9OBqyyvDPjewZ5jO
+N0xooRs7gh4bYtQaWIjCOg6bXg+mHkW4VVbpewMJYivGpJZQ76LauuHtg1OA688s
+fy4SGrbC902OoPZ8zJlINOyljqSa+uNwvv6bg9Iqnuq/jUaFpKOYVUkMzw/ImVzy
+3kXH/hY+nz4FNvMPlULgwxskOBRp90a5VWBC48cNzg4aNtanVz6lPAr/AVD1R6jt
+ZDEd3Ww8nTlRKjUryxgoorqo8ThctZscWBpHMRW4B/LgGEYtRA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEdTCCAl2gAwIBAgIBBzANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVPU0FB
+RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwODE3MTg1MTM3WhcN
+MjMwODE3MTg1MTM3WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwG
+A1UECwwFT1NBQUYxGTAXBgNVBAMMEGludGVybWVkaWF0ZUNBXzkwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv0HHUkba3uNtNI3jPKimUcd6RNwmhSCJL
+neMWpnjqp5/A+HCKyNsEaT4y177hNLmCm/aMm1u2JIfikc+8wEqLCSBBPz+P0h+d
+o+sZ7U+4oeQizdYYpEdzHJ2SieHHa8vtu80rU3nO2NEIkuYC20HcKSEtl8fFKsk3
+nqlhY+tGfYJPTXcDOQAO40BTcgat3C3uIJHkWJJ4RivunE4LEuRv9QyKgAw7rkJV
+v+f7guqpZlXy6dzAkuU7XULWcgo55MkZlssoiErMvEZJad5aWKvRY3g7qUjaQ6wO
+15wOAUoRBW96eeZZbytgn8kybcBy++Ue49gPtgm1MF/KlAsp0MD5AgMBAAGjgYYw
+gYMwHQYDVR0OBBYEFIH3mVsQuciM3vNSXupOaaBDPqzdMB8GA1UdIwQYMBaAFFNV
+M/JL69BRscF4msEoMXvv6u1JMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/
+BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0B
+AQsFAAOCAgEADxNymiCNr2e37iLReoaxKmZvwox0cTiNAaj7iafRzmwIoY3VXO8Q
+ix5IYcp4FaQ7fV1jyp/AmaSnyHf6Osl0sx8PxsQkO7ALttxKUrjfbvNSVUA2C/vl
+u5m7UVJLIUtFDZBWanzUSmkTsYLHpiANFQKd2c/cU1qXcyzgJVFEFVyyHNkF7Is+
++pjG9M1hwQHOoTnEuU013P7X1mHek+RXEfhJWwe7UsZnBKZaZKbQZu7hEtqKWYp/
+QsHgnjoLYXsh0WD5rz/mBxdTdDLGpFqWDzDqb8rsYnqBzoowvsasV8X8OSkov0Ht
+8Yka0ckFH9yf8j1Cwmbl6ttuonOhky3N/gwLEozuhy7TPcZGVyzevF70kXy7g1CX
+kpFGJyEHXoprlNi8FR4I+NFzbDe6a2cFow1JN19AJ9Z5Rk5m7M0mQPaQ4RcikjB3
+aoLsASCJTm1OpOFHfxEKiBW4Lsp3Uc5/Rb9ZNbfLrwqWZRM7buW1e3ekLqntgbky
+uKKISHqVJuw/vXHl1jNibEo9+JuQ88VNuAcm7WpGUogeCa2iAlPTckPZei+MwZ8w
+tpvxTyYlZEC8DWzY1VC29+W2N5cvh01e2E3Ql08W1zL63dqrgdEZ3VWjzooYi4ep
+BmMXTvouW+Flyvcw/0oTcfN0biDIt0mCkZ5CQVjfGL9DTOYteR5hw+k=
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAuyZjPvQrgB2bhyE3kpSH6OjXigs/+MfmV4eOrEwmMzQ1lWjI
+tu2z5WY9xNGCky85G3PrqmCfT/qNPXd0W5kEujYlL0QnvrCa77WP3kSSu0kMKdUJ
+V3S90Rp1SOhGFU/WroAQXvlzyBCunqQ9/F/L6mS8dLotUbkGIQlojAYOukWOT/+o
+gMMxzpxtb91QR+Wl4YeYyzX//0rls/6nEKzCh2STHJuTkXqL0kod+KY08unpvMX2
+J/SEeHdWLS8Gsuus6oqMr4bFyquua/U1ApxEMn0/agY58V75dF5CRPJRYrqqf9I6
+DBr0SntHv6pzMhokjewlukkrEsvIOkqEvIcE+QIDAQABAoIBAEe1OrvJZM2PCqOp
+N5jjbnvwk32iN93EAl8xYppkBxMBgzJ/VsC4rYBNP4elWym4I2KAdSDwKrrDXtDZ
+b20VYXlT+8VzkOMA2izU3Y4lqi82mwGATjcDVSPExoGr9gZ+c9yi1yL8478ZnT7N
+4a5Mql5iQM9c8rZodY+9AiD8xTHbgXbaGmBsDhTxT/HPDsoacR/SHMh3XowbhAcs
+eXAe+NdDtLcG6WOEqi/EhkagkWvsecIBoy888Ffbxa5h/DLEaCCoC3Dw1tWFX8KM
+86sC9sQKDVRVKpKs2/9MGl9LoPi9jNDrOP6/Zx3T4k479ozGp/0G70LzmUcih72j
+MUbr4f0CgYEA/AV0yOLZh0i2K53jpv3e8RDJkOBFuLb0ZZVdGkVYHncw9/WY070E
+TJi0B51RAJtdSksAWa6o+1+VaJKQHtMZpABwMWDMRQUqdC+o+knONRpdCHwxXnSl
+gvujFyYJhURKDr42z0xjbQrHaEZRuVJ6tzJQhFtE66G01ngREhDPbUsCgYEAvhrB
+A/IOQpPaHcfU2ik80VE0KU9N4Ez50ZlheEbBDVTrMWzuFy8p9niNSfDKC7s5aqlP
+DgDvTD80D8Zw6+yT/aDU5iEf5vMdKc1pnlr8jJoCNSvuyJZ40kDSehsBOKC+YN3g
+b6xaYWIcH3mwwoLZO9XFsN5KAg/dSMJED8AGAEsCgYAduMMCIgbHdqLNWAyOGCif
+w3wSEvEGDMWb6VaWj5EJ3sKuq48/gW4tXmD0+O+ho7EH3vqGmRuisa4cLBTFHd5L
+QiX5HNJaXXaZRzmlcujXyGkqZAMqgZU3clfUlg7PYbNeM76hCgA7zuaffJOMyJZi
+XpOyWFUzeNmr5XMV71eXKwKBgEtgzFvGJMVdXsUkMU/3vfe5XRdsLJLdssjbKnzI
+gU/J9h/480caGmdyUYOaCGMyb4fNbl09HaV8AianJqtFeUC9/uzpAX9PsqaanmB9
+71nIz0tKCjpa/7lOnqZwAsHzasl58L4W9xdaEZChbecSfxRspSCGY44BwFpTPS2J
+lFeVAoGAFOetqKStyEy+qruEOMk+lWwaKLGZ4hLk7qmFochxwrXgx7hcZ4Zrqkv9
+7qyQtbAalFiCHGmLBdSb+GLfD/1pPUA3wJoLo/I3f4g9c7cw7m7r8MdWPDXSL2Vk
+vM97Syv92KQUBl8te7S3+bDBNklgb+KwRqSk3QRAl8ARWEjg8Kk=
+-----END RSA PRIVATE KEY-----
diff --git a/docs/platform/Getting Started/media/data-complex.json b/docs/platform/Getting Started/media/data-complex.json
new file mode 100644 (file)
index 0000000..296dd89
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "physical-location-id": "clli2",
+       "data-center-code": "example-data-center-code-val-6667",
+       "complex-name": "clli2",
+       "identity-url": "example-identity-url-val-28399",
+       "physical-location-type": "example-physical-location-type-val-28399",
+       "street1": "example-street1-val-28399",
+       "street2": "example-street2-val-28399",
+       "city": "example-city-val-28399",
+       "state": "example-state-val-28399",
+       "postal-code": "example-postal-code-val-28399",
+       "country": "example-country-val-28399",
+       "region": "example-region-val-28399",
+       "latitude": "1111",
+       "longitude": "2222",
+       "elevation": "example-elevation-val-28399",
+       "lata": "example-lata-val-28399"
+}
+
diff --git a/docs/platform/Getting Started/media/dev.html b/docs/platform/Getting Started/media/dev.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/docs/platform/Getting Started/media/haproxy.cfg b/docs/platform/Getting Started/media/haproxy.cfg
new file mode 100644 (file)
index 0000000..9ee24e6
--- /dev/null
@@ -0,0 +1,120 @@
+global
+        log /dev/log    local0
+        stats socket /usr/local/etc/haproxy/haproxy.socket mode 660 level admin
+        stats timeout 30s
+        user root
+        group root
+        daemon
+        #################################
+        # Default SSL material locations#
+        #################################
+        ca-base /etc/ssl/certs
+        crt-base /etc/ssl/private
+
+        # Default ciphers to use on SSL-enabled listening sockets.
+        # For more information, see ciphers(1SSL). This list is from:
+        # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
+        # An alternative list with additional directives can be obtained from
+        # https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
+        tune.ssl.default-dh-param 2048
+
+defaults
+        log     global
+        mode    http
+        option  httplog
+#       option  dontlognull
+#       errorfile 400 /etc/haproxy/errors/400.http
+#       errorfile 403 /etc/haproxy/errors/403.http
+#       errorfile 408 /etc/haproxy/errors/408.http
+#       errorfile 500 /etc/haproxy/errors/500.http
+#       errorfile 502 /etc/haproxy/errors/502.http
+#       errorfile 503 /etc/haproxy/errors/503.http
+#       errorfile 504 /etc/haproxy/errors/504.http
+
+        option  http-server-close
+        option forwardfor except 127.0.0.1
+        retries 6
+        option redispatch
+        maxconn 50000
+        timeout connect 50000
+        timeout client  480000
+        timeout server  480000
+        timeout http-keep-alive 30000
+
+
+frontend IST_8443
+        mode http
+        bind 0.0.0.0:8443 name https ssl crt /etc/ssl/private/aai.pem 
+#       log-format %ci:%cp\ [%t]\ %ft\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ST\ %B\ %CC\ %CS\ %tsc\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ %hr\ %hs\ {%[ssl_c_verify],%{+Q}[ssl_c_s_dn],%{+Q}[ssl_c_i_dn]}\ %{+Q}r
+        log-format "%ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC \ %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"
+        option httplog
+        log global
+        option logasap
+        option forwardfor
+        capture request header  Host len 100
+        capture response header Host len 100
+        option log-separate-errors
+        option forwardfor
+        http-request set-header X-Forwarded-Proto https if { ssl_fc }
+        http-request set-header X-AAI-Client-SSL TRUE if { ssl_c_used }
+        http-request set-header X-AAI-SSL                       %[ssl_fc]
+        http-request set-header X-AAI-SSL-Client-Verify         %[ssl_c_verify]
+        http-request set-header X-AAI-SSL-Client-DN             %{+Q}[ssl_c_s_dn]
+        http-request set-header X-AAI-SSL-Client-CN             %{+Q}[ssl_c_s_dn(cn)]
+        http-request set-header X-AAI-SSL-Issuer                %{+Q}[ssl_c_i_dn]
+        http-request set-header X-AAI-SSL-Client-NotBefore      %{+Q}[ssl_c_notbefore]
+        http-request set-header X-AAI-SSL-Client-NotAfter       %{+Q}[ssl_c_notafter]
+        http-request set-header X-AAI-SSL-ClientCert-Base64   %{+Q}[ssl_c_der,base64]
+        http-request set-header X-AAI-SSL-Client-OU             %{+Q}[ssl_c_s_dn(OU)]
+        http-request set-header X-AAI-SSL-Client-L              %{+Q}[ssl_c_s_dn(L)]
+        http-request set-header X-AAI-SSL-Client-ST             %{+Q}[ssl_c_s_dn(ST)]
+        http-request set-header X-AAI-SSL-Client-C              %{+Q}[ssl_c_s_dn(C)]
+        http-request set-header X-AAI-SSL-Client-O              %{+Q}[ssl_c_s_dn(O)]
+        reqadd X-Forwarded-Proto:\ https
+        reqadd X-Forwarded-Port:\ 8443
+
+#######################
+#ACLS FOR PORT 8446####
+#######################
+
+        acl is_Port_8446_generic path_reg -i ^/aai/v[0-9]+/search/generic-query$
+        acl is_Port_8446_nodes path_reg -i ^/aai/v[0-9]+/search/nodes-query$
+        acl is_Port_8446_version path_reg -i ^/aai/v[0-9]+/query$
+        acl is_named-query path_beg -i /aai/search/named-query
+        acl is_search-model path_beg -i /aai/search/model
+        use_backend IST_AAI_8446 if is_Port_8446_generic or is_Port_8446_nodes or is_Port_8446_version or is_named-query or is_search-model
+
+        default_backend IST_Default_8447
+
+
+#######################
+#DEFAULT BACKEND 847###
+#######################
+
+backend IST_Default_8447
+        balance roundrobin
+        http-request set-header X-Forwarded-Port %[src_port]
+        http-response set-header Strict-Transport-Security max-age=16000000;\ includeSubDomains;\ preload;
+        server aai-resources.api.simpledemo.openecomp.org  aai-resources.api.simpledemo.openecomp.org:8447  port 8447 ssl verify none
+
+#######################
+# BACKEND 8446#########
+#######################
+
+backend IST_AAI_8446
+        balance roundrobin
+        http-request set-header X-Forwarded-Port %[src_port]
+        http-response set-header Strict-Transport-Security max-age=16000000;\ includeSubDomains;\ preload;
+        server aai-traversal.api.simpledemo.openecomp.org aai-traversal.api.simpledemo.openecomp.org:8446  port 8446 ssl verify none
+
+listen IST_AAI_STATS
+        mode http
+        bind *:8080
+        stats uri /stats
+        stats enable
+        stats refresh 30s
+        stats hide-version
+        stats auth admin:admin
+        stats show-legends
+        stats show-desc IST AAI APPLICATION NODES
+        stats admin if TRUE
diff --git a/docs/platform/Getting Started/media/test-complex b/docs/platform/Getting Started/media/test-complex
new file mode 100644 (file)
index 0000000..2d4e53b
--- /dev/null
@@ -0,0 +1,21 @@
+set -x
+
+PROTO=https://
+AAIINST1=127.0.0.1:8443/aai/v14
+CURLOPTS="--verbose --silent --insecure --user AAI:AAI"
+CURLHDR='--header "Accept: application/json" --header "X-TransactionId: testaai" --header "Content-Type: application/json" --header "X-FromAppId: AAI"'
+
+date
+
+eval curl $CURLOPTS $CURLHDR $PROTO$AAIINST1/cloud-infrastructure/complexes | jq '.'
+eval curl $CURLOPTS $CURLHDR --upload-file data-complex.json $PROTO$AAIINST1/cloud-infrastructure/complexes/complex/clli2 | jq '.'
+eval curl $CURLOPTS $CURLHDR $PROTO$AAIINST1/cloud-infrastructure/complexes/complex/clli2 | jq '.'
+eval curl $CURLOPTS $CURLHDR $PROTO$AAIINST1/cloud-infrastructure/complexes | jq '.'
+
+
+RESVER1=`eval curl $CURLOPTS $CURLHDR $PROTO$AAIINST1/cloud-infrastructure/complexes | jq '.["complex"] | .[] | select(.["physical-location-id"] == "clli2") | .["resource-version"] '`
+eval curl $CURLOPTS $CURLHDR --request DELETE $PROTO$AAIINST1/cloud-infrastructure/complexes/complex/clli2?resource-version=$RESVER1 | jq '.'
+eval curl $CURLOPTS $CURLHDR $PROTO$AAIINST1/cloud-infrastructure/complexes | jq '.'
+
+echo end test-complex
+