Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Recovering Flex Services with Cross Provisioning Platform

 

With Cross Provisioning Platform (CPP), you can schedule flex services to be periodically recovered from, imported to, and managed in Juniper Networks and Nokia devices by using REST APIs.

With Cross Provisioning Platform Release 15.1R1, you can recover only the following flex services:

  • PW-LDP—The following combinations are supported: JNPR-JNPR, JNPR-ALU, ALU-JNPR, and ALU-ALU.

  • PW-BGP—Only the JNPR-JNPR combination is supported.

This topic has the following sections:

Before You Recover Flex Services

Before you recover flex services, ensure that:

  • You have discovered and prestaged devices in the Cross Provisioning Platform application before you execute the REST API request from the Service Discovery application.

  • You have created and published the service definition that is mentioned in the request payload.

  • You have mentioned all mandatory tags in the payload.

High-Level Workflow for Recovering a Flex Service

Figure 1 shows the high-level workflow for recovering a flex service with Cross Provisioning Platform.

Figure 1: High-Level Workflow for Recovering a Flex Service
High-Level Workflow for Recovering a Flex
Service

The following high-level steps are included in the workflow for recovering a flex service:

  1. The Service Discovery application collects resource pool data from the Cross Provisioning Platform database.

    The Service Discovery application also collects data from Juniper Networks and Nokia devices.

  2. The Service Discovery application compares the resource pool data in the Cross Provisioning Platform database with the data from the devices, based on the flex service type. The difference is converted into equivalent REST API payloads.
  3. The Service Discovery application sends the payloads to the NetworkApps REST API.
  4. The NetworkApps REST API validates the tags in the payload and manages the flex service without pushing the configuration to the devices.

The recovered flex service is listed on the CPP Services page.

Workflow for Recovering a Complete Flex Service

Note

With Cross Provisioning Platform Release 15.1R1, you cannot recover a flex service partially.

The following steps are involved in recovering a complete flex service:

  1. When the Service Discovery application sends the REST API payload with the operation type as Recover, the NetworkApps REST API searches for an old service order whose status is Failed and has the same payload resources.

    If such a service order exists, then the NetworkApps REST API removes it and proceeds with validation.

    Note

    While discovering services, a service order state can be Failed_Recovered, Completed, Invalid, or Scheduled.

  2. The NetworkApps REST API constructs the service recovery service order and validates the tags in the payload.Note

    If the service recovery service order fails, an error message is logged and propagated to the Service Discovery application.

  3. The NetworkApps REST API sends the service recovery service order to the service activation workflow.

    If the service recovery is successful, the NetworkApps REST API saves the recovered service in the Cross Provisioning Platform database.

    Otherwise, an error message is logged.

Note

The Recreate Service Order option is unavailable for the recovered service orders whose status is Failed or Invalid.

List of REST APIs for Recoverying a Flex Service

Table 1 lists the REST APIs used to recover a flex service:

Table 1: REST APIs for Recovering a Flex Service

REST API

Description

getAllAllocatedVCID(@Context HttpServletRequest request)

Lists all allocated VCIDs

Every Virtual Chassis configuration has a unique ID (VCID) that is automatically assigned when the Virtual Chassis configuration is formed.

getAllAllocatedForeignSvcId(@Context HttpServletRequest request)

Lists all allocated foreign VCIDs

getAllAllocatedType0RT(@PathParam("serviceType") String serviceType, @Context HttpServletRequest request)

Lists all allocated route targets based on the service type

getAllAllocatedType0RD(@PathParam("serviceType") String serviceType, @Context HttpServletRequest request)

Lists all allocated route distinguishers based on the service type

getAllServiceCommonAttributeValues(@PathParam("resourceName") String resourceName, @Context HttpServletRequest request)

Lists the resource value based on the resource name from the common service attributes

getAllServiceEndpointsAttributeValues(@PathParam("resourceName") String resourceName, @Context HttpServletRequest request)

Lists the resource value based on the resource name from the service endpoints

createRecoveredServiceOrder(JAXBElement<ServiceOrderBean> requestBean,@Context HttpServletRequest request)

Lists the difference used to construct the bundle of recovery request payloads. These payloads are called using this REST API.

Mandatory Tags in the Payload for Recovering a Flex Service

The Service Discovery application sends the payloads to the NetworkApps REST API. The HttpServletRequest/ServiceOrderbean API must include the recovery payload and operation type.

Note

The operation type must be either Recover or Modify_Recover.

The following tags are mandatory in the payload:

  • resources

    This tag is mandatory in the payload, except for Juniper Networks local switching services. Based on the service type, the tag includes data such as, VCID, Type0RT, Type0RD, and FOREIGNSVCID.

    Table 2 lists the mandatory attributes for the resources tags for recovering a flex service:

    Table 2: Mandatory Attributes for the resources Tag

    Recovery Types

    Devices

    Mandatory Attributes

    PWD-LDP Flex Service

    JNPR-JNPR

    <resources>[{"VCID":332}]</resources>

    JNPR-ALU

    <resources>[{"VCID":332},{“FOREIGNSVCID”:3332}]</resources>

    ALU-JNPR

    <resources>[{"VCID":332},{“ FOREIGNSVCID”:3332}]</resources>

    ALU-ALU

    <resources>[{"VCID":332},{“ FOREIGNSVCID”:3332}]</resources>

    PWD-BGP Flex Service

    JNPR-JNPR

    <resources>[{"Type0RT":"14"},{"Type0RD":"14"}]</resources>

  • allocateResource

    The default value for the allocateResource tag is True.

    If the allocateResource tag is True, the payload allocates and validates the provided resources in the resource pool database.

    If the allocateResource tag is False, the payload only saves the resource data in the CPP database and processes the service recovery workflow.

    Note

    FOREIGNSVCID is validated even if the allocateResource tag is True.