BBS Portal External API Design Adrian OSullivan Adrian
BBS Portal <-> External API Design Adrian O’Sullivan – Adrian. Osullivan@huawei. com
BBS Use case proposal Focus for Ext. API LLD is for the Communication between OSS/BSS Portal and ONAP https: //wiki. onap. org/pages/viewpage. action? page. Id=45297636
Ext. API Requirement Analysis: HSIA Service Creation and Activation (includes ONT Pn. P) BBS Portal <-> Ext. API 1 1) The OSS/BSS ordering portal populates the HSIA CFS Service Characteristics in an order. Item and sends the Service Order to ONAP External API. 2) External API Framework calls SO e 2 eservice. Instances API via POST to create service 3) SO reveals that the operation progress is 100% and complete 4) External API framework triggers a notification to the OSS/BSS listener that the Service Order is complete. 2 No New Requirements: - Assumes the existing Service Order with an order. Item action of “add” can be used to create the Service Instance. - The OSS/BSS can use with the GET service. Order API to track Service Order completion. Or the OSS/BSS can register a listener for Order State Changes. This relies on registering a Hub listener from the ordering portal to receive Service. Order. State. Change. Notification from Ext. API. - Assumes External API polls SO for operation progress as was the case in Casablanca release due to SO not supporting Service Notifications. ………. . Rest of the Flow SO -> Controllers ………. . 4 3
CFS Service Order for HSIA Service Create and Activation BBS Portal -> Ext. API Service Order: • The BBS Portal can optionally suppy their own external tracking ID Id required. Ext. API will generate an order ID also that can be used to track the order in the response. • The related. Party is set according to the CFS Customer, where related. Party. id will map to the AAI "global-customer-id“ in the “customer” object. • The service. Specification. id is to be set to the uuid of the HSIA CFS from SDC ( i. e. this is the template for the Service we are ordering ) • The BBS Portal needs to capture the values for the requested Service. Characteristics that are required as Inputs to the CFS HSIA Service model from SDC ( full list from modelling team ) • When ready BBS POST this JSON body to /{api_url}/nbi/api/v 4/service. Order/ • Response Includes the Service. Order id for tracking { "external. Id": "BBS_BSS_Trackind. Id 3584", "category": "Network Service", "description": "Service Order for a new HSIA CFS", "priority": "1", "related. Party": [ { "id": "BBSCustomer. Id 1", This is the customer id used in AAI Service Instance hierarchy "role": "ONAPcustomer", "name": "Enterprise. A", "@referred. Type": "Consumer" }], "order. Item": [ { "id": "1", "action": "add", "service": { "name": “BBS_Service_1234", "service. State": "active", Note this is only a requested state, not actual order. Item/Service state "service. Specification": { "id": "1 e 3 fddb 0 -9 e 36 -46 c 6 -862 c-236 d 9 c 626400“ The uuid from SDC of the HSIA CFS }, "service. Characteristic": [ { "name": "Up. Stream-Speed", "value": { "service. Characteristic. Value": "20" } }, { "name": "Down. Stream. Speed", "value": { "service. Characteristic. Value": "100" } } Add whatever other Inputs we model in SDC for the HSIA CFS here…. ] } } n 4 ] }
Service Order Tracking – Using REST API BBS Portal -> Ext. API Service Order Tracking: • The BBS Portal should receive the Service Order Id which can be used for tracking the order in the service Order POST response e. g. "id": "5 af 2 e 0914 bf 3 d 66721 c 09 c 3 f" • The Portal can poll the REST API GET /{api_url}/nbi/api/v 4/service. Order/{order. Id} To retrieve order state which indicates the Progress. • The state of the Order for BBS which is will have one order. Item for CFS should be one of ACKNOWLEDGED, REJECTED, INPROGRESS, COMPLETED or FAILED • State of Order. Item for BBS should be the same. The order. Item is linked on a 1 -2 -1 basis with the service Instance for CFS service. Service. id is only available once order. Item has gone from ACKNOWLEDGED to INPROGRESS, i. e. only once SO has created service instance in A&AI and started to orchestrate • Alternatively / in Parallel the BBS Portal can also register a listener to retrieve notifications on Service Order State Changes ( see next slide ) { "id": "5 af 2 e 0914 bf 3 d 66721 c 09 c 3 f", "href": "service. Order/5 af 2 e 0914 bf 3 d 66721 c 09 c 3 f", "state": “INPROGRESS", This is the Order State - if an order had many items then summarizes them "external. Id": "BBS_BSS_Trackind. Id 3584", "category": "Network Service", "description": "Service Order for a new HSIA CFS", "priority": "1", "related. Party": [ { "id": "BBSCustomer. Id 1", This is the customer id used in AAI Service Instance hierarchy "role": "ONAPcustomer", "name": "Enterprise. A", "@referred. Type": "Consumer" }], "order. Item": [ { "id": "1", "state": “INPROGRESS", This is the Order. Item State "action": "add", "service": { “id” : “c 96 fb 8 ec-8552 -4956 -8 a 8 d-65680 aaa 57 cc”, service instance id in A&AI "name": “BBS_Service_1234", "service. State": "active", "service. Specification": { "id": "1 e 3 fddb 0 -9 e 36 -46 c 6 -862 c-236 d 9 c 626400“ The uuid from SDC of the HSIA CFS }, "service. Characteristic": [ { "name": "Up. Stream-Speed", "value": { "service. Characteristic. Value": "20" } }, { "name": "Down. Stream. Speed", "value": { "service. Characteristic. Value": "100" } n 5 } Add whatever other Inputs we model in SDC for the HSIA CFS here…. ] }
BBS BSS Portal: How to register BBS External OSS/BSS Listeners BBS Portal -> Ext. API POST http: //xx. yy. tt. rr: 30274/nbi/api/v 4/hub { "callback": "http: //bbsportalhost: port/service. Order. State. Listener/listener/v 1/", "query": "event. Type = Service. Order. State. Change. Notification" } POST http: //xx. yy. tt. rr: 30274/nbi/api/v 3/hub { "callback": "http: //bbsportalhost: port/Service. Attribute. Value. Change. Listener/listener/v 1/", "query": "event. Type = Service. Creation. Notification, Service. Attribute. Value. Change. Notification, Service. Remove. Notification" } GET http: //xx. yy. tt. rr: 30274/nbi/api/v 4/hub External API hub resource: • The BBS Portal can register its listeners addressed for external notifications using the hub API POST /{api_url}/nbi/api/v 4/service. Order/{order. Id} • To retrieve order state tracking notifications for the BBS Portal Order tracking UI, it can provide a service. Order. State. Listener URI that Ext. API will POST order state change events to. • To retrieve attribute change tracking notifications for the BBS Portal Service Instance tracking UI functions, it can provide a Service. Attribute. Value. Change. Listener URI that Ext. API will POST service instance attribute change events made to the service instance in A&AI. • The events will include a href to the object the event is associated with, which for Service Orders is a href to the Service. Order and for Service Inventory is a href to the Service Instance. [ { "id": "5 c 654 c 228 ffdcd 0001 d 11 ba 2", "callback": "http: //bbsportalhost: port/service. Order. State. Listener/listener/v 1/", "query": "event. Type=Service. Order. State. Change. Notification" }, { "id": "5 c 654 d 5 e 8 ffdcd 0001 d 11 ba 3", "callback": "http: //bbsportalhost: port/Service. Attribute. Value. Change. Listener/listener/v 1/", "query": "event. Type= Service. Creation. Notification, Service. Attribute. Value. Change. Notification, Service. Remove. Notification" } ] Then NBI POST http: //bbsportalhost: port/service. Order. State. Listener/listener/v 1 { "event. Type": “Service. Order. State. Change. Notification", "event. Date": "2019 -02 -21 T 14: 21: 31. 740 Z", "event. Id": "34556", “event": {"id": "5 af 2 e 0914 bf 3 d 66721 c 09 c 3 f", "href": "service. Order/5 af 2 e 0914 bf 3 d 66721 c 09 c 3 f", "external. Id": " BBS_BSS_Trackind. Id 3584 ", "state": “COMPLETED", "order. Date": "2019 -02 -21 T 13: 39: 20. 540 Z", "completion. Date. Time": "2019 -02 -21 T 13: 45: 39. 919 Z } n 6
Ext. API Requirement Analysis: Nomadic ONT Service Ext. API -> BBS Portal 2 4 1) BBS µS will be notified that an ONT re-registration is taking place. IT will update the A&AI Service instance state to “Assigned” for the CFS Service instance id and a UPDATE notification is triggered to External API via DMaa. P 2) External API Framework Service Inventory API will notify a Service. Attribute. Value. Change. Notification to the external OSS/BSS that are registered 3) BBS µS unlinks and recreates the Nomadic ONT RFS and updates A&AI CFS state to created. External API is notified of the A&AI update via DMaa. P AAI-EVENT. 4) External API Framework Service Inventory API will notify a Service. Attribute. Value. Change. Notification 1 3 New Requirements: - Ext. API registers with DMaa. P as a Consumer of AAIEVENTS. - Ext. API offers new notifications filter via Hub resources for Service. Attribute. Value. Change Notifications
Casablanca Service Inventory API Sequence Diagram ONAP External API BSS SO SDC A&AI GET nbi/api/v 3/service/{service. Instance. Id} GET /business/customer/{global-customer-id}/service-subscriptions/servicesubscription/{service-type}/service-instances/service-instance/{service-instance-id} The BSS can access ONAP to view service instance data in relation to Service created as a result of Service Orders. This can allow a BSS to provide details on a Customer Service Instance direct to the Customer via a Self-Service. Information can include current Service Instance State, history on which Service Specification version was used to instantiate the service. Return Service Instance Details { "id": "c 0 c 28751 -97 d 3 -42 d 5 -ae 01 -77566 dc 533 dc", "name": "SOTNVPNInfra-onap-11", “state” : “active” "service. Specification": { "id": "462 f 84 e 5 -f 0 e 5 -44 c 5 -ab 95 -38 fb 4 bf 77064", "@type": "ONAPservice" }, "related. Party": { "role": "ONAPcustomer", "id": "Orange" }, "has. Started": "yes“, ……. } { "service-instance-id": " c 0 c 28751 -97 d 3 -42 d 5 -ae 01 -77566 dc 533 dc ", "service-instance-name": " SOTNVPNInfra-onap-11 ", "environment-context": "General_Revenue-Bearing", "workload-context": "Production", "model-invariant-id": "f 3 ec 9092 -5 c 98 -41 f 1 -9 fea-96 be 80 abd 064", "model-version-id": " 462 f 84 e 5 -f 0 e 5 -44 c 5 -ab 95 -38 fb 4 bf 77064 ", "orchestration-status": "Active", ………. . } Current Supported in Casablanca ONAP validates the Service Instance Id exists in A&AI and retrieves the corresponding service Instance details.
Proposed Dublin Service Inventory State Tracking Enhancement Sequence Diagram for BBS Ext. API-98 ONAP External API BSS/OSS POST nbi/api/v 4/hub DMaa. P POST events/AAI-EVENT {“id”: “ 58673”, "callback": "http: //bbsportalhost: port/Service. Attribute. Value. Change. Listener/listen er/v 1/", “query”: ”event. Type=Service. Attribute. Value. Change. Notification”} POST http: //bbsportalhost: port/service. State. Listener/listener/v 1/" {"event": {"event. Type": “Service. Attribute. Value. Change. Notification", …. "event": {"id": " as 34 -rf 11", "href": “service/{serviceinstance. Id}”, "name": "SOTNVPNInfra-onap-11", “state” : “active”, …. . } Ext. API-98 : New Enhancement to allow Ext. API to instead subscribe to DMaa. P for Notifications on Service. Attribute. Value. Change events. GET nbi/api/v 4/service/{serviceinstance. Id} BSS/OSS can also poll ONAP Service Inventory at any time allowing for example a Self Service UI Portal to display Service Instance State. { "id": "c 0 c 28751 -97 d 3 -42 d 5 -ae 01 -77566 dc 533 dc", "name": "SOTNVPNInfra-onap-11", “state” : “active” "service. Specification": { "id": "462 f 84 e 5 -f 0 e 5 -44 c 5 -ab 95 -38 fb 4 bf 77064", "@type": "ONAPservice" }, ……. } A&AI GET events/AAI-EVENT/{extapiconsumegroup}/{extapiconsumerid}? timeout=2000 {"callback": “http: //bbsportalhost: port/service. State. Listener/listener/v 1/", “query”: ”event. Type=Service. Attribute. Value. Change. Notification”} BSS/OSS Registers Listener to be notified automatically of ONAP Service Inventory Changes. This allows for example the BSS to update the customer automatically when the Customers Service Instance(s) is modified BBS µS GET /business/customer/{global-customer-id}/service-subscriptions/servicesubscription/{service-type}/service-instances/service-instance/{service-instance-id} { "service-instance-id": " c 0 c 28751 -97 d 3 -42 d 5 -ae 01 -77566 dc 533 dc ", "service-instance-name": " SOTNVPNInfra-onap-11 ", "orchestration-status": "Active", ………. . } ONAP A&AI once a Service Instance has been modified will publish an event to the DMaa. P kafka bus on topic AAI-EVENT, i. e. act as a publisher. External API shall add a new consumer to the AAIEVENT Topic and once events arrives will filter/transform and notify valid OSS/BSS external listeners.
BBS Portal - Service Inventory View BBS Portal -> Ext. API Retrieve a specific service instance External API Service Inventory API: GET http: //extapihost: port/nbi/api/v 4/service/c 96 fb 8 ec-8552 -4956 -8 a 8 d-65680 aaa 57 cc • The BBS Portal can retrieve the state of a service instance via a GET request to { "id": " c 96 fb 8 ec-8552 -4956 -8 a 8 d-65680 aaa 57 cc", the BBS CFS Service Instance Id "name": “BBS_Service_1234", "@type": "service. ONAP", "supporting. Resource": [], currently service resources are not retrieved by Ext. API in Casablanca "service. Specification": { "id": "462 f 84 e 5 -f 0 e 5 -44 c 5 -ab 95 -38 fb 4 bf 77064", This template was used to instantiate the instance “name”: “BBS HSIA CFS”, "invariant. UUID": "88 dcb 2 f 0 -085 b-4548 -8 b 93 -0882 e 37 d 25 d 8", "@type": "ONAPservice" }, “state”: “active”, This is the current Service State of the HSIA CFS service instance "related. Party": { "role": "ONAPcustomer“ “id”: “BBSCustomer. Id 1", This is the customer Id used in the Order & AAI Service Instance hierarchy http: //extapihost: port/nbi/api/v 4/service/{id} • The BSS Portal , for each Consumer ( Customer. id ) can retrieve a list of services and their corresponding states using GET request to http: //extapihost: port/nbi/api/v 4/service/? related. Party. i d={customer. Id} }, "type": "service-instance" } Or get a list of all Service Instances for a customer using • As of Casablanca, very limited data can be retrieved via service Inventory, although EXTAPI 100 is opened to track enhancing it in Dublin. I have worked 2 child tasks for this EPIC already ( EXTAPI -194 and EXTAPI-199 tagged BBS ) GET http: //extapihost: port/nbi/api/v 4/service/? related. Party. id=BBSCustomer. Id 1 n 1 0
Service Inventory Service. Attribute. Value. Change. Notifications ( EXTAPI-98 ) Ext. API -> BBS Portal • The BBS Portal will be able to register a listener for Service. Attribute. Value. Change. Notifications using the Ext. API hub resource. (once I add the code to EXTAPI 98) POST http: //xx. yy. tt. rr: 30274/nbi/api/v 3/hub • The BBS Portal needs to provide an API that Ext. API can POST service attribute change events to. • External API Framework will register as a Consumer of DMaa. P AAI-EVENT topic • When AAI “service-instance” entity is updated, the entity action from A&AI will be “UPDATE”. For example when the state of the BBS CFS Service instance changes, the change will be caught by Ext. API and forwarded to the external listener, which in the BBS Use case will be the BBS Portal. The BBS Portal may keep some level of Service Instance State and compare for ONT Nomadic flow that state has changed • Example format of what the event may look like ( once coded ) is shown on the right. POST http: //xx. yy. tt. rr: 30274/nbi/api/v 4/hub { "callback": "https: //bbsportalhost: port/Service. Listener/listener/v 1/", "query": "event. Type = Service. Creation. Notification, Service. Attribute. Value. Change. Notification, Service. Remove. Notification" } GET http: //xx. yy. tt. rr: 30274/nbi/api/v 4/hub [ { "id": "5 c 654 d 5 e 8 ffdcd 0001 d 11 ba 3", "callback": "https: //bbsportalhost: port/Service. Listener/listener/v 1/", "query": "event. Type=Service. Creation. Notification, Service. Attribute. Value. Change. Notification, Service. Remove. Notification" } ] Then NBI POST http: //bbsportalhost: port/Service. Listener/listener/v 1 { "event. Type": “Service. Attribute. Value. Change. Notification", "event. Date": "2019 -02 -21 T 14: 21: 31. 740 Z", "event. Id": "34557", “event": {“id": " c 96 fb 8 ec-8552 -4956 -8 a 8 d-65680 aaa 57 cc", “href” : “service/ c 96 fb 8 ec-8552 -4956 -8 a 8 d-65680 aaa 57 cc” “name”: “BBSCFS_name 123”, “state”: “active”, “type”: “service-instance” "related. Party": { “id”: “BBSCustomer. Id 1", “name”: “John Doe” } } } n 1 1
Thanks HUAWEI TECHNOLOGIES CO. , LTD. Page 12
- Slides: 12