From 09f2699fea9b7f7d13b81b06cedcd4c8618797f7 Mon Sep 17 00:00:00 2001 From: Jimmy Forsyth Date: Thu, 30 May 2019 16:46:22 -0400 Subject: Update Dublin docs Issue-ID: AAI-2461 Signed-off-by: Jimmy Forsyth Change-Id: I6cc1e23cb103f559642cb697513e5338bdaf5cd8 --- .../AAIRESTAPI_DUBLIN.rst | 2 +- .../AAI_Developer_Environment_Setup.rst | 448 +++++++++++---------- docs/platform/Getting Started/media/aai.pem | 82 ++++ .../Getting Started/media/data-complex.json | 19 + docs/platform/Getting Started/media/dev.html | 0 docs/platform/Getting Started/media/haproxy.cfg | 120 ++++++ docs/platform/Getting Started/media/test-complex | 21 + 7 files changed, 488 insertions(+), 204 deletions(-) create mode 100644 docs/platform/Getting Started/media/aai.pem create mode 100644 docs/platform/Getting Started/media/data-complex.json create mode 100644 docs/platform/Getting Started/media/dev.html create mode 100644 docs/platform/Getting Started/media/haproxy.cfg create mode 100644 docs/platform/Getting Started/media/test-complex diff --git a/docs/AAI REST API Documentation/AAIRESTAPI_DUBLIN.rst b/docs/AAI REST API Documentation/AAIRESTAPI_DUBLIN.rst index 0e33ce14..5cd758bb 100644 --- a/docs/AAI REST API Documentation/AAIRESTAPI_DUBLIN.rst +++ b/docs/AAI REST API Documentation/AAIRESTAPI_DUBLIN.rst @@ -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 `_ for more information. +See `Nodes API `_ for more information. Generic Queries --------------- 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 `__ + .. 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 `__ - - .. code-block:: bash + 1. $ sudo apt-get -y install haproxy + 2. $ /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 - 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 `__ - - .. code-block:: bash + Install the attached :download:`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://@gerrit.onap.org:29418/aai/aai-common + Install the attached :download:`aai.pem ` file in /etc/ssl/private - git clone ssh://@gerrit.onap.org:29418/aai/traversal + .. code-block:: bash - git clone ssh://@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://@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 `__ + 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 `__ 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 + `__ - 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 - - maven-restletRestlet repositoryhttps://maven.restlet.com - - .. 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://@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= + .. 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 ` + Download :download:`data - 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 `__ `NamedQuery.postman_collection.json `__ + { + "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 `__ +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 `__ - - |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 `__ + Start the microservice - adjust your build version accordingly - 6. Execute named-query: - `Execute Named Query.postman_collection.json `__ - 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 `__ + 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 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 + -- cgit 1.2.3-korg