This chapter describes how you can customize and extend Oracle Communications Network Service Orchestration Solution to meet the business needs of your organization.
You can extend the functionality of the solution by:
Designing cartridges in Oracle Communications Design Studio. See "Designing Cartridges for Custom VNFs and Network Services".
For more information about designing cartridges:
See UIM Concepts to understand the concept of extending cartridge packs and the impact of doing so.
See UIM Cartridge Guide for information about the leading practices for extending cartridge packs.
See UIM Developer's Guide for information about how to extend cartridge packs.
See Design Studio Help for instructions on how to extend cartridge packs through specifications, characteristics, and rulesets.
Important:
To ensure that your extensions can be upgraded and supported, you must follow the guidelines and policies described in UIM Concepts.Using extension points and Java interface extensions. See "Using Extension Points and Java Interface Extensions to Extend the Solution".
Before you design and work with cartridges for VNFs and Network Services, you must set up Design Studio.
To set up Design Studio for the Network Service Orchestration solution:
From the Oracle Software Delivery Cloud, download the UIM SDK into the UIM_SDK_Home local directory.
Extract the downloaded UIM_SDK.zip file into the UIM_SDK_Home local directory to get the lib folder.
Go to build_folder/designStudio and extract the nso_lib folder.
Create a local directory named OTHER_LIB.
Copy the following WebLogic libraries from your WebLogic installation into the OTHER_LIB local directory:
WL_Home/oracle_common/modules/groovy-all-2.0.5.jar
WL_Home/oracle_common/modules/jersey-client-1.18.jar
WL_Home/oracle_common/modules/jettison-1.1.jar
WL_Home/wlserver/modules/features/weblogic.server.merged.jar
Download the gson-2.2.4.jar file from the following Website and copy it into the OTHER_LIB local directory:
http://repo1.maven.org/maven2/com/google/code/gson/gson/2.2.4/
Copy other UIM-specific JAR files to the OTHER_LIB directory. See UIM Installation Guide 7.3.2 for information about UIM-specific JAR files.
In Design Studio, open a new workspace and import the following base cartridges:
ora_uim_baseextpts
ora_uim_basemeasurements
ora_uim_basespecifications
ora_uim_basetechnologies
ora_uim_common
ora_uim_mds
ora_uim_model
Import the following Network Service Orchestration Solution cartridges:
OracleComms_NSO_BaseCartridge
OracleComms_NSO_Common
OracleComms_NSO_NFVIAdapter
NPaaS_NetworkService
Checkpoint_NG_FW_VNF
Juniper_vSRX_VNF
In Design Studio, for the Network Service Orchestration Solution cartridge projects, configure the following Java Build Path Library variables:
UIM_LIB. Specify the path as UIM_SDK_Home/lib.
OTHER_LIB. Specify the directory that you created.
NSO_LIB. Specify the path as build_folder/designStudio/nso_lib.
Build the inventory project.
To design cartridges for custom VNFs and network services:
In Design Studio, create cartridge projects for the VNFs and the network service that you want to design.
See Design Studio Help for instructions about creating cartridge projects.
For each VNF and network service cartridge project, create specifications, metadata, and technical action files.
For each service specification, create a technical action xml file. See "About the Technical Actions File" for more information.
Write the design-and-assign logic for the service configuration.
Write the issue logic for the service configuration.
Develop the adapter for the monitoring engine. See "Implementing a Custom Monitoring Engine" for more information.
Develop the adapter for the VNF life-cycle manager. See "Implementing a Custom VNF Manager" for more information.
You can extend the core functionality of the Network Service Orchestration solution by:
Writing a custom rule set extension point. See "Writing a Custom Ruleset Extension Point".
Using Java Interface Extensions. See "Using Java Interface Extensions".
You can extend the solution's core functionality by writing a custom rule set extension point and associating the extension point with the rule set in Design Studio.
The solution supports the following extensions with extension points:
The Design and Assign extension point for VNF and Network Service service configurations.
The Issue Configuration extension point for VNF and Network Service service configurations.
Data center lookup based on the dynamic property provided in the network service request.
To extend the solution's core functionality by using the base extension points:
In Groovy or Drools, write a ruleset that provides the additional functionality that you want to implement.
Write a rule set extension point by integrating the extension point and the ruleset with a placement of BEFORE, INSTEAD, or AFTER.
In Design Studio, relate the rule set extension point to the relevant specification.
Table 5-1 describes the Network Service Orchestration solution core APIs that can be extended by using the extension points in the solution.
Table 5-1 Network Service Orchestration Solution Core APIs and Extension Points
API | Extension Point | Description |
---|---|---|
NetworkServiceDesignManager.processCreate |
NetworkServiceDesignManager_processCreate |
Implements the design-and-assign logic for a network service when the network service is instantiated. |
NetworkServiceDesignManager.processDisconnect |
NetworkServiceDesignManager_processDisconnect |
Cleans up the network service resources when the network service is terminated. |
NetworkServiceDesignManager.processChange |
NetworkServiceDesignManager_processChange |
Implements the design-and-assign logic or cleans up the resources when a network service is updated. |
VNFServiceDesignManager.processCreate |
VNFServiceDesignManager_processCreate |
Implements the design-and-assign logic for the VNF service when a network service is instantiated with a VNF. |
VNFServiceDesignManager.processDisconnect |
VNFServiceDesignManager_processDisconnect |
Cleans up the VNF service resources when a network service is terminated. |
VNFServiceDesignManager.processChange |
VNFServiceDesignManager_processChange |
Implements the design-and-assign logic for a VNF service when the network service is updated. |
VNFServiceManager.processTechnicalActions |
VNFServiceManager_processTechnicalActions |
Activates or removes the resources in a VIM for each VNF service. |
NetworkServiceManager.processTechnicalActions |
NetworkServiceManager_processTechnicalActions |
Activates or removes the resources in a VIM for each network service. |
ConsumerHelper.getDataCenterForConsumer |
ConsumerHelper_getDataCenterForConsumer |
Looks up the data center based on the NS endpoint. |
VNFServiceHelper.createVNF |
VNFServiceHelper_createVNF |
Creates a VNF. |
ConsumerHelper.getDataCenterLookupIdentifier |
ConsumerHelper_getDataCenterLookupIdentifier |
Returns the string representation of the dynamic property in the JSON request for NS instantiation. |
NetworkServiceManager.designInstantiate |
NetworkServiceManager_designInstantiate_Global |
Used to design the network service for instantiation. |
NetworkServiceManager.designUpdate |
NetworkServiceManager_designUpdate_Global |
Used to design the network service for update. |
You can extend the solution's core functionality by using Java interface extensions. You write a new Java implementation class for a core interface and implement the core interface for a specific network service or VNF descriptor.
The solution supports the following functionality through custom Java implementation classes:
Implementation of a custom SDN controller. See "Implementing a Custom SDN Controller".
Implementation of a custom VNF monitoring engine. See "Implementing a Custom Monitoring Engine".
Implementation of a custom VIM. See "Implementing a Custom VIM".
Implementation of a custom VNF manager. See "Implementing a Custom VNF Manager".
Implementation of a custom VNF connection manager. See "Implementing a Custom VNF Connection Manager".
Implementation of a custom VNF configuration manager. See "Implementing a Custom VNF Configuration Manager".
By default, the solution supports integration with OpenDaylight, but you can also implement a custom SDN Controller.
Figure 5-1 shows a model diagram that depicts how you can write an extension for an SDN Controller in Design Studio.
To implement a custom SDN controller:
In the custom Network Service descriptor catalog cartridge, create a Java implementation class for the SDN controller.
Configure the custom SDN controller class to implement the oracle.communications.inventory.nso.nfvi.SDNController interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.
Override the following methods in the custom SDN controller Java implementation class:
public String createFlows(Map request) throws Exception public String deleteFlows(Map request) throws Exception public String updateFlows(Map request) throws Exception
Go to UIM_Home/config and open the nfvi.properties file in a text editor.
Update the sdnController.sdnType key with the name of custom SDN controller.
By default, the solution supports integration with OpenStack Ceilometer, but you can also implement a custom monitoring engine.
Figure 5-2 shows a model diagram that depicts how you can write an extension for a custom VNF monitoring engine in Design Studio.
Figure 5-2 Custom Monitoring Engine Model
To implement a custom monitoring engine:
In the custom VNF descriptor cartridge, create a Java implementation class for VNFMonitoringManager.
Configure the VNFMonitoringManager class to implement the oracle.communications.inventory.nso.nfvi.VNFMonitoringManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.
Override the following methods in the custom VNF monitoring engine Java implementation class:
public String createAlarms(Map request) throws Exception public String deleteAlarms(Map request) throws Exception public String updateAlarms(Map request) throws Exception public String getAlarms(Map request) throws Exception public String customCall(Map request) throws Exception
Go to UIM_Home/config and open the nfvi.properties file in a text editor.
Update the vnfMonitor.vnfdName key with the name of the custom monitoring engine.
By default, the solution supports integration with OpenStack, but you can also implement a custom VIM.
Figure 5-3 shows a model diagram that depicts how you can write an extension for a custom VIM in Design Studio.
To implement a custom VIM:
In the custom Network Service descriptor catalog cartridge, create a Java implementation class for the NFVIManager interface.
Configure the NFVIManager class to implement the oracle.communications.inventory.nso.nfvi.NFVIManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.
Override the methods in the custom NFVI manager Java implementation class.
Go to UIM_Home/config and open the nfvi.properties file in a text editor.
Update the nfviMgr.nfviType key with the name of the custom VIM.
The Network Service Orchestration solution uses UIM to manage the lifecycle of the VNFs. The solution supports integration with third-party VNF managers by using extensions.
Figure 5-4 shows a model diagram that depicts how you can write an extension for a custom VNF manager in Design Studio.
To implement a custom VNF manager:
In the custom VNF descriptor cartridge, create a Java implementation class for the VNF manager.
Configure the custom VNF manager class to implement the oracle.communications.inventory.nso.nfvi.VNFLifeCycleManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.
Override the methods in the custom VNF manager Java implementation class.
Go to UIM_Home/config and open the nfvi.properties file in a text editor.
Update the vnflcMgr.vnfdName key with the name of the custom VNF manager.
Figure 5-5 shows a model diagram that depicts how you can write an extension for a custom VNF connection manager in Design Studio.
Figure 5-5 Custom VNF Connection Manager Model
To implement a custom VNF connection manager:
In the custom VNF descriptor cartridge, create a Java implementation class for the custom VNF connection manager.
Configure the custom VNF connection manager class to implement the oracle.communications.inventory.nso.nfvi.VNFConnectionManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.
Override the methods in the custom VNF connection manager Java implementation class.
Go to UIM_Home/config and open the nfvi.properties file in a text editor.
Update the vnfConnectionMgr.vnfdName key with the name of the custom VNF connection manager.
Figure 5-6 shows a model diagram that depicts how you can write an extension for a custom VNF configuration manager in Design Studio.
Figure 5-6 Custom VNF Configuration Manager Model
To implement a custom VNF configuration manager:
In the custom VNF descriptor cartridge, create a Java implementation class for the custom VNF configuration manager.
Configure the custom VNF configuration manager class to implement the oracle.communications.inventory.nso.nfvi.VNFConfigManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.
Override the methods in the custom VNF configuration manager Java implementation class.
Go to UIM_Home/config and open the nfvi.properties file in a text editor.
Update the vnfConfigMgr.vnfdName key with the name of the custom VNF configuration manager.
You can localize Oracle Communications Unified Inventory Management (UIM) user interface and the UIM Help. Localizing UIM involves modifying a specific set of files that UIM uses to display text in the UI and in the Help.
To localize the response messages in the Network Service Orchestration solution RESTful APIs:
Make a copy of the UIM_Home/config/resources/logging/nsoresourcebundle.properties file in the same directory and rename it as nsoresourcebundle_localeID.properties, where localeID is the language code. For example, fr-FR indicates the locale ID for French.
Open the nsoresourcebundle_localeID.properties file and localize the messages.
(Optional) If you want to implement the sample Network Protection service by using the sample cartridges, make a copy of the UIM_Home/config/resources/logging/npassresourcebundle.properties file in the same directory and name it as npaasresourcebundle_localeID.properties and localize the messages.
Restart the UIM server.
In your RESTful API client, update the Accept-Language header with the locale ID. For example, specify fr-FR for French.