summaryrefslogtreecommitdiffstats
path: root/docs/guides/onap-user/instantiate
diff options
context:
space:
mode:
authorRene_Robert <rene.robert@orange.com>2019-07-09 14:39:47 +0200
committerRene_Robert <rene.robert@orange.com>2019-07-12 15:02:10 +0200
commitfb177970a40171b592db1d3be75bc6c42e0c03d4 (patch)
treee66bc8a175ca78caf916ff4ae0ce1cf8b6df2d72 /docs/guides/onap-user/instantiate
parentc222932f1bbb964dfbc915b4e9f7fa3d81a414a7 (diff)
Issue-ID: DOC-500
remove "service Deployment" that was not explaining anything add "service instantiation" section with a lot of useful informations ammend after review amend about NBI that is able to handle 2 instantiations methods Signed-off-by: Rene_Robert <rene.robert@orange.com> Change-Id: I4e3bf8830a44f84acb11d0c0afb3ce3012227252
Diffstat (limited to 'docs/guides/onap-user/instantiate')
-rw-r--r--docs/guides/onap-user/instantiate/index.rst32
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/index.rst28
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/nbi/index.rst88
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/pnf_instance/index.rst107
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/so1/index.rst366
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/so2/index.rst187
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/uui/index.rst14
-rw-r--r--docs/guides/onap-user/instantiate/instantiation/vid/index.rst13
-rw-r--r--docs/guides/onap-user/instantiate/pre_instantiation/index.rst225
9 files changed, 1060 insertions, 0 deletions
diff --git a/docs/guides/onap-user/instantiate/index.rst b/docs/guides/onap-user/instantiate/index.rst
new file mode 100644
index 000000000..b45790342
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/index.rst
@@ -0,0 +1,32 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 AT&T Intellectual Property. All rights reserved.
+
+.. _user-guides:
+
+Instantiate
+===========
+The following guides are provided to describe tasks that a user of
+ONAP may need to perform when instantiating a service.
+
+Instantiation includes the following topics:
+
+.. toctree::
+ :maxdepth: 2
+
+ Pre-instantiation operations <./pre_instantiation/index.rst>
+
+ Instantiation operation(s) <./instantiation/index.rst>
+
+
+**e2eServiceInstance** method is a hard-coded approach with dedicated/specific
+service BPMN workflow. That means it is linked to ONAP source code
+and lifecycle.
+
+**Alacarte** method required the Operator actor to build and send
+a lot of operations. To build those requests, Operator actor needs to
+define/collect by himself all VNF parameters/values.
+
+**Macro** method required the Operator actor to build and send only one request and,
+thanks to CDS Blueprint templates, ONAP will collect and assign
+by itself all paramters/values.
diff --git a/docs/guides/onap-user/instantiate/instantiation/index.rst b/docs/guides/onap-user/instantiate/instantiation/index.rst
new file mode 100644
index 000000000..dcbe153da
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/index.rst
@@ -0,0 +1,28 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+.. _doc_guide_user_ser_inst:
+
+
+Service Instantiation methods
+=============================
+
+
+Declare PNF instances:
+
+.. toctree::
+ :maxdepth: 2
+
+ Declare PNF instances <./pnf_instance/index.rst>
+
+Instantiate a Service:
+
+.. toctree::
+ :maxdepth: 2
+
+ using ONAP VID Portal with "A La Carte" method<./vid/index.rst>
+ using ONAP UUI Portal with "e2eServiceInstance" method<./uui/index.rst>
+ using ONAP NBI REST API (TM Forum) with "A La Carte" method <./nbi/index.rst>
+ using ONAP SO REST API with "A La Carte" method <./so1/index.rst>
+ using ONAP SO REST API with "Macro" mode method <./so2/index.rst>
diff --git a/docs/guides/onap-user/instantiate/instantiation/nbi/index.rst b/docs/guides/onap-user/instantiate/instantiation/nbi/index.rst
new file mode 100644
index 000000000..696232517
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/nbi/index.rst
@@ -0,0 +1,88 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+.. _doc_guide_user_ser_inst:
+
+
+Alacarte mode Service Instantiation via ONAP NBI API (TM Forum)
+===============================================================
+
+ONAP NBI allow you to use a TM Forum standardized API (serviceOrder API)
+
+ONAP NBI will convert that request to ONAP SO request.
+
+
+ServiceOrder management in NBI will support 2 modes:
+
+* E2E integration - NBI calls SO API to perform an End-To-end integration
+* Service-level only integration - NBI will trigger only SO request at
+ serviceInstance level (not at VNF, not at Vf-module level and nothing will
+ be created on cloud platform)
+
+ONAP SO prerequisite: SO must be able to find a BPMN to process service
+fulfillment (integrate VNF, VNF activation in SDNC, VF module
+
+The choice of the mode is done by NBI depending on information retrieved
+in SDC. If the serviceSpecification is within a Category “E2E Service” ,
+NBI will use E2E SO API, if not only API at service instance level
+will be used.
+
+There is no difference or specific expectation in the service order API
+used by NBI user.
+
+
+Example of serviceOrder to instantiate (=add) a service based on model
+with id=0d463b0c-e559-4def-8d7b-df64cfbd3159
+
+
+::
+
+ curl -X POST \
+ http://nbi.api.simpledemo.onap.org:30274/nbi/api/v4/serviceOrder \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "externalId": "BSS_order_001",
+ "priority": "1",
+ "description": "this is a service order to instantiate a service",
+ "category": "Consumer",
+ "requestedStartDate": "",
+ "requestedCompletionDate": "",
+ "relatedParty": [
+ {
+ "id": "JohnDoe",
+ "role": "ONAPcustomer",
+ "name": "JohnDoe"
+ }
+ ],
+ "orderItem": [
+ {
+ "id": "1",
+ "action": "add",
+ "service": {
+ "name": "my_service_model_instance_01",
+ "serviceState": "active",
+ "serviceSpecification": {
+ "id": "0d463b0c-e559-4def-8d7b-df64cfbd3159"
+ }
+ }
+ }
+ ]
+ }'
+
+In the response, you will obtain the serviceOrderId value.
+
+Then you have the possibility to check about the serviceorder
+(here after the serviceOrderId=5d06309da0e46400017b1123).
+
+This will allow you to get the serviceOrder Status (completed, failed...)
+
+::
+
+ curl -X GET \
+ http://nbi.api.simpledemo.onap.org:30274/nbi/api/v4/serviceOrder/5d06309da0e46400017b1123 \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache'
diff --git a/docs/guides/onap-user/instantiate/instantiation/pnf_instance/index.rst b/docs/guides/onap-user/instantiate/instantiation/pnf_instance/index.rst
new file mode 100644
index 000000000..7fbfdbe79
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/pnf_instance/index.rst
@@ -0,0 +1,107 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+
+
+Declare PNF instances in ONAP
+=============================
+
+PNF instances can be declared in ONAP inventory (AAI) using REST API
+
+
+An example:
+
+::
+
+ curl -X PUT \
+ https://{{ONAP_LB_IP@}}:30233/aai/v16/network/pnfs/pnf/my_pnf_instance_001 \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Cache-Control: no-cache' \
+ -H 'Content-Type: application/json' \
+ -H 'Postman-Token: f5e2aae0-dc1c-4edb-b9e9-a93b05aee5e8' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 999' \
+ -H 'depth: all' \
+ -d '{
+ "pnf-name":" my_pnf_instance_001",
+ "equip-type":" router",
+ "nf-role":"primary",
+ "p-interfaces": {
+ "p-interface": [
+ {
+ "interface-name": "ae1",
+ "port-description": "Link aggregate for trunk between switches"
+ },
+ {
+ "interface-name": "xe-0/0/6",
+ "port-description": "to PNF_instance_002 trunk1"
+ },
+ {
+ "interface-name": "xe-0/0/2",
+ "port-description": "to PNF_instance_003 trunk1"
+ },
+ {
+ "interface-name": "xe-0/0/10",
+ "port-description": "to PNF_instance_004 trunk1"
+ },
+ {
+ "interface-name": "xe-0/0/0",
+ "port-description": "firewall trunk"
+ },
+ {
+ "interface-name": "xe-0/0/14",
+ "port-description": "to PNF_instance_005 trunk1"
+ }
+ ]
+ }
+ }' -k
+
+
+It is possible to declare the location where is deployed the PNF
+(called a "complex" in ONAP AAI)
+
+::
+
+ curl -X PUT \
+ https:// {{ONAP_LB_IP@}}:30233/aai/v11/cloud-infrastructure/complexes/complex/my_complex_name \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Cache-Control: no-cache' \
+ -H 'Content-Type: application/json' \
+ -H 'Postman-Token: 43523984-db01-449a-8a58-8888871110bc' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 999' \
+ -H 'depth: all' \
+ -d '{
+ "physical-location-type":"PoP",
+ "physical-location-id":"my_complex_name",
+ "complex-name":"Name of my Complex",
+ "city":"LANNION",
+ "postal-code":"22300",
+ "country":"FRANCE",
+ "street1":"Avenue Pierre Marzin",
+ "region":"Europe"
+ }' -k
+
+
+
+To indicate that a PNF instance is located in a complex, we create a relation
+
+::
+
+ curl -X PUT \
+ https:// {{ONAP_LB_IP@}}:30233/aai/v14/network/pnfs/pnf/my_pnf_instance_001/relationship-list/relationship \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Cache-Control: no-cache' \
+ -H 'Content-Type: application/json' \
+ -H 'Postman-Token: 15315304-17c5-4e64-aada-bb149f1af915' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 999' \
+ -H 'depth: all' \
+ -d '{
+ "related-to": "complex",
+ "related-link": "/aai/v11/cloud-infrastructure/complexes/complex/my_complex_name"
+ }' -k
diff --git a/docs/guides/onap-user/instantiate/instantiation/so1/index.rst b/docs/guides/onap-user/instantiate/instantiation/so1/index.rst
new file mode 100644
index 000000000..860f50295
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/so1/index.rst
@@ -0,0 +1,366 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+.. _doc_guide_user_ser_inst:
+
+
+AlaCarte mode Service Instantiation via ONAP SO API
+===================================================
+
+Using ONAP SO API in "Alacarte" mode, you need to send several requests,
+depending on the service model composition.
+
+For example, if your service model is composed of 2 VNF and a Network,
+you will have to build and send :
+
+* a request to SO to create the "service instance" object
+* a request to SO to create the VNF 1 instance object
+* a request to SDNC to declare VNF 1 instance parameters and values
+ (SDNC preload)
+* a request to SO to create the Vf-module 1 instance object
+* a request to SO to create the VNF 2 instance object
+* a request to SDNC to declare VNF 2 instance parameters and values
+ (SDNC preload)
+* a request to SO to create the Vf-module 2 instance object
+* a request to SO to create the Network instance object
+
+
+
+Example to request a service instance directly to ONAP SO
+
+
+TO BE COMPLETED
+
+
+
+In the response, you will obtain the serviceOrderId value.
+
+Then you have the possibility to check about the SO request
+(here after the requestId=e3ad8df6-ea0d-4384-be95-bcb7dd39bbde).
+
+This will allow you to get the serviceOrder Status (completed, failed...)
+
+::
+
+ curl -X GET \
+ http://so.api.simpledemo.onap.org:30277/onap/so/infra/orchestrationRequests/v6/e3ad8df6-ea0d-4384-be95-bcb7dd39bbde \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: get_aai_subscr' \
+ -H 'cache-control: no-cache'
+
+
+To instantiate a VNF, you need to build a complex request.
+All necessary parameters are available in the Tosca service template
+generated by SDC when you defined your service model.
+
+::
+
+ curl -X POST \
+ http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstances/v6/95762b50-0244-4723-8fde-35f911db9263/vnfs \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: get_aai_subscr' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "requestDetails": {
+ "requestInfo": {
+ "productFamilyId": "0d463b0c-e559-4def-8d7b-df64cfbd3159",
+ "instanceName": "my_service_vnf_instance_001",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "test"
+ },
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelInvariantId": "4e66bb92-c597-439e-822d-75aaa69b13d4",
+ "modelVersionId": "3b6ba59c-287c-449e-a1da-2db49984a087",
+ "modelName": "my_service_VF",
+ "modelVersion": "1.0",
+ "modelCustomizationId": "",
+ "modelCustomizationName": ""
+ },
+ "requestParameters": {
+ "userParams": [],
+ "aLaCarte": true,
+ "testApi": "VNF_API"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "my_cloud_site",
+ "tenantId": "5906b9b8fd9642df9ba1c9e290063439"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "test_LOB"
+ },
+ "platform": {
+ "platformName": "test_platform"
+ },
+ "relatedInstanceList": [{
+ "relatedInstance": {
+ "instanceId": "95762b50-0244-4723-8fde-35f911db9263",
+ "modelInfo": {
+ "modelType": "service",
+ "modelName": "my-service-model",
+ "modelInvariantId": "11265d8c-2cc2-40e5-95d8-57cad81c18da",
+ "modelVersion": "1.0",
+ "modelVersionId": "0d463b0c-e559-4def-8d7b-df64cfbd3159"
+ }
+ }
+ }]
+ }
+ }'
+
+To instantiate a VF module, you need to build two complex requests
+All necessary parameters are available in the Tosca service template
+generated by SDC when you defined your service model.
+
+1st request is called a "SDNC-preload" for a VNF object and is used
+to store in SDNC some VNF parameters values
+that will be used when instantiating
+
+::
+
+ curl -X POST \
+ http://sdnc.api.simpledemo.onap.org:30202/restconf/operations/VNF-API:preload-vnf-topology-operation \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: API client' \
+ -H 'X-TransactionId: 0a3f6713-ba96-4971-a6f8-c2da85a3176e' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "input": {
+ "request-information": {
+ "notification-url": "onap.org",
+ "order-number": "1",
+ "order-version": "1",
+ "request-action": "PreloadVNFRequest",
+ "request-id": "test"
+ },
+ "sdnc-request-header": {
+ "svc-action": "reserve",
+ "svc-notification-url": "http:\/\/onap.org:8080\/adapters\/rest\/SDNCNotify",
+ "svc-request-id": "test"
+ },
+ "vnf-topology-information": {
+ "vnf-assignments": {
+ "availability-zones": [],
+ "vnf-networks": [],
+ "vnf-vms": []
+ },
+ "vnf-parameters": [],
+ "vnf-topology-identifier": {
+ "generic-vnf-name": "my_service_vnf_instance_001",
+ "generic-vnf-type": "",
+ "service-type": "95762b50-0244-4723-8fde-35f911db9263",
+ "vnf-name": "my_service_vfmodule_001",
+ "vnf-type": ""
+ }
+ }
+ }
+ }'
+
+The 2nd request id to instantiate the VF module via ONAP SO
+(instance name must be identical in both requests)
+
+::
+
+ curl -X POST \
+ http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstances/v6/95762b50-0244-4723-8fde-35f911db9263/vnfs//vfModules \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: get_aai_subscr' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "requestDetails": {
+ "requestInfo": {
+ "instanceName": "my_vfmodule_001",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "test"
+ },
+ "modelInfo": {
+ "modelType": "vfModule",
+ "modelInvariantId": "",
+ "modelVersionId": "",
+ "modelName": "",
+ "modelVersion": "1",
+ "modelCustomizationId": "",
+ "modelCustomizationName": ""
+ },
+ "requestParameters": {
+ "userParams": [],
+ "testApi": "VNF_API",
+ "usePreload": true
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "my_cloud_site",
+ "tenantId": "5906b9b8fd9642df9ba1c9e290063439"
+ },
+ "relatedInstanceList": [{
+ "relatedInstance": {
+ "instanceId": "95762b50-0244-4723-8fde-35f911db9263",
+ "modelInfo": {
+ "modelType": "service",
+ "modelName": "my-service-model",
+ "modelInvariantId": "11265d8c-2cc2-40e5-95d8-57cad81c18da",
+ "modelVersion": "1.0",
+ "modelVersionId": "0d463b0c-e559-4def-8d7b-df64cfbd3159"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": "",
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelName": "my_service_model_VF",
+ "modelInvariantId": "4e66bb92-c597-439e-822d-75aaa69b13d4",
+ "modelVersion": "1.0",
+ "modelVersionId": "3b6ba59c-287c-449e-a1da-2db49984a087",
+ "modelCustomizationId": "",
+ "modelCustomizationName": ""
+ }
+ }
+ }]
+ }
+ }'
+
+
+
+To instantiate a Neutron Network, you need to build two complex request.
+All necessary parameters are available in the Tosca service template
+generated by SDC when you defined your service model.
+
+
+1st request is the "SDNC-preload" for a network object:
+
+::
+
+ curl -X POST \
+ http://sdnc.api.simpledemo.onap.org:30202/restconf/operations/VNF-API:preload-network-topology-operation \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: API client' \
+ -H 'X-TransactionId: 0a3f6713-ba96-4971-a6f8-c2da85a3176e' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "input": {
+ "request-information": {
+ "request-id": "postman001",
+ "notification-url": "http://so.onap.org",
+ "order-number": "postman001",
+ "request-sub-action": "SUPP",
+ "request-action": "PreloadNetworkRequest",
+ "source": "postman",
+ "order-version": "1.0"
+ },
+ "network-topology-information": {
+ "network-policy": [],
+ "route-table-reference": [],
+ "vpn-bindings": [],
+ "network-topology-identifier": {
+ "network-role": "integration_test_net",
+ "network-technology": "neutron",
+ "service-type": "my-service-2",
+ "network-name": "my_network_01",
+ "network-type": "Generic NeutronNet"
+ },
+ "provider-network-information": {
+ "is-external-network": "false",
+ "is-provider-network": "false",
+ "is-shared-network": "false"
+ },
+ "subnets": [
+ {
+ "subnet-name": "my_subnet_01",
+ "subnet-role": "OAM",
+ "start-address": "192.168.90.0",
+ "cidr-mask": "24",
+ "ip-version": "4",
+ "dhcp-enabled": "Y",
+ "dhcp-start-address": "",
+ "dhcp-end-address": "",
+ "gateway-address": "192.168.90.1",
+ "host-routes":[]
+ }
+ ]
+ },
+ "sdnc-request-header": {
+ "svc-action": "reserve",
+ "svc-notification-url": "http://so.onap.org",
+ "svc-request-id": "postman001"
+ }
+ }
+ }'
+
+
+2nd request is to instantiate the network via ONAP SO
+(instance name must be identical in both requests)
+
+
+::
+
+curl -X POST \
+ http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstances/v6/95762b50-0244-4723-8fde-35f911db9263/networks \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: get_aai_subscr' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "requestDetails": {
+ "requestInfo": {
+ "instanceName": "my_network_01",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "demo",
+ "productFamilyId": "b9ac88f7-0e1b-462d-84ac-74c3c533217c"
+ },
+ "modelInfo": {
+ "modelType": "network",
+ "modelInvariantId": "0070b65c-48cb-4985-b4df-7c67ca99cd95",
+ "modelVersionId": "4f738bed-e804-4765-8d22-07bb4d11f14b",
+ "modelName": "Generic NeutronNet",
+ "modelVersion": "1.0",
+ "modelCustomizationId": "95534a95-dc8d-4ffb-89c7-091e2c49b55d",
+ "modelCustomizationName": "Generic NeutronNet 0"
+ },
+ "requestParameters": {
+ "userParams": [],
+ "aLaCarte": true,
+ "testApi": "VNF_API"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "my_cloud_site",
+ "tenantId": "5906b9b8fd9642df9ba1c9e290063439"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "Test_LOB"
+ },
+ "platform": {
+ "platformName": "Test_platform"
+ },
+ "relatedInstanceList": [{
+ "relatedInstance": {
+ "instanceId": "95762b50-0244-4723-8fde-35f911db9263",
+ "modelInfo": {
+ "modelType": "service",
+ "modelName": "my_service_model_name",
+ "modelInvariantId": "11265d8c-2cc2-40e5-95d8-57cad81c18da",
+ "modelVersion": "1.0",
+ "modelVersionId": "0d463b0c-e559-4def-8d7b-df64cfbd3159"
+ }
+ }
+ }]
+ }
+}'
diff --git a/docs/guides/onap-user/instantiate/instantiation/so2/index.rst b/docs/guides/onap-user/instantiate/instantiation/so2/index.rst
new file mode 100644
index 000000000..314fef10f
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/so2/index.rst
@@ -0,0 +1,187 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+.. _doc_guide_user_ser_inst:
+
+
+Macro mode Service Instantiation via ONAP SO API
+================================================
+
+Using Macro mode, you have to build and send only one request to ONAP SO
+
+In that request you need to indicate all object instances
+that you want to be instantiated.
+
+Reminder : ONAP SO in Macro mode will perform the VNF parameters/values
+assignment based on CDS Blueprint templates
+that are supposed to be defined during Design and Onboard steps.
+That means ONAP has all information
+to be able to get all necessary values by itself (there is no longer need
+for an Operator to provide "SDNC preload").
+
+Request Example :
+
+::
+
+ curl -X POST \
+ 'http://{{k8s}}:30277/onap/so/infra/serviceInstantiation/v7/serviceInstances' \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "requestDetails": {
+ "subscriberInfo": {
+ "globalSubscriberId": "Demonstration"
+ },
+ "requestInfo": {
+ "suppressRollback": false,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "requestorId": "adt",
+ "instanceName": "{{cds-instance-name}}",
+ "source": "VID"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "fr1",
+ "tenantId": "6270eaa820934710960682c506115453"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "vFW",
+ "userParams": [
+ {
+ "Homing_Solution": "none"
+ },
+ {
+ "service": {
+ "instanceParams": [
+
+ ],
+ "instanceName": "{{cds-instance-name}}",
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelName": "{{vnf-modelinfo-modelname}}",
+ "modelVersionId": "{{vnf-modelinfo-modeluuid}}",
+ "modelInvariantUuid": "{{vnf-modelinfo-modelinvariantuuid}}",
+ "modelVersion": "1.0",
+ "modelCustomizationId": "{{vnf-modelinfo-modelcustomizationuuid}}",
+ "modelInstanceName": "{{vnf-modelinfo-modelinstancename}}"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "fr1",
+ "tenantId": "6270eaa820934710960682c506115453"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "someValue"
+ },
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "instanceName": "{{vnf-modelinfo-modelinstancename}}",
+ "instanceParams": [
+ {
+ "onap_private_net_id": "olc-private",
+ "onap_private_subnet_id": "olc-private",
+ "pub_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwj7uJMyKiP1ogEsZv5kKDFw9mFNhxI+woR3Tuv8vjfNnqdB1GfSnvTFyNbdpyNdR8BlljkiZ1SlwJLEkvPk0HpOoSVVek/QmBeGC7mxyRcpMB2cNQwjXGfsVrforddXOnOkj+zx1aNdVGMc52Js3pex8B/L00H68kOcwP26BI1o77Uh+AxjOkIEGs+wlWNUmXabLDCH8l8IJk9mCTruKEN9KNj4NRZcaNC+XOz42SyHV9RT3N6efp31FqKzo8Ko63QirvKEEBSOAf9VlJ7mFMrGIGH37AP3JJfFYEHDdOA3N64ZpJLa39y25EWwGZNlWpO/GW5bNjTME04dl4eRyd",
+ "image_name": "Ubuntu 14.04",
+ "flavor_name":"s1.cw.small-1"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelName": "{{vnf-vfmodule-0-modelinfo-modelname}}",
+ "modelVersionId": "{{vnf-vfmodule-0-modelinfo-modeluuid}}",
+ "modelInvariantUuid": "{{vnf-vfmodule-0-modelinfo-modelinvariantuuid}}",
+ "modelVersion": "1",
+ "modelCustomizationId": "{{vnf-vfmodule-0-modelinfo-modelcustomizationuuid}}"
+ },
+ "instanceName": "{{vnf-vfmodule-0-modelinfo-modelname}}",
+ "instanceParams": [
+ {
+ "sec_group": "olc-open",
+ "public_net_id": "olc-net"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelName": "{{vnf-vfmodule-1-modelinfo-modelname}}",
+ "modelVersionId": "{{vnf-vfmodule-1-modelinfo-modeluuid}}",
+ "modelInvariantUuid": "{{vnf-vfmodule-1-modelinfo-modelinvariantuuid}}",
+ "modelVersion": "1",
+ "modelCustomizationId": "{{vnf-vfmodule-1-modelinfo-modelcustomizationuuid}}"
+ },
+ "instanceName": "{{vnf-vfmodule-1-modelinfo-modelname}}",
+ "instanceParams": [
+ {
+ "sec_group": "olc-open",
+ "public_net_id": "olc-net"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelName": "{{vnf-vfmodule-2-modelinfo-modelname}}",
+ "modelVersionId": "{{vnf-vfmodule-2-modelinfo-modeluuid}}",
+ "modelInvariantUuid": "{{vnf-vfmodule-2-modelinfo-modelinvariantuuid}}",
+ "modelVersion": "1",
+ "modelCustomizationId": "{{vnf-vfmodule-2-modelinfo-modelcustomizationuuid}}"
+ },
+ "instanceName": "{{vnf-vfmodule-2-modelinfo-modelname}}",
+ "instanceParams": [
+ {
+ "sec_group": "olc-open",
+ "public_net_id": "olc-net"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelName": "{{vnf-vfmodule-3-modelinfo-modelname}}",
+ "modelVersionId": "{{vnf-vfmodule-3-modelinfo-modeluuid}}",
+ "modelInvariantUuid": "{{vnf-vfmodule-3-modelinfo-modelinvariantuuid}}",
+ "modelVersion": "1",
+ "modelCustomizationId": "{{vnf-vfmodule-3-modelinfo-modelcustomizationuuid}}"
+ },
+ "instanceName": "{{vnf-vfmodule-3-modelinfo-modelname}}",
+ "instanceParams": [
+ {
+ "sec_group": "olc-open",
+ "public_net_id": "olc-net"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "modelInfo": {
+ "modelVersion": "1.0",
+ "modelVersionId": "{{service-uuid}}",
+ "modelInvariantId": "{{service-invariantUUID}}",
+ "modelName": "{{service-name}}",
+ "modelType": "service"
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "Project-Demonstration"
+ },
+ "owningEntity": {
+ "owningEntityId": "24ef5425-bec4-4fa3-ab03-c0ecf4eaac96",
+ "owningEntityName": "OE-Demonstration"
+ },
+ "modelInfo": {
+ "modelVersion": "1.0",
+ "modelVersionId": "{{service-uuid}}",
+ "modelInvariantId": "{{service-invariantUUID}}",
+ "modelName": "{{service-name}}",
+ "modelType": "service"
+ }
+ }
+ }'
diff --git a/docs/guides/onap-user/instantiate/instantiation/uui/index.rst b/docs/guides/onap-user/instantiate/instantiation/uui/index.rst
new file mode 100644
index 000000000..dd57c0891
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/uui/index.rst
@@ -0,0 +1,14 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+
+e2eServiceInstance mode via ONAP UUI Portal
+===========================================
+
+
+.. toctree::
+ :maxdepth: 1
+ :titlesonly:
+
+ ../../../../submodules/usecase-ui.git/docs/platform/installation/user-guide/index.rst
diff --git a/docs/guides/onap-user/instantiate/instantiation/vid/index.rst b/docs/guides/onap-user/instantiate/instantiation/vid/index.rst
new file mode 100644
index 000000000..78b4e4c03
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/instantiation/vid/index.rst
@@ -0,0 +1,13 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+
+Alacarte mode Service Instantiation via ONAP VID Portal
+=======================================================
+
+. toctree::
+ :maxdepth: 1
+ :titlesonly:
+
+ ../../../../submodules/vid.git/docs/humaninterfaces.rst
diff --git a/docs/guides/onap-user/instantiate/pre_instantiation/index.rst b/docs/guides/onap-user/instantiate/pre_instantiation/index.rst
new file mode 100644
index 000000000..ca9af13d7
--- /dev/null
+++ b/docs/guides/onap-user/instantiate/pre_instantiation/index.rst
@@ -0,0 +1,225 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 ONAP Contributors. All rights reserved.
+
+.. _doc_guide_user_pre_ser-inst:
+
+
+Pre Service instantiation Operations
+====================================
+
+Several operations need to be performed after Service model distribution,
+but before instantiating a service.
+
+Those operations are only available via REST API requests.
+
+Various tools can be used to send REST API requests.
+
+Here after are examples using "curl" command line tool that you can use in
+a Unix Terminal.
+
+
+Declare owningEntity, lineOfBusiness, Platform and Project
+----------------------------------------------------------
+
+At one point during Service Instantiation, the user need to select values for
+those 4 parameters
+
+* Owning Entity
+* Line Of Business
+* Platform
+* Project
+
+
+Those parameters and values must be pre-declared in ONAP VID component
+using REST API
+
+Those informations will be available to all service instantiation
+(you only need to declare them once in ONAP)
+
+
+Example for "Owning Entity" named "Test"
+
+::
+
+ curl -X POST \
+ http://vid.api.simpledemo.onap.org:30238/vid/maintenance/category_parameter/owningEntity \
+ -H 'Accept-Encoding: gzip, deflate' \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "options": ["Test"]
+ }'
+
+Example for "platform" named "Test_Platform"
+
+::
+
+ curl -X POST \
+ http://vid.api.simpledemo.onap.org:30238/vid/maintenance/category_parameter/platform \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "options": [""Test_Platform"]
+ }'
+
+Example for "line of business" named "Test_LOB"
+
+::
+
+ curl -X POST \
+ http://vid.api.simpledemo.onap.org:30238/vid/maintenance/category_parameter/lineOfBusiness \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "options": ["Test_LOB"]
+ }'
+
+Example for "project" named "Test_project"
+
+::
+
+ curl -X POST \
+ http://vid.api.simpledemo.onap.org:30238/vid/maintenance/category_parameter/project \
+ -H 'Content-Type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "options": ["Test_project"]
+ }'
+
+
+
+
+Declare a customer
+------------------
+
+Each time you have a new customer, you will need to perform those operations
+
+This operation is using ONAP AAI REST API
+
+Any service instance need to be linked to a customer
+
+in the query path, you put the customer_name
+
+in the query body you put the customer name again
+
+Here after an example to declare a customer named "my_customer_name"
+
+
+::
+
+ curl -X PUT \
+ https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/business/customers/customer/my_customer_name \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 808b54e3-e563-4144-a1b9-e24e2ed93d4f' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "global-customer-id": "my_customer_name",
+ "subscriber-name": "my_customer_name",
+ "subscriber-type": "INFRA"
+ }' -k
+
+
+check customers in ONAP AAI (you should see if everything ok in the response)
+
+::
+
+ curl -X GET \
+ https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/business/customers \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 808b54e3-e563-4144-a1b9-e24e2ed93d4f' \
+ -H 'cache-control: no-cache' -k
+
+
+Associate Service Model to Customer
+-----------------------------------
+
+
+This operation is using ONAP AAI REST API
+
+in the query path, you put the customer_name and the service model name
+
+in the query body you put the service model UUID
+
+::
+
+ curl -X PUT \
+ https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/business/customers/customer/my_customer_name/service-subscriptions/service-subscription/my_service_model_name \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'Postman-Token: d4bc4991-a518-4d75-8a87-674ba44bf13a' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 808b54e3-e563-4144-a1b9-e24e2ed93d4f' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "service-id": "11265d8c-2cc2-40e5-95d8-57cad81c18da"
+ }' -k
+
+
+
+
+Associate Cloud Site to Customer
+--------------------------------
+
+in the query path, you put the customer_name and the service model name
+
+in the query body you put the cloud owner name, the cloud site name,
+the tenant id and the tenant name
+
+
+::
+
+ curl -X PUT \
+ https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/business/customers/customer/my_customer_name/service-subscriptions/service-subscription/my_service_model_name/relationship-list/relationship \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'Postman-Token: 11ea9a9e-0dc8-4d20-8a78-c75cd6928916' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 808b54e3-e563-4144-a1b9-e24e2ed93d4f' \
+ -H 'cache-control: no-cache' \
+ -d '{
+ "related-to": "tenant",
+ "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/my_cloud_owner_name/my_cloud_site_name/tenants/tenant/234a9a2dc4b643be9812915b214cdbbb",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "my_cloud_owner_name"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "my_cloud_site_name"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "234a9a2dc4b643be9812915b214cdbbb"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "tenant.tenant-name",
+ "property-value": "my_tenant_name"
+ }
+ ]
+ }' -k
+
+
+check (you should see if everything ok in the response)
+
+::
+
+ curl -X GET \
+ 'https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/business/customers/customer/my_customer_name/service-subscriptions?depth=all' \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic QUFJOkFBSQ==' \
+ -H 'Content-Type: application/json' \
+ -H 'X-FromAppId: AAI' \
+ -H 'X-TransactionId: 808b54e3-e563-4144-a1b9-e24e2ed93d4f' \
+ -H 'cache-control: no-cache' -k