diff options
8 files changed, 810 insertions, 16 deletions
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java b/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java index 469a7ad7e4..354c3d07f7 100644 --- a/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java +++ b/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java @@ -9,9 +9,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -67,35 +67,35 @@ public class R__CloudConfigMigration implements JdbcMigration, MigrationInfoProv public void migrate(Connection connection) throws Exception { logger.debug("Starting migration for CloudConfig"); - CloudConfig cloudConfig = null; + CloudConfig cloudConfiguration = null; // Try the override file String configLocation = System.getProperty("spring.config.additional-location"); if (configLocation != null) { try (InputStream stream = new FileInputStream(Paths.get(configLocation).normalize().toString())) { - cloudConfig = loadCloudConfig(stream); + cloudConfiguration = loadCloudConfig(stream); } catch (Exception e) { logger.warn("Error Loading override.yaml", e); } } - if (cloudConfig == null) { + if (cloudConfiguration == null) { logger.debug("No CloudConfig defined in {}", configLocation); // Try the application.yaml file try (InputStream stream = R__CloudConfigMigration.class.getResourceAsStream(getApplicationYamlName())) { - cloudConfig = loadCloudConfig(stream); + cloudConfiguration = loadCloudConfig(stream); } - if (cloudConfig == null) { + if (cloudConfiguration == null) { logger.debug("No CloudConfig defined in {}", getApplicationYamlName()); } } - if (cloudConfig != null) { - migrateCloudIdentity(cloudConfig.getIdentityServices().values(), connection); - migrateCloudSite(cloudConfig.getCloudSites().values(), connection); - migrateCloudifyManagers(cloudConfig.getCloudifyManagers().values(), connection); + if (cloudConfiguration != null) { + migrateCloudIdentity(cloudConfiguration.getIdentityServices().values(), connection); + migrateCloudSite(cloudConfiguration.getCloudSites().values(), connection); + migrateCloudifyManagers(cloudConfiguration.getCloudifyManagers().values(), connection); } } @@ -110,13 +110,13 @@ public class R__CloudConfigMigration implements JdbcMigration, MigrationInfoProv private CloudConfig loadCloudConfig(InputStream stream) throws IOException { ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); R__CloudConfigMigration cloudConfigMigration = mapper.readValue(stream, R__CloudConfigMigration.class); - CloudConfig cloudConfig = cloudConfigMigration.getCloudConfig(); + CloudConfig cloudConfiguration = cloudConfigMigration.getCloudConfig(); - if (cloudConfig != null) { - cloudConfig.populateId(); + if (cloudConfiguration != null) { + cloudConfiguration.populateId(); } - return cloudConfig; + return cloudConfiguration; } private String getApplicationYamlName() { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java index 1516f289fe..1abe1ccc73 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java @@ -434,7 +434,7 @@ public class ServicePluginFactory { } } - logger.error("There is no matching logical link for allowed list :" + allowedList.toString()); + logger.error("There is no matching logical link for allowed list :" + Arrays.toString(allowedList)); return null; } else { logger.info("link customization is not required"); diff --git a/docs/developer_info/instantiate/instantiation/nbi/index.rst b/docs/developer_info/instantiate/instantiation/nbi/index.rst new file mode 100644 index 0000000000..96bbc3a8dd --- /dev/null +++ b/docs/developer_info/instantiate/instantiation/nbi/index.rst @@ -0,0 +1,97 @@ +.. 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_nbi: + + +Service Instantiation via ONAP NBI API (TM Forum) +================================================= + +ONAP NBI allow you to use a TM Forum standardized API (serviceOrder API) + +Additional info in: + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + NBI Guide <../../../../../submodules/externalapi/nbi.git/docs/offeredapis/offeredapis.rst> + + +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/developer_info/instantiate/instantiation/pnf_instance/index.rst b/docs/developer_info/instantiate/instantiation/pnf_instance/index.rst new file mode 100644 index 0000000000..7fbfdbe79f --- /dev/null +++ b/docs/developer_info/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/developer_info/instantiate/instantiation/so1/index.rst b/docs/developer_info/instantiate/instantiation/so1/index.rst new file mode 100644 index 0000000000..86f03bdd38 --- /dev/null +++ b/docs/developer_info/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_so1: + + +A La Carte mode Service Instantiation via ONAP SO API +===================================================== + +Using ONAP SO API in "A La Carte" 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 needed for the instantiation + +:: + + 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 is 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/developer_info/instantiate/instantiation/so2/index.rst b/docs/developer_info/instantiate/instantiation/so2/index.rst new file mode 100644 index 0000000000..02a5f70d3c --- /dev/null +++ b/docs/developer_info/instantiate/instantiation/so2/index.rst @@ -0,0 +1,197 @@ +.. 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_so2: + + +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"). + +Additional info in: + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + CDS Documentation <../../../../../submodules/ccsdk/cds.git/docs/index.rst> + CDS vDNS E2E Automation <https://wiki.onap.org/display/DW/vDNS+CDS+Dublin> + + +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/developer_info/instantiate/instantiation/uui/index.rst b/docs/developer_info/instantiate/instantiation/uui/index.rst new file mode 100644 index 0000000000..fa57be2717 --- /dev/null +++ b/docs/developer_info/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/developer_info/instantiate/instantiation/vid/index.rst b/docs/developer_info/instantiate/instantiation/vid/index.rst new file mode 100644 index 0000000000..307ceb9819 --- /dev/null +++ b/docs/developer_info/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. + + +A La Carte mode Service Instantiation via ONAP VID Portal +========================================================= + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + ../../../../../submodules/vid.git/docs/humaninterfaces.rst |