5 Extending the Network Service Orchestration Solution

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".

Setting Up Design Studio for the Network Service Orchestration Solution Cartridges

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:

  1. From the Oracle Software Delivery Cloud, download the UIM SDK into the UIM_SDK_Home local directory.

  2. Extract the downloaded UIM_SDK.zip file into the UIM_SDK_Home local directory to get the lib folder.

  3. Go to build_folder/designStudio and extract the nso_lib folder.

  4. Create a local directory named OTHER_LIB.

  5. 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

  6. 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/

  7. 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.

  8. 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

  9. 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

  10. 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.

  11. Build the inventory project.

Designing Cartridges for Custom VNFs and Network Services

To design cartridges for custom VNFs and network services:

  1. 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.

  2. For each VNF and network service cartridge project, create specifications, metadata, and technical action files.

  3. For each service specification, create a technical action xml file. See "About the Technical Actions File" for more information.

  4. Write the design-and-assign logic for the service configuration.

  5. Write the issue logic for the service configuration.

  6. Develop the adapter for the monitoring engine. See "Implementing a Custom Monitoring Engine" for more information.

  7. Develop the adapter for the VNF life-cycle manager. See "Implementing a Custom VNF Manager" for more information.

Using Extension Points and Java Interface Extensions to Extend the Solution

You can extend the core functionality of the Network Service Orchestration solution by:

Writing a Custom Ruleset Extension Point

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:

  1. In Groovy or Drools, write a ruleset that provides the additional functionality that you want to implement.

  2. Write a rule set extension point by integrating the extension point and the ruleset with a placement of BEFORE, INSTEAD, or AFTER.

  3. 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.


Using Java Interface Extensions

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:

Implementing a Custom SDN Controller

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.

Figure 5-1 Custom SDN Controller Model

Description of Figure 5-1 follows
Description of ''Figure 5-1 Custom SDN Controller Model''

To implement a custom SDN controller:

  1. In the custom Network Service descriptor catalog cartridge, create a Java implementation class for the SDN controller.

  2. 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.

  3. 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
    
  4. Go to UIM_Home/config and open the nfvi.properties file in a text editor.

  5. Update the sdnController.sdnType key with the name of custom SDN controller.

Implementing a Custom Monitoring Engine

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

Description of Figure 5-2 follows
Description of ''Figure 5-2 Custom Monitoring Engine Model''

To implement a custom monitoring engine:

  1. In the custom VNF descriptor cartridge, create a Java implementation class for VNFMonitoringManager.

  2. Configure the VNFMonitoringManager class to implement the oracle.communications.inventory.nso.nfvi.VNFMonitoringManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.

  3. 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
    
  4. Go to UIM_Home/config and open the nfvi.properties file in a text editor.

  5. Update the vnfMonitor.vnfdName key with the name of the custom monitoring engine.

Implementing a Custom VIM

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:

  1. In the custom Network Service descriptor catalog cartridge, create a Java implementation class for the NFVIManager interface.

  2. Configure the NFVIManager class to implement the oracle.communications.inventory.nso.nfvi.NFVIManager interface, which is provided in the OracleComms_NSO_NFVIAdapter cartridge.

  3. Override the methods in the custom NFVI manager Java implementation class.

  4. Go to UIM_Home/config and open the nfvi.properties file in a text editor.

  5. Update the nfviMgr.nfviType key with the name of the custom VIM.

Implementing a Custom VNF Manager

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.

Figure 5-4 Custom VNF Manager Model

Description of Figure 5-4 follows
Description of ''Figure 5-4 Custom VNF Manager Model''

To implement a custom VNF manager:

  1. In the custom VNF descriptor cartridge, create a Java implementation class for the VNF manager.

  2. 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.

  3. Override the methods in the custom VNF manager Java implementation class.

  4. Go to UIM_Home/config and open the nfvi.properties file in a text editor.

  5. Update the vnflcMgr.vnfdName key with the name of the custom VNF manager.

Implementing a Custom VNF Connection 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

Description of Figure 5-5 follows
Description of ''Figure 5-5 Custom VNF Connection Manager Model''

To implement a custom VNF connection manager:

  1. In the custom VNF descriptor cartridge, create a Java implementation class for the custom VNF connection manager.

  2. 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.

  3. Override the methods in the custom VNF connection manager Java implementation class.

  4. Go to UIM_Home/config and open the nfvi.properties file in a text editor.

  5. Update the vnfConnectionMgr.vnfdName key with the name of the custom VNF connection manager.

Implementing a Custom VNF Configuration 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

Description of Figure 5-6 follows
Description of ''Figure 5-6 Custom VNF Configuration Manager Model''

To implement a custom VNF configuration manager:

  1. In the custom VNF descriptor cartridge, create a Java implementation class for the custom VNF configuration manager.

  2. 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.

  3. Override the methods in the custom VNF configuration manager Java implementation class.

  4. Go to UIM_Home/config and open the nfvi.properties file in a text editor.

  5. Update the vnfConfigMgr.vnfdName key with the name of the custom VNF configuration manager.

Localizing the Network Service Orchestration Solution

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:

  1. 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.

  2. Open the nsoresourcebundle_localeID.properties file and localize the messages.

  3. (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.

  4. Restart the UIM server.

  5. In your RESTful API client, update the Accept-Language header with the locale ID. For example, specify fr-FR for French.