summaryrefslogtreecommitdiffstats
path: root/docs/platform
diff options
context:
space:
mode:
Diffstat (limited to 'docs/platform')
-rw-r--r--docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst265
-rw-r--r--docs/platform/Getting Started/Edge_Rules.rst161
-rw-r--r--docs/platform/Getting Started/How_to_AAI_data_snapshot_and_restore_in_ONAP_1_1.rst46
-rw-r--r--docs/platform/Getting Started/How_to_Docker_setup_on_Single_VM.rst56
-rw-r--r--docs/platform/Getting Started/Queries/Policy_Named_Query.rst182
-rw-r--r--docs/platform/Getting Started/Queries/vnf_to_esr_system_info_Named_Query.rst368
6 files changed, 1078 insertions, 0 deletions
diff --git a/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst b/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst
new file mode 100644
index 00000000..10f45dfa
--- /dev/null
+++ b/docs/platform/Getting Started/AAI_Developer_Environment_Setup.rst
@@ -0,0 +1,265 @@
+.. contents::
+ :depth: 3
+.. _dev-setup:
+
+
+A&AI 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.
+
+1. install openjdk 8
+
+ 1. sudo apt install openjdk-8-jdk
+
+2. Install single node hadoop/titan
+
+ 1. $ wget
+ http://s3.thinkaurelius.com/downloads/titan/titan-1.0.0-hadoop1.zip
+
+ 2. $ unzip titan-1.0.0-hadoop1.zip
+
+ 3. $ cd titan-1.0.0-hadoop1
+
+ 4. $ sudo ./bin/titan.sh start
+
+3. Install haproxy
+
+ 1. $ sudo apt-get -y install haproxy
+
+ 2. | $ haproxy -v
+ | HA-Proxy version 1.6.3 2015/12/25
+ | Copyright 2000-2015 Willy Tarreau
+ <willy@`haproxy.org <http://haproxy.org/>`__>
+
+ 3. Install this haproxy.cfg file in /etc/haproxy
+
+ `haproxy.cfg <file:///C:\download\attachments\10782088\haproxy.cfg%3fversion=2&modificationDate=1501018863000&api=v2>`__
+
+1. $ sudo cp aai.pem /etc/ssl/private/aai.pem
+
+2. $ sudo chmod 640 /etc/ssl/private/aai.pem
+
+3. | $ sudo chown root:ssl-cert /etc/ssl/private/aai.pem
+ | `aai.pem <file:///C:\download\attachments\10782088\aai.pem%3fversion=1&modificationDate=1501019585000&api=v2>`__
+
+4. sudo mkdir /usr/local/etc/haproxy
+
+5. Add these hostnames to the loopback interface in /etc/hosts: 
+
+ 1. 127.0.0.1 localhost
+ `aai-traversal.api.simpledemo.openecomp.org <http://aai-traversal.api.simpledemo.openecomp.org>`__
+ aai-resour\ `ces.api.simpledemo.openecomp.or <http://ces.api.simpledemo.openecomp.org>`__\ g
+
+6. $ sudo service haproxy restart
+
+1. Set up repos. First, follow the initial setup instructions
+ in \ `Setting Up Your Development
+ Environment <file:///C:\display\DW\Setting+Up+Your+Development+Environment>`__
+
+ 1. $ mkdir -p ~/LF/AAI
+
+ 2. $ cd ~/LF/AAI
+
+ 3. $ git clone
+ ssh://%3Cusername%3E@gerrit.onap.org:29418/aai/aai-common
+
+ 4. $ git
+ clone \ `ssh://<username>@gerrit.onap.org:29418/aai/traversal <ssh://%253Cusername%253E@gerrit.onap.org:29418/aai/traversal>`__
+
+ 5. $ git
+ clone \ `ssh://<username>@gerrit.onap.org:29418/aai/resources <ssh://%25253Cusername%25253E@gerrit.onap.org:29418/aai/resources>`__
+
+ 6. $ git clone
+ ssh://%3Cusername%3E@gerrit.onap.org:29418/aai/logging-service
+
+ 7. 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 <file:///C:\display\DW\Setting+Up+Your+Development+Environment#SettingUpYourDevelopmentEnvironment-MavenExamplesettings.xml>`__
+
+2. Build aai-common, traversal, and resources
+
+ 1. $ cd ~/LF/AAI/aai-common
+
+ 2. | $ mvn clean install
+ | Should result in BUILD SUCCESS
+
+ 3. $ cd ~/LF/AAI/resources
+
+ 4. | $ mvn clean install
+ | Should result in BUILD SUCCESS
+
+ 5. $ cd ~/LF/AAI/logging-service
+
+ 6. | $ mvn clean install
+ | Should result in BUILD SUCCESS
+
+ 7. | $ cd ~/LF/AAI/traversal
+ | I had to add the following to traversal/pom.xml to get
+ traversal to build: 
+
+ 8. <repositories>
+
+ 9. <repository>
+
+ 10. <id>maven-restlet</id>
+
+ 11. <name>Restlet repository</name>
+
+ 12. <url>https://maven.restlet.com</url>
+
+ 13. </repository>
+
+ </repositories>
+
+1. | mvn clean install
+ | Should result in BUILD SUCCESS
+
+1. Titan setup
+
+ 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)
+ | storage.backend=\ *cassandra*
+ | storage.hostname=\ *localhost*
+
+ 2. update
+ ~/LF/AAI/resources/aai-resources/bundleconfig-local/etc/appprops/titan-cached.properties
+
+ 3. update
+ ~/LF/AAI/resources/aai-resources/bundleconfig-local/etc/appprops/titan-realtime.properties
+
+ 4. update
+ ~/LF/AAI/traversal/aai-traversal/bundleconfig-local/etc/appprops/titan-cached.properties
+
+ 5. update
+ ~/LF/AAI/traversal/aai-traversal/bundleconfig-local/etc/appprops/titan-realtime.properties
+
+ 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.
+ | storage.cassandra.keyspace=<keyspace name>
+
+ 7. From the resources MS run the create db schema standalone program.
+
+ 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).
+
+ Runnable class com.att.aai.dbgen.GenTester with the following vm
+ args.
+
+                 -DAJSC\_HOME=~/LF/AAI/resources
+ -DBUNDLECONFIG\_DIR="bundleconfig-local"
+
+1. | Here's the command I used, and it worked:
+ | $ 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.openecomp.aai.dbgen.GenTester
+
+1. Start the "resources" microservice
+
+ 1. | Resources runs on port 8446.  Go to the resources directory
+ | $ cd ~/LF/AAI/resources
+
+ 2. | 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"
+
+ 3. | Start the microservice
+ | $ mvn -P runAjsc
+
+2. Verify the resources microservice (this example uses Postman utility
+ for Google Chrome)
+
+ 1. Use basic auth, user = AAI, pw = AAI
+
+ 2. Set the X-TransactionId header (in the example below, the value is
+ 9999)
+
+ 3. Set the X-FromAppId header (in the example below, the value is
+ jimmy-postman)
+
+ 4. Perform a GET of https://127.0.0.1:8443/aai/v11/network/vces
+
+ 5. You should see an error as below, 404 Not Found, ERR.5.4.6114. 
+ This indicates that the service is functioning normally:
+
++------------------------------------------+
+| |C:\\9cb03b5a507d917b3f460df1c1d95eea| |
++------------------------------------------+
+
+1.
+2. Start the "traversal" microservice
+
+ 1. | Traversal runs on port 8447.  Go to the traversal directory
+ | $ cd ~/LF/AAI/traversal
+
+ 2. | Set the debug port to 9447
+ | $ export MAVEN\_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m
+ -Xdebug -Xnoagent -Djava.compiler=NONE
+ -Xrunjdwp:transport=dt\_socket,address=9447,server=y,suspend=n"
+
+ 3. | Start the microservice
+ | $ mvn -P runAjsc 
+ | Should see something like this: 2017-07-26
+ 12:46:35.524:INFO:oejs.Server:com.att.ajsc.runner.Runner.main():
+ Started @25827ms
+
+3. Verify the traversal microservice
+
+ 1. | Set up the widget models
+ | This will set up the postman to add widget models: \ `Add Widget
+ Models.postman\_collection.json <file:///C:\download\attachments\10782088\Add%20Widget%20Models.postman_collection.json%3fversion=2&modificationDate=1501102559000&api=v2>`__\ `NamedQuery.postman\_collection.json <file:///C:\download\attachments\10782088\NamedQuery.postman_collection.json%3fversion=2&modificationDate=1501102582000&api=v2>`__
+
+ 2. Create a runner using this
+ file: \ `models.csv <file:///C:\download\attachments\10782088\models.csv%3fversion=1&modificationDate=1501100140000&api=v2>`__
+
+ 3. | Run the test runner
+ | |C:\\de01805e8408f48478705feb59a27e02|
+
+ 4. | Add a named query called "getComponentList" (this named query is
+ used by
+ VID): \ `NamedQuery.postman\_collection.json <file:///C:\download\attachments\10782088\NamedQuery.postman_collection.json%3fversion=2&modificationDate=1501102582000&api=v2>`__
+ | |C:\\5cdb29c4d0655cf5ede2011736938e58|
+
+ 5. Add objects: \ `Add Instances for Named
+ Query.postman\_collection.json <file:///C:\download\attachments\10782088\Add%20Instances%20for%20Named%20Query.postman_collection.json%3fversion=1&modificationDate=1501102617000&api=v2>`__ (replacing
+ the xmlns "http://org.openecomp.aai.inventory/v11" with
+ "http://org.onap.aai.inventory/v11" in the Body of the PUT
+ request)
+
+ 6. | Execute named-query: \ `Execute Named
+ Query.postman\_collection.json <file:///C:\download\attachments\10782088\Execute%20Named%20Query.postman_collection.json%3fversion=1&modificationDate=1501102658000&api=v2>`__
+ | You should see something like the following:
+ | |C:\\a67954cfbcfebb8d7a7f48bba2a26195|
+
+4. Your A&AI instance is now running, both the resources and traversal
+ microservices are working properly with a local titan graph. 
+
+5. Next: \ `Tutorial: Making and Testing a Schema Change in
+ A&AI <file:///C:\pages\viewpage.action%3fpageId=10783023>`__
+
+.. |C:\\9cb03b5a507d917b3f460df1c1d95eea| image:: media/image1.png
+ :width: 4.87500in
+ :height: 2.87500in
+.. |C:\\de01805e8408f48478705feb59a27e02| image:: media/image2.tmp
+ :width: 4.87500in
+ :height: 3.75000in
+.. |C:\\5cdb29c4d0655cf5ede2011736938e58| image:: media/image3.png
+ :width: 4.87500in
+ :height: 4.15000in
+.. |C:\\a67954cfbcfebb8d7a7f48bba2a26195| image:: media/image4.png
+ :width: 4.87500in
+ :height: 4.15000in
diff --git a/docs/platform/Getting Started/Edge_Rules.rst b/docs/platform/Getting Started/Edge_Rules.rst
new file mode 100644
index 00000000..8950d3eb
--- /dev/null
+++ b/docs/platform/Getting Started/Edge_Rules.rst
@@ -0,0 +1,161 @@
+.. contents::
+ :depth: 3
+..
+
+Edge Rules
+==========
+
+- `Edge Rules Location <#EdgeRules-EdgeRulesLocation>`__
+
+- `How to Interpret an Edge
+ Rule <#EdgeRules-HowtoInterpretanEdgeRule>`__
+
+ - `Mentally Constructing an
+ Edge <#EdgeRules-MentallyConstructinganEdge>`__
+
+ - `Quick guide for which is your in node and which is your out
+ node <#EdgeRules-Quickguideforwhichisyourinnod>`__
+
+- `How to Read Multiplicity <#EdgeRules-HowtoReadMultiplicity>`__
+
+- `Internal Edge Properties <#EdgeRules-InternalEdgeProperties>`__
+
+ - `Quick guide to our direction
+ syntax: <#EdgeRules-Quickguidetoourdirectionsynta>`__
+
+Edge Rules Location
+-------------------
+
+The edge rules json files are located in
+aai-common/aai-core/src/main/resources/dbedgerules.
+
+How to Interpret an Edge Rule
+-----------------------------
+
+Mentally Constructing an Edge
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Read the from/to/direction as a recipe for how to construct the edge.
+
+{
+
+ | "from": "tenant",
+ | "to": "vserver",
+ | "label": "owns",
+ | "direction": "OUT",
+ | "multiplicity": "One2Many",
+ | "contains-other-v": "${direction}",
+ | "delete-other-v": "NONE",
+ | "SVC-INFRA": "!${direction}",
+ | "prevent-delete": "${direction}"
+
+}
+
+1. Start by drawing the "from" node.
+
+2. Draw an edge off this node in the specified. So if it's OUT, point
+ the edge out away from the from node, if it's IN, point it into the
+ node.
+
+3. Draw the "to" node on the empty end of that edge.
+
+Essentially, "from" and "to" do not imply direction. Think of them as
+more like "NodeA" and "NodeB".
+
+Quick guide for which is your in node and which is your out node
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
++-----------------+---------------+----------------+
+| **direction** | **in node** | **out node** |
++=================+===============+================+
+| OUT | to | from |
++-----------------+---------------+----------------+
+| IN | from | to |
++-----------------+---------------+----------------+
+
+How to Read Multiplicity
+------------------------
+
+Multiplicity, by itself, has nothing to do with the edge direction or
+the from/to nodes. Think of it as a property of the edge label. It
+defines how many IN edges of this label and how many OUT edges of this
+label are allowed. The format we use is defined by Titan to be In2Out.
+
+Ex: One2Many means on a node, there may be only one IN edge, and many
+OUT edges.
+
+The from and to node types come in on top of this at the A&AI layer.
+A&AI's code defines which node types may have those IN and OUT edges of
+this label.
+
+{
+
+ | "from": "tenant",
+ | "to": "vserver",
+ | "label": "owns",
+ | "direction": "OUT",
+ | "multiplicity": "One2Many",
+ | "contains-other-v": "${direction}",
+ | "delete-other-v": "NONE",
+ | "SVC-INFRA": "!${direction}",
+ | "prevent-delete": "${direction}"
+
+}
+
+In this example, the vserver gets the IN edge, so it may have only one
+edge from a tenant. The tenant gets the OUT edge, so it may get many
+edges to vservers.
+
+Internal Edge Properties
+------------------------
+
+A&AI uses the following edge properties for internal processing.
+
+- contains-other-v
+
+ - This property defines whether or not the other vertex is contained
+ within another when rendering the resources view
+
+ - This property was previously known as isParent
+
+ - If contains-other-v=OUT, this means that the outVertex contains
+ the inVertex
+
+ - Or in other words, you can read contains-other-v=OUT as "I am an
+ edge, my OUT vertex contains my IN vertex"
+
+- delete-other-v
+
+ - defines whether or not the other vertex is automatically included
+ in delete processing
+
+ - this property was previously known as hasDelTarget
+
+ - if delete-other-v=IN, this means that when deleting the inVertex
+ also delete the outVertex
+
+- SVC-INFRA
+
+ - what direction should the traverser continue in when running
+ edge-tag-query
+
+ - if SVC-INFRA=OUT, when on the outVertex traverse to the inVertex
+ and continue
+
+- prevent-delete
+
+ - defines whether or not this edge can be deleted from a particular
+ direction
+
+ - if prevent-delete=IN, prevent the deletion of the inVertex of the
+ edge, allow the outVertex to be deleted.
+
+ - Or in other words, you can read it as "I am an edge, my IN vertex
+ cannot be deleted"
+
+Quick guide to our direction syntax:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+${direction} = same as value of "direction" property
+
+!${direction} = opposite
diff --git a/docs/platform/Getting Started/How_to_AAI_data_snapshot_and_restore_in_ONAP_1_1.rst b/docs/platform/Getting Started/How_to_AAI_data_snapshot_and_restore_in_ONAP_1_1.rst
new file mode 100644
index 00000000..004a0c98
--- /dev/null
+++ b/docs/platform/Getting Started/How_to_AAI_data_snapshot_and_restore_in_ONAP_1_1.rst
@@ -0,0 +1,46 @@
+.. contents::
+ :depth: 3
+..
+
+How to A&AI data snapshot and restore in ONAP 1.1
+=================================================
+
+1. Check the containers that are running and get the container name for
+ resources micro service as this container contains both dataSnapshot
+ and restore scripts
+
+2. If the deployment was followed properly, then the container name
+ would have been
+ testconfig\_aai-resources.api.simpledemo.openecomp.org\_1
+
+3. Run the following command to save the current snapshot of your data:
+
+ docker exec -u aaiadmin -it
+ testconfig\_aai-resources.api.simpledemo.openecomp.org\_1
+ /opt/app/aai-resources/bin/dataSnapshot.sh
+
+1. After running that command, you should see the following line in the
+ standard output:
+
+ Snapshot written to
+ /opt/app/aai-resources/logs/data/dataSnapshots/dataSnapshot.graphSON.201709221713
+
+1. This file dataSnapshot.graphSON.201709221713 can be found in
+ /opt/aai/logroot/AAI-RESOURCES/data/dataSnapshots on the host vm
+
+2. If you want to restore the data from the snapshot, then you would run
+ this command:
+
+ docker exec -u aaiadmin -it
+ testconfig\_aai-resources.api.simpledemo.openecomp.org\_1
+ /opt/app/aai-resources/bin/dataRestoreFromSnapshot.sh
+ dataSnapshot.graphSON.201709221713
+
+1. The argument to the dataRestoreFromSnapshot.sh is the dataSnapshot
+ graphson file and it only needs the base name and expects to be found
+ in the host vm /opt/aai/logroot/AAI-RESOURCES/data/dataSnapshots.
+
+2. Once that command is run, you will be given a warning of 5 seconds to
+ quit the process as it will replace whatever you have in your A&AI
+ data with that snapshot and any current data thats not saved into a
+ snapshot will be lost.
diff --git a/docs/platform/Getting Started/How_to_Docker_setup_on_Single_VM.rst b/docs/platform/Getting Started/How_to_Docker_setup_on_Single_VM.rst
new file mode 100644
index 00000000..7776ebdb
--- /dev/null
+++ b/docs/platform/Getting Started/How_to_Docker_setup_on_Single_VM.rst
@@ -0,0 +1,56 @@
+.. contents::
+ :depth: 3
+..
+
+How to Docker setup on Single VM
+================================
+
+Step-by-step guide
+------------------
+
+1. You would need to have root access to the vm
+
+2. sudo su - root
+
+3. cd /opt
+
+4. git clone http://gerrit.onap.org/r/aai/test-config
+
+5. cd test-config
+
+6. In deploy\_vm1.sh comment out the lines 89-94 which should be an if
+ statement checking for the /opt/message-router folder
+
+7. Create a directory called /opt/config
+
+ 1. mkdir /opt/config/
+
+8. Create a file called /opt/config/nexus\_username.txt containing the
+ text: docker
+
+ 1. echo "docker" > /opt/config/nexus\_username.txt
+
+9. Create a file called /opt/config/nexus\_password.txt containing the
+ text: docker
+
+ 1. echo "docker" > /opt/config/nexus\_password.txt
+
+10. Create a file called /opt/config/dmaap\_topic.txt containing the
+ text: AAI-EVENT
+
+ 1. echo " AAI-EVENT" > /opt/config/dmaap\_topic.txt
+
+11. Create a file called /opt/config/nexus\_docker\_repo.txt containing
+ text: nexus3.onap.org:10001
+
+ echo "nexus3.onap.org:10001" > /opt/config/nexus\_docker\_repo.txt
+
+1. Create a file called /opt/config/docker\_version.txt containing text:
+ 1.1-STAGING-latest
+
+ echo "1.1-STAGING-latest" > /opt/config/docker\_version.txt
+
+1. Please note that in the previous step, docker version is currently
+ 1.1-STAGING-latest and this will be changed later
+
+ ./deploy\_vm2.sh && ./deploy\_vm1.sh
diff --git a/docs/platform/Getting Started/Queries/Policy_Named_Query.rst b/docs/platform/Getting Started/Queries/Policy_Named_Query.rst
new file mode 100644
index 00000000..0dd004d0
--- /dev/null
+++ b/docs/platform/Getting Started/Queries/Policy_Named_Query.rst
@@ -0,0 +1,182 @@
+.. contents::
+ :depth: 3
+..
+
+Policy Named Query
+==================
+
+**Example Request**
+
+POST /aai/search/named-query
+
+{
+
+"query-parameters": {
+
+"named-query": {
+
+"named-query-uuid": "a93ac487-409c-4e8c-9e5f-334ae8f99087"
+
+}
+
+},
+
+"instance-filters":{
+
+"instance-filter":[ {
+
+"generic-vnf": {
+
+"vnf-id": "de7cc3ab-0212-47df-9e64-da1c79234deb"
+
+}
+
+} ] }
+
+}
+
+**Example Response**
+
+{
+
+"inventory-response-item": [
+
+{
+
+"model-name": "service-instance",
+
+"generic-vnf": {
+
+"vnf-id": "de7cc3ab-0212-47df-9e64-da1c79234deb",
+
+"vnf-name": "ZRDM2MMEX39",
+
+"vnf-type": "vMME Svc Jul 14/vMME VF Jul 14 1",
+
+"service-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+
+"orchestration-status": "active",
+
+"in-maint": false,
+
+"is-closed-loop-disabled": false,
+
+"resource-version": "1503082370097",
+
+"model-invariant-id": "82194af1-3c2c-485a-8f44-420e22a9eaa4",
+
+"model-version-id": "46b92144-923a-4d20-b85a-3cbd847668a9"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"model-name": "service-instance",
+
+"service-instance": {
+
+"service-instance-id": "37b8cdb7-94eb-468f-a0c2-4e3c3546578e",
+
+"service-instance-name": "Changed Service Instance NAME",
+
+"model-invariant-id": "82194af1-3c2c-485a-8f44-420e22a9eaa4",
+
+"model-version-id": "46b92144-923a-4d20-b85a-3cbd847668a9",
+
+"resource-version": "1503082993532",
+
+"orchestration-status": "Active"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"model-name": "pnf",
+
+"generic-vnf": {
+
+"vnf-id": "jimmy-test",
+
+"vnf-name": "jimmy-test-vnf",
+
+"vnf-type": "vMME Svc Jul 14/vMME VF Jul 14 1",
+
+"service-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+
+"orchestration-status": "active",
+
+"in-maint": false,
+
+"is-closed-loop-disabled": false,
+
+"resource-version": "1504013830207",
+
+"model-invariant-id": "862b25a1-262a-4961-bdaa-cdc55d69785a",
+
+"model-version-id": "e9f1fa7d-c839-418a-9601-03dc0d2ad687"
+
+},
+
+"extra-properties": {}
+
+},
+
+{
+
+"model-name": "service-instance",
+
+"generic-vnf": {
+
+"vnf-id": "jimmy-test-vnf2",
+
+"vnf-name": "jimmy-test-vnf2-named",
+
+"vnf-type": "vMME Svc Jul 14/vMME VF Jul 14 1",
+
+"service-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+
+"orchestration-status": "active",
+
+"in-maint": false,
+
+"is-closed-loop-disabled": false,
+
+"resource-version": "1504014833841",
+
+"model-invariant-id": "82194af1-3c2c-485a-8f44-420e22a9eaa4",
+
+"model-version-id": "46b92144-923a-4d20-b85a-3cbd847668a9"
+
+},
+
+"extra-properties": {}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
diff --git a/docs/platform/Getting Started/Queries/vnf_to_esr_system_info_Named_Query.rst b/docs/platform/Getting Started/Queries/vnf_to_esr_system_info_Named_Query.rst
new file mode 100644
index 00000000..7ad412a9
--- /dev/null
+++ b/docs/platform/Getting Started/Queries/vnf_to_esr_system_info_Named_Query.rst
@@ -0,0 +1,368 @@
+.. contents::
+ :depth: 3
+..
+
+vnf to esr-system-info Named Query
+==================================
+
+**Example Request**
+
+POST https://127.0.0.1:8443/aai/search/named-query
+
+{
+
+"query-parameters": {
+
+"named-query": {
+
+"named-query-uuid": "037eb932-edac-48f5-9782-c19c0aa5a031"
+
+}
+
+},
+
+"instance-filters":{
+
+"instance-filter":[ {
+
+"generic-vnf": {
+
+"vnf-id": "de7cc3ab-0212-47df-9e64-da1c79234deb"
+
+}
+
+} ]
+
+}
+
+}
+
+**Example Response**
+
+{
+
+"inventory-response-item": [
+
+{
+
+"model-name": "service-instance",
+
+"generic-vnf": {
+
+"vnf-id": "de7cc3ab-0212-47df-9e64-da1c79234deb",
+
+"vnf-name": "ZRDM2MMEX39",
+
+"vnf-type": "vMME Svc Jul 14/vMME VF Jul 14 1",
+
+"service-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+
+"orchestration-status": "active",
+
+"in-maint": false,
+
+"is-closed-loop-disabled": false,
+
+"resource-version": "1504805258328",
+
+"model-invariant-id": "82194af1-3c2c-485a-8f44-420e22a9eaa4",
+
+"model-version-id": "46b92144-923a-4d20-b85a-3cbd847668a9"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"vserver": {
+
+"vserver-id": "example-vserver-id-val-90579",
+
+"vserver-name": "example-vserver-name-val-92986",
+
+"vserver-name2": "example-vserver-name2-val-77692",
+
+"prov-status": "example-prov-status-val-23854",
+
+"vserver-selflink": "example-vserver-selflink-val-14328",
+
+"in-maint": true,
+
+"is-closed-loop-disabled": true,
+
+"resource-version": "1504808495581"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"tenant": {
+
+"tenant-id": "example-tenant-id-val-89637",
+
+"tenant-name": "example-tenant-name-val-36717",
+
+"resource-version": "1504808495527"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"cloud-region": {
+
+"cloud-owner": "example-cloud-owner-val-44086",
+
+"cloud-region-id": "example-cloud-region-id-val-67393",
+
+"cloud-type": "example-cloud-type-val-13758",
+
+"owner-defined-type": "example-owner-defined-type-val-38571",
+
+"cloud-region-version": "example-cloud-region-version-val-130",
+
+"identity-url": "example-identity-url-val-73825",
+
+"cloud-zone": "example-cloud-zone-val-97510",
+
+"complex-name": "example-complex-name-val-28459",
+
+"sriov-automation": false,
+
+"resource-version": "1504808495472"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"esr-system-info": {
+
+"esr-system-info-id": "example-esr-system-info-id-val-25777",
+
+"system-name": "example-system-name-val-29070",
+
+"type": "example-type-val-85254",
+
+"vendor": "example-vendor-val-94515",
+
+"version": "example-version-val-71880",
+
+"service-url": "example-service-url-val-36193",
+
+"user-name": "example-user-name-val-77399",
+
+"password": "example-password-val-46071",
+
+"system-type": "example-system-type-val-76197",
+
+"protocal": "example-protocal-val-52954",
+
+"ssl-cacert": "example-ssl-cacert-val-75021",
+
+"ssl-insecure": true,
+
+"ip-address": "example-ip-address-val-44431",
+
+"port": "example-port-val-93234",
+
+"cloud-domain": "example-cloud-domain-val-76370",
+
+"default-tenant": "example-tenant-id-val-89637",
+
+"resource-version": "1504808496522"
+
+},
+
+"extra-properties": {}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
+
+},
+
+{
+
+"vserver": {
+
+"vserver-id": "example-vserver-id-val-2",
+
+"vserver-name": "example-vserver-name-val-2",
+
+"vserver-name2": "example-vserver-name2-val-2",
+
+"prov-status": "example-prov-status-val-2",
+
+"vserver-selflink": "example-vserver-selflink-val-2",
+
+"in-maint": true,
+
+"is-closed-loop-disabled": true,
+
+"resource-version": "1504817435622"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"tenant": {
+
+"tenant-id": "example-tenant-id-val-2",
+
+"tenant-name": "example-tenant-name-val-2",
+
+"resource-version": "1504817435574"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"cloud-region": {
+
+"cloud-owner": "example-cloud-owner-val-2",
+
+"cloud-region-id": "example-cloud-region-id-val-2",
+
+"cloud-type": "example-cloud-type-val-2",
+
+"owner-defined-type": "example-owner-defined-type-val-2",
+
+"cloud-region-version": "example-cloud-region-version-val-2",
+
+"identity-url": "example-identity-url-val-2",
+
+"cloud-zone": "example-cloud-zone-val-2",
+
+"complex-name": "example-complex-name-val-2",
+
+"sriov-automation": false,
+
+"resource-version": "1504817435502"
+
+},
+
+"extra-properties": {},
+
+"inventory-response-items": {
+
+"inventory-response-item": [
+
+{
+
+"esr-system-info": {
+
+"esr-system-info-id": "example-esr-system-info-id-val-2",
+
+"system-name": "example-system-name-val-2",
+
+"type": "example-type-val-2",
+
+"vendor": "example-vendor-val-2",
+
+"version": "example-version-val-2",
+
+"service-url": "example-service-url-val-2",
+
+"user-name": "example-user-name-val-2",
+
+"password": "example-password-val-2",
+
+"system-type": "example-system-type-val-2",
+
+"protocal": "example-protocal-val-2",
+
+"ssl-cacert": "example-ssl-cacert-val-2",
+
+"ssl-insecure": true,
+
+"ip-address": "example-ip-address-val-2",
+
+"port": "example-port-val-2",
+
+"cloud-domain": "example-cloud-domain-val-2",
+
+"default-tenant": "example-tenant-id-val-2",
+
+"resource-version": "1504817436023"
+
+},
+
+"extra-properties": {}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}
+
+}
+
+]
+
+}