aboutsummaryrefslogtreecommitdiffstats
path: root/docs/platform/Getting Started
diff options
context:
space:
mode:
Diffstat (limited to 'docs/platform/Getting Started')
-rw-r--r--docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst448
-rw-r--r--docs/platform/Getting Started/media/aai.pem82
-rw-r--r--docs/platform/Getting Started/media/data-complex.json19
-rw-r--r--docs/platform/Getting Started/media/dev.html0
-rw-r--r--docs/platform/Getting Started/media/haproxy.cfg120
-rw-r--r--docs/platform/Getting Started/media/test-complex21
6 files changed, 487 insertions, 203 deletions
diff --git a/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst b/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst
index 6f7871cc..c8afd9c1 100644
--- a/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst
+++ b/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst
@@ -7,296 +7,338 @@
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
index 00000000..e6dfd6a6
--- /dev/null
+++ b/docs/platform/Getting Started/media/aai.pem
@@ -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
index 00000000..296dd89f
--- /dev/null
+++ b/docs/platform/Getting Started/media/data-complex.json
@@ -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
index 00000000..e69de29b
--- /dev/null
+++ b/docs/platform/Getting Started/media/dev.html
diff --git a/docs/platform/Getting Started/media/haproxy.cfg b/docs/platform/Getting Started/media/haproxy.cfg
new file mode 100644
index 00000000..9ee24e62
--- /dev/null
+++ b/docs/platform/Getting Started/media/haproxy.cfg
@@ -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
index 00000000..2d4e53b7
--- /dev/null
+++ b/docs/platform/Getting Started/media/test-complex
@@ -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
+