Multi-Vendor Active Inventory UI Extensibility Dave Adams ( dave.adams@amdocs.com ) Software Development Specialist 11-Dec-2017
Agenda Introduction Sparky in ONAP Sparky Functional Overview Extensibility Use Case Entity Summary View UI Design API Contract + Call Flows Network Routing Model Entity Analytics View UI Design API Contract + Call Flows Network Routing Model Conclusion 2
Sparky in ONAP OOM MSO SDC Model Loader AAI Resources Titan + HBase AAI Traversal Entity Create, Update, and Delete Events HA Proxy AAI DMaaP <sync> Sparky (AAI-UI) New Microservice <API Router> /ui-request/* <search> <sync> <API Router> Synapse Search Data Service Elastic Search Entity Event Consumption and Policy Execution to Update Search Indexes 3
Sparky in ONAP OOM MSO SDC Model Loader AAI Resources Titan + HBase AAI Traversal Entity Create, Update, and Delete Events HA Proxy AAI DMaaP <sync> Sparky (AAI-UI) New Microservice <API Router> /ui-request/* <search> <sync> <API Router> Synapse Search Data Service Elastic Search Entity Event Consumption and Policy Execution to Update Search Indexes 4
Sparky: Expandable Navigation 5
Sparky: Suggestive Search 6
Sparky: View and Inspect View 7
Sparky: VNF Aggregation View + Filters 8
Sparky: Decomposed Data Synchronization ElasticSearch entity-search-index Spring Bean Registration: <bean id="viewinspectsynccontroller" class="o.o.a.s.v.sync.viewinspectsynccontroller" init-method="registercontroller">... <property name="synccontrollerregistry" ref="synccontrollerregistry" /> </bean> 9
Sparky: Modular Search Processor Camel Routing: <route xmlns="http://camel.apache.org/schema/spring" trace="true"> <from uri="restlet:/search/querysearch?restletmethods=get,post" /> <to uri="bean:unifiedsearchprocessor?method=search"/> </route> Spring Bean Registration: <bean id="viewinspectsearchprovider" class="o.o.a.s.v.search.viewinspectsearchprovider"> <constructor-arg ref="oxmmodelloader"/> <property name="additionalsearchsuggestiontext"> <value>schema</value> </property> </bean> <bean id="registerviewinspectsearchprovider" class="o.s.b.f.c.methodinvokingfactorybean"> <property name="targetobject" ref="searchproviderregistry" /> <property name="targetmethod"> <value>addsearchproviders</value> </property> <property name="arguments"> <list value-type="o.o.a.s.search.api.searchprovider"> <ref bean="viewinspectsearchprovider" /> </list> </property> </bean> 10
Extensibility Use Case Now we ll consider a scenario where a team wants to add a new view to the front end and use an API for a service that doesn t exist (yet). We ll create a really simple view that queries for available entities and allows the user to select an arbitrary set for enumeration visualization on a chart. Let s call this the Entity Summary view. We ll also assume there is a second team, perhaps in the same company or a different company, wanting to build an Entity Analytics view. They want to create a new service but also leverage the service from the first team. Let s explore how this could be accomplished using the Sparky FE + BE from ONAP. 11
Entity Summary View UI Design Entity Summary 12
Entity Summary View UI Design Entity Summary 13
Entity Summary View API Contract Request: GET entityaggregator/entities?sort=asc Response: { "types" : [ "customer", "generic-vnf", "image", "service-instance", "tenant" ] } Request POST entityaggregator/aggregation&sort=asc { "types" : [ "customer", "generic-vnf", "image", "service-instance", "tenant" ] } Response: { "typeenumerations: { "customer" : 14, "generic-vnf" : 50, "image" : 22, "service-instance" : 11, "tenant" : 3 } } 14
Entity Summary View Network Routing Model Sparky-FE AAI-Traversal /routerservice/entityaggregator/entities /routerservice/entityaggregator/aggregation Sparky-BE HA Proxy /ui-request/entityaggregator/entities /ui-request/entityaggregator/aggregation /aai/v12/search/nodes-query?search-node-type=pnf Synapse <route xmlns="http://camel.apache.org/schema/spring" trace="true"> <from uri="servlet:///ui-request/entityaggregator" /> <to uri="bean:sslrestclient?method=handlerequest("127.0.0.1","9500",*)" /> </route> Entity Summary Service aaischema 15
Entity Summary View Messaging Call Flows 16
Entity Summary View Messaging Call Flows 17
Entity Analytics View UI Design Most Used: Least Used Non-Zero: Entity Analytics 18
Entity Analytics View UI Design Entity Summary Entity Analytics 19
Entity Analytics View API Contract Request: GET entityanalytics/mostused?num=5&sort=asc Response: { "mostusedresult: { "cloud-region" : 77, "generic-vnf" : 50, "image" : 22, "ipv4-address-list" : 17, "vserver" : 12 } } Request GET entityanalytics/leastused?num=5&nonzero=true&sort=asc Response: { "leastusedresult: { "pnf" : 5, "flavor" : 3, "site-pair-set" : 2, "vlan" : 1, "logical-link" : 1 } } 20
Entity Analytics View Network Routing Model AAI-Traversal Sparky-FE Sparky-BE /routerservice/entityanalytics/mostused /routerservice/entityanalytics/leastused aaischema HA Proxy Entity Summary Service /ui-request/entityanalytics/mostused /ui-request/entityanalytics/leastused Synapse <route xmlns="http://camel.apache.org/schema/spring" trace="true"> <from uri="servlet:///ui-request/entityanalytics" /> <to uri="bean:sslrestclient?method=handlerequest("127.0.0.1","9500",*)" /> </route> Entity Analytics Service entityaggregator/entities entityaggregator/aggregation 21
Entity Analytics View Messaging Call Flows 22
Entity Analytics View Messaging Call Flows 23
Conclusion What have we done? added an Entity Summary View and an Entity Analytics View which will be published within FE build artifact added two new services within the ONAP ecosystem to perform some entity analysis, and, created a new set of camel routes for our extension services to be routed by Synapse We have now seen a high level demonstration for how Sparky can be used by multiple teams to build new content without having to change the underlying front end or back end code. And that s pretty cool. 24
Thank-you 25
Backup Slides 26
How did Sparky get its name? 27
Technology Stack 28
Sparky Front End Capabilities - View-Inspect - VNF Aggregation - Suggestive Search - Filters - View Extensibility 29
Sparky Back End Capabilities - Decomposed data synchronization - Modular Search Processor - Suggestive + Aggregation Search APIs - API Router 30
Sparky Build Process Extension Extension Extension imports components imports components imports components reducer reducer reducerscss scss scss extensibility/index.js extensibilityreducer.js customviews.css + Sparky ONAP FE FE BE => gulp build => aai.war published to Nexus mvn build + WAR dependency dockerized Sparky BE + Sparky FE WAR in docker image 31
Layered Docker Extensibility Exposing New Service Capabilities with Docker Image Layers Ubuntu16.04 ONAP Sparky BE Sparky Extension Service Advantages Separation of Concerns Functional Layering at a ms Level Example of Composability with Docker Disadvantages Indirect Dependency Management Class level extensibility tricky without proper library componentization 32