UCA-20 OSS JAX-RS 2 Client
Warning: Draft Content
This wiki is under construction - this is an evolving POC
- UCA-20Getting issue details... STATUS
Purpose: prototype a REST client on top of ONAP - specifically for VF-Module orchestration.
Analysis
vFirewall Demo Sequence of Events
All the events during a VF creation so we can understand all the orchestration steps at a granular REST level.
Passwords in /testsuite/properties/integration_robot_properties.py
Status (current/future) Flow
Before | After (REST extraction) |
---|---|
in demo.sh init (customer create, service model create) in vid deploy service model in vid create service instance in vid add vnf to service instance in demo.sh preload in vid vf-module creation in demo.sh appc | 2 AAI rest calls unchanged vid unchanged vid unchanged vid SDNC rest call MSO rest call unchanged robot |
Variables
IAD region
key | name | value |
---|---|---|
service | c54316d8-464e-4967-bece-8c2b2f458b66 | |
VNF | 6229cdee-10f6-4ec4-a5e0-0593154e6d83 | |
VfModule | 5a08199b-4161-4181-9b2d-da29f6df1410 |
Prerequisites
Seq | Name | Source | Target | Actor | REST write | REST read |
---|---|---|---|---|---|---|
License Model | http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-license-models FD0FBEDB1AB64D1CA1A4E266862CAEE7 | |||||
Licence Key Group | where id is from LM above http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-license-models/FD0FBEDB1AB64D1CA1A4E266862CAEE7/license-key-groups | |||||
Entitlement Pool | where id is from LM above http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-license-models/FD0FBEDB1AB64D1CA1A4E266862CAEE7/entitlement-pools | |||||
Feature Group | where id is from LM above http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-license-models/FD0FBEDB1AB64D1CA1A4E266862CAEE7/feature-groups | |||||
License Aggreement | where id is from LM above http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-license-models/FD0FBEDB1AB64D1CA1A4E266862CAEE7/license-agreements | |||||
VSP | http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-software-products get index by LM id "vendorId": "FD0FBEDB1AB64D1CA1A4E266862CAEE7" |
Config
Seq | Name | Source | Target | Actor | robot | REST write | REST read |
---|---|---|---|---|---|---|---|
create customer | robot | aai | ./demo.sh init | Executing robot tests at log level TRACE ============================================================================== OpenECOMP ETE ============================================================================== OpenECOMP ETE.Robot ============================================================================== OpenECOMP ETE.Robot.Testsuites ============================================================================== OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestration Test ... ============================================================================== Initialize Customer And Models | PASS | ------------------------------------------------------------------------------ OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestrat... | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE.Robot.Testsuites | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE.Robot | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== Output: /share/logs/demo/InitDemo/output.xml Log: /share/logs/demo/InitDemo/log.html Report: /share/logs/demo/InitDemo/report.html | PUT https://{{aai_ip}}:8443/aai/v8/business/customers/customer/ONAP-User { "global-customer-id": "ONAP-User", however on a clean system - where the tenant target node in the graph db does not exist yet - we fail { | https://{{aai_ip}}:8443/aai/v8/business/customers/customer { "global-customer-id": "Demonstration","subscriber-name": "Demonstration", | |
create service model | robot | aai | ./demo.sh init | PUT aai/v8/service-design-and-creation/services { "service-id": "${UUID}", | https://{{aai_ip}}:8443/aai/v8/service-design-and-creation/models "model-name-version-id": "dcb40136-9cec-45be-b080-2a36b31c2f06", |
Service Deployment
Seq | Name | Source | Target | Actor | REST write | REST read | REST delete |
---|---|---|---|---|---|---|---|
deploy service model | vid | aai | demo user | 9023f592-5c64-4a5b-9333-3287fdc9d304 | |||
create service instance | vid | aai | demo user | Input: InstanceName=DemoInstance Output: 07/27/17 12:10:39 HTTP Status: OK (200) { "request": { "requestId": "96dcaa23-88cb-41ac-bf8c-e1e5bb423232", "startTime": "Wed, 26 Jul 2017 16:10:26 GMT", "requestScope": "service", "requestType": "createInstance", "requestDetails": { "modelInfo": { "modelCustomizationName": null, "modelInvariantId": "43d59b70-8829-4a50-a3f7-d261b220ceef", "modelType": "service", "modelNameVersionId": "dcb40136-9cec-45be-b080-2a36b31c2f06", "modelName": "vfservice", "modelVersion": "1.0" }, "requestInfo": { "billingAccountNumber": null, "callbackUrl": null, "correlator": null, "orderNumber": null, "productFamilyId": null, "orderVersion": null, "source": "VID", "instanceName": "DemoInstance", "suppressRollback": false }, "relatedInstanceList": null, "subscriberInfo": { "globalSubscriberId": "Demonstration", "subscriberName": null }, "cloudConfiguration": null, "requestParameters": { "subscriptionServiceType": "vFW", "userParams": [] } }, "instanceReferences": { "serviceInstanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167", "serviceInstanceName": "DemoInstance", "vnfInstanceId": null, "vnfInstanceName": null, "vfModuleInstanceId": null, "vfModuleInstanceName": null, "volumeGroupInstanceId": null, "volumeGroupInstanceName": null, "networkInstanceId": null, "networkInstanceName": null }, "requestStatus": { "requestState": "COMPLETE", "statusMessage": "Service Instance has been created successfully.", "percentProgress": 100, "finishTime": "Wed, 26 Jul 2017 16:10:31 GMT" } } } 07/27/17 12:10:28 HTTP Status: Accepted (202) { "requestReferences": { "instanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167", "requestId": "96dcaa23-88cb-41ac-bf8c-e1e5bb423232" } } | https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/ { "service-instance": [{ | http://{{mso_ip}}:8080/ecomp/mso/infra/serviceInstances/v2/cd2eb659-2463-461b-9c3b-3bf03619c167 { |
VNF Creation
Seq | Name | Source | Target | Actor | REST write | REST read | REST delete |
---|---|---|---|---|---|---|---|
Add VNF to Service Instance | vid | sdc | demo user | 07/27/17 12:15:13 HTTP Status: OK (200) { "request": { "requestId": "e867be64-e725-4e29-8448-c9eceb51ce3c", "startTime": "Wed, 26 Jul 2017 16:15:02 GMT", "requestScope": "vnf", "requestType": "createInstance", "requestDetails": { "modelInfo": { "modelCustomizationName": "vsp 1", "modelInvariantId": "27036887-1053-48e8-a55e-3d2a7264a658", "modelType": "vnf", "modelNameVersionId": "b63a0b42-a151-460a-9bb2-ba469948622b", "modelName": "vsp", "modelVersion": "1.0" }, "requestInfo": { "billingAccountNumber": null, "callbackUrl": null, "correlator": null, "orderNumber": null, "productFamilyId": "03606d31-c2f3-483e-9882-6d050ab3610f", "orderVersion": null, "source": "VID", "instanceName": "DemoVNF", "suppressRollback": false }, "relatedInstanceList": [ { "relatedInstance": { "instanceName": null, "instanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167", "modelInfo": { "modelCustomizationName": null, "modelInvariantId": "43d59b70-8829-4a50-a3f7-d261b220ceef", "modelType": "service", "modelNameVersionId": "dcb40136-9cec-45be-b080-2a36b31c2f06", "modelName": "vfservice", "modelVersion": "1.0" } } } ], "subscriberInfo": null, "cloudConfiguration": { "aicNodeClli": null, "tenantId": "your_tenant_id", "lcpCloudRegionId": "DFW" }, "requestParameters": { "subscriptionServiceType": null, "userParams": [] } }, "instanceReferences": { "serviceInstanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167", "serviceInstanceName": null, "vnfInstanceId": "110f0e9c-52f9-4b12-8bd8-fa2980e48454", "vnfInstanceName": "DemoVNF", "vfModuleInstanceId": null, "vfModuleInstanceName": null, "volumeGroupInstanceId": null, "volumeGroupInstanceName": null, "networkInstanceId": null, "networkInstanceName": null }, "requestStatus": { "requestState": "COMPLETE", "statusMessage": "Vnf has been created successfully.", "percentProgress": 100, "finishTime": "Wed, 26 Jul 2017 16:15:03 GMT" } } } 07/27/17 12:15:02 HTTP Status: Accepted (202) { "requestReferences": { "instanceId": "110f0e9c-52f9-4b12-8bd8-fa2980e48454", "requestId": "e867be64-e725-4e29-8448-c9eceb51ce3c" } } | get VSPs http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-software-products "name": "vsp", https://{{aai_ip}}:8443/aai/v8/network/generic-vnfs/generic-vnf/6229cdee-10f6-4ec4-a5e0-0593154e6d83 | DEL http://{{mso_ip}}:8080/ecomp/mso/infra/serviceInstances/v2/cd2eb659-2463-461b-9c3b-3bf03619c167/vnfs/42aa89af-cd4e-43d1-8b58-73e8f6b33097 | |
VfModule Preload
Seq | Name | Source | Target | Actor | robot | REST write | REST read |
---|---|---|---|---|---|---|---|
preload vnf | robot | ./demo.sh preload <DemoVNF> <DemoModule> or http://sdnc:8843/login | Starting Xvfb on display :89 with res 1280x1024x24 Executing robot tests at log level TRACE ============================================================================== OpenECOMP ETE ============================================================================== OpenECOMP ETE.Robot ============================================================================== OpenECOMP ETE.Robot.Testsuites ============================================================================== OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestration Test ... ============================================================================== Preload VNF | PASS | ------------------------------------------------------------------------------ OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestrat... | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE.Robot.Testsuites | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE.Robot | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== Output: /share/logs/demo/PreloadDemo/output.xml Log: /share/logs/demo/PreloadDemo/log.html Report: /share/logs/demo/PreloadDemo/report.html | http://{{sdnc_ip}}:8282/restconf/operations/VNF-API:preload-vnf-topology-operation where "service-type" = the root service instance id at top of vid page (do a get on - https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/ Accept:application/json Content-Type:application/json X-TransactionId:0a3f6713-ba96-4971-a6f8-c2da85a3176e X-FromAppId:API client Authorization:Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== { "input": { "request-information": { "notification-url": "openecomp.org", "order-number": "1", "order-version": "1", "request-action": "PreloadVNFRequest", "request-id": "test" }, "sdnc-request-header": { "svc-action": "reserve", "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify", "svc-request-id": "test" }, "vnf-topology-information": { "vnf-assignments": { "availability-zones": [], "vnf-networks": [], "vnf-vms": [] }, "vnf-parameters": [{ "vnf-parameter-name": "vfw_private_ip_0", "vnf-parameter-value": "192.168.110.100" }, { "vnf-parameter-name": "vfw_private_ip_1", "vnf-parameter-value": "192.168.120.100" }, { "vnf-parameter-name": "vfw_private_ip_2", "vnf-parameter-value": "10.1.0.11" }, { "vnf-parameter-name": "vpg_name_0", "vnf-parameter-value": "demofwl01pgn" }, { "vnf-parameter-name": "demo_artifacts_version", "vnf-parameter-value": "1.0.0" }, { "vnf-parameter-name": "ecomp_private_net_cidr", "vnf-parameter-value": "10.0.0.0/8" }, { "vnf-parameter-name": "key_name", "vnf-parameter-value": "vfw_keydemo" }, { "vnf-parameter-name": "repo_url_artifacts", "vnf-parameter-value": "https://nexus.onap.org/content/groups/staging" }, { "vnf-parameter-name": "protected_private_net_id", "vnf-parameter-value": "demofwl_protected" }, { "vnf-parameter-name": "vpg_private_ip_0", "vnf-parameter-value": "192.168.110.200" }, { "vnf-parameter-name": "vpg_private_ip_1", "vnf-parameter-value": "10.1.0.12" }, { "vnf-parameter-name": "unprotected_private_net_cidr", "vnf-parameter-value": "192.168.110.0/24" }, { "vnf-parameter-name": "dcae_collector_ip", "vnf-parameter-value": "10.0.4.102" }, { "vnf-parameter-name": "repo_url_blob", "vnf-parameter-value": "https://nexus.onap.org/content/repositories/raw" }, { "vnf-parameter-name": "vsn_private_ip_0", "vnf-parameter-value": "192.168.120.250" }, { "vnf-parameter-name": "vsn_private_ip_1", "vnf-parameter-value": "10.1.0.13" }, { "vnf-parameter-name": "vsn_name_0", "vnf-parameter-value": "demofwl01snk" }, { "vnf-parameter-name": "vfw_name_0", "vnf-parameter-value": "demofwl01fwl" }, { "vnf-parameter-name": "pub_key", "vnf-parameter-value": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4KVwhTJVTTeB6CqrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVPKSIeH63kgVugwgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMTLKXvZZZGqxW94bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poTQnQm/3D6hiJICrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7D7M/yj292RT1XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOw== rsa-key-20161026" }, { "vnf-parameter-name": "ecomp_private_net_id", "vnf-parameter-value": "oam_ecomp_LbMf" // wrong network oam_ecomp_QbZ1 will fail vfModule creation later (get it from an openstack server call) }, { "vnf-parameter-name": "dcae_collector_port", "vnf-parameter-value": "8080" }, { "vnf-parameter-name": "unprotected_private_net_id", "vnf-parameter-value": "demofwl_unprotected" }, { "vnf-parameter-name": "ecomp_private_subnet_id", "vnf-parameter-value": "oam_ecomp_LbMf" }, { "vnf-parameter-name": "protected_private_net_cidr", "vnf-parameter-value": "192.168.120.0/24" } ], "vnf-topology-identifier": { "generic-vnf-name": "DemoVNF", "generic-vnf-type": "service/vsp 1", "service-type": "c54316d8-464e-4967-bece-8c2b2f458b66", "vnf-name": "DemoModule", "vnf-type": "Vsp..base_vfw..module-0" } } }} output { "output": { see also Tutorial: Creating a Service Instance from a Design Model#PreloadFlow | http://{{sdnc_ip}}:8282/restconf/config/VNF-API:preload-vnfs { "preload-vnfs": { http://{{sdnc_ip}}:8282/restconf/config/VNF-API:preload-vnfs/vnf-preload-list/DemoModule/Vsp..base_vfw..module-0 {"vnf-preload-list": [{ | ||
VfModule Creation
Closed Loop
Seq | Name | Source | Target | Actor | Robot | REST write | REST read |
---|---|---|---|---|---|---|---|
appc | robot | ./demo.sh appc <DemoModule> | Starting Xvfb on display :89 with res 1280x1024x24 Executing robot tests at log level TRACE ============================================================================== OpenECOMP ETE ============================================================================== OpenECOMP ETE.Robot ============================================================================== OpenECOMP ETE.Robot.Testsuites ============================================================================== OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestration Test ... ============================================================================== Create APPC Mount Point | PASS | ------------------------------------------------------------------------------ OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestrat... | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ============================================================================== OpenECOMP ETE.Robot.Testsuites | PASS | 1 critical test, 1 passed, 0 failed 1 test total, 1 passed, 0 failed ========================================= |