- 1 Analysis
- 1.1 vFirewall Demo Sequence of Events
- 1.2 Status (current/future) Flow
- 1.2.1 Variables
- 1.2.2 Prerequisites
- 1.2.3 Config
- 1.2.4 Service Deployment
- 1.2.5 VNF Creation
- 1.2.6 VfModule Preload
- 1.2.7 VfModule Creation
- 1.2.8 Closed Loop
- 1.2.9 API History
- 2 Design Issues
- 2.1 DI 1: 20170712: AAI Cert required for HTTPS REST calls
- 2.2 DI 2: 20170712: Spring Boot Backend Framework
- 2.3 DI 3: 20170712: JAX-RS 2.0 API Framework
- 2.4 DI 4: 20170712: 3D Framework: Three js OpenGL 3D wrapper on Canvas
- 2.5 Di 5: 20170712: Javascript Timer Framework
- 2.6 DI 6: 20170712: Three js Listener
- 2.7 DI 7: 20170712: Three js Edges between Nodes
- 2.8 DI 8: 20170712: Three js Click Context
- 2.9 DI 9: 20170712: AJAX JAX-RS Channel
- 2.10 DI 10: 20170712: WebSocket Channel
- 2.11 DI 11: 20170712: React.js Framework
- 2.12 DI 12: 20170712: Three js Text
- 2.13 DI 13: 20170721: Demo Robot REST extraction
- 2.14 DI 20: 20170721: Rest API Chaining
- 2.15 DI 21: 20170727: Parse VF-Module IPs from endpoint after VF-Module creation
- 2.16 DI 22: 20170728: Determine Healthcheck for vFW VMs are ready for appc Closed-Loop
- 2.17 DI 23: 20170728: Add granular Policy healthcheck for PDBD/PAP/PDP
- 2.18 DI 24: 20170728: Add TCA topic event capture between Policy and APPC
- 2.19 DI 25: 20170806: Add jcloud API to query VMs via Nova
- 2.20 DI 26: 20170806: Add docker ps parse calls to get docker health
- 3 Notes
Warning: Draft Content
This wiki is under construction - this is an evolving POC
https://lf-onap.atlassian.net/browse/UCA-20
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 |
|
| 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:
| 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
|
| 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" }, { |