- Index
- About This Guide
- Introduction to the PRIME Fulfillment API
- Getting Started
- Common APIs
- Using Templates
- Monitoring APIs
- MPLS Provisioning
- VPLS Provisioning
- FlexUNI/EVC Provisioning
- Traffic Engineering Management Provisioning
- IP RAN Provisioning
- MPLS-TP Provisioning
- GUI to API Mapping
- Implementing a Notification Server
- Scripts
- Prime Fulfillment XDE SDK
MPLS Transport Profile Provisioning
This chapter describes the provisioning support for MPLS Transport Profile (MPLS-TP) provided in Cisco Prime Fulfillment.
The MPLS-TP API solution provides provisioning, updating, and deletion of MPLS-TP objects.
More specifically, the chapter describes MPLS-TP service concepts and the steps required to provision MPLS-TP services using the Prime Fulfillment API. A provisioning example lists all steps from creating the inventory to deploying the service.
For information on MPLS-TP provisioning using the Prime Fulfillment GUI, see the Cisco Prime Fulfillment User Guide 6.2.
This chapter contains the following sections:
•Prerequisites and Limitations
Prerequisites and Limitations
The current release of Prime Fulfillment involves certain prerequisites for MPLS-TP, which are described in the MPLS-TP Discovery.
See the Cisco Prime Fulfillment Installation Guide 6.2 for general system recommendations and supported platforms.
MPLS-TP Service Definitions
To provision MPLS-TP using the Prime Fulfillment API, you need a MPLS-TP service definition and a MPLS-TP service request (SR). This section lists the supported service definitions, service orders, and policies and includes corresponding examples.
When you deploy a MPLS-TP service request using a service order, the attributes specified in the service definition are applied to the devices and interfaces listed in the service request.
Supported MPLS-TP Features
Prime Fulfillment supports the following MPLS-TP features:
•MPLS-TP Discovery Tasks
–Full Discovery
–MPLS Label Sync
•MPLS-TP Policies
–Create MPLS-TP Policy
•MPLS-TP Service Requests
–Create MPLS-TP Tunnel
–Modify MPLS-TP Tunnel
–Delete MPLS-TP Tunnel.
API XML examples for the above operations are contained in the Cisco Prime Fulfillment API Programmer Reference 6.2.
Policy Example
The following is an example of how to create an MPLS-TP policy.
The relevant attributes that need to be set for this policy are highlighted in bold in the example. They are <attribute 1>, which in the example is set to <value 1>, and <attribute 2>, which in the examples is set to <value 2>.
Example: CreateMplsTpPolicy.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://www.cisco.com/cim-cx/2.0"
xmlns:ns1="urn:CIM">
<soapenv:Header>
<ns0:message id="1" sessiontoken="0AA9445A4E6A044ADD8E393BA254715B"
Wait="false" WaitTimeout="300" />
</soapenv:Header>
<soapenv:Body>
<ns1:createInstance>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceDefinition</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Flexible</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Name</name>
<value xsi:type="xsd:string">TPPolicy-New3</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceDefinitionDetails</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">PolicyData</name>
<value xsi:type="xsd:string"><![CDATA[
<service serviceType="MPLS-TP" serviceName="MPLS-TP">
<section useFor="SR" name="Service Information " required="true" >
<field name="serviceType" title="Service Type" type="text" disabled="true" required="false" editable="true" value="MPLS-TP"/>
<field name="serviceDescription" title="Service Description" type="textarea" required="false"/>
</section>
<section useFor="Policy" name="Policy Information " required="true" >
<field name="policyName" title="Policy Name" type="text" required="true"/>
<field name="policyDescription" title="Description" type="textarea" required="false"/>
</section>
<section useFor="Policy-SR" name="Tunnel Characteristics" required="true" >
<group>
<field name="tunnelName" title="Name" type="text" required="false" value="" editable="true">
<validators>
<validator type="regexp" expression=".*" errorMessage="Tunnel name can be any number of characters"/>
</validators>
</field>
<field name="dstTunnelName" title="Name (If Different from Source Name)" type="text" required="false" value="" editable="true">
<validators>
<validator type="regexp" expression=".*" errorMessage="Tunnel name can be any number of characters"/>
</validators>
</field>
</group>
<group>
<field name="tunnelDescription" title="Description" type="textarea" required="false"/>
<field name="dstTunnelDescription" title="Description (If Different from Source Description)" type="textarea" required="false"/>
</group>
<group>
<field name="bandwidth" title="Transmit Bandwidth" type="integer" required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
<field name="rxBandwidth" title="Recieve Bandwidth(If Different from Transmit)" type="integer" required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
</group>
<group>
<field name="srcTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number At Source" type="boolean" required="false" value="true" visibility="Hidden"/>
<field name="dstTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number At Destination" type="boolean" required="false" value="true" visibility="Hidden"/>
</group>
<field name="state" title="State" type="combo" required="false" visibility="Hidden" value="Up">
<valueMap>
<value>Up</value>
<value>Down</value>
</valueMap>
</field>
<field name="protectedTpTunnel" title="Protection" type="boolean" required="false" visibility="Hidden" value="true"/>
<field name="diversityOption" title="Diversity Options" type="combo" required="false" disabled="true" visibility="Hidden" value="Node Diversity Desired">
<valueMap>
<value>Node Diversity Desired</value>
<value>Node Diversity Required</value>
<value>Link Diversity Only</value>
</valueMap>
</field>
</section>
<section useFor="Policy-SR" name="Tunnel End-Points" required="true" >
<field name="sourceDevice" title="Source Node" type="textpicker" resource="devices" resourceToLoad="sourceBfdTemplate" required="true" editable="true" />
<field name="sourceBfdTemplate" title="Source BFD" type="textpicker" required="true"/>
<field name="sourceTunnelNumber" title="Source Tunnel Number" type="text" required="false" visibility="Hidden" editable="true">
<validators>
<validator type="regexp" expression="\d*" errorMessage="Tunnel number must be 0 - 65535"/>
</validators>
</field>
<field name="sourceRouterId" title="Source Router ID" type="ip" required="false" visibility="Hidden"/>
<field name="sourceGlobalId" title="Source Global ID" type="integer" required="false" visibility="Hidden"/>
<field name="destinationDevice" title="Destination Node" type="textpicker" resource="devices" resourceToLoad="destinationBfdTemplate" required="true"/>
<field name="destinationBfdTemplate" title="Destination BFD(If Different from Source BFD)" type="textpicker" required="true"/>
<field name="destinationTunnelNumber" title="Destination Tunnel Number" type="text" required="false" visibility="Hidden" editable="true">
<validators>
<validator type="regexp" expression="\d*" errorMessage="Tunnel number must be 0 - 65535"/>
</validators>
</field>
<field name="destinationRouterId" title="Destination Router ID" type="ip" required="false" visibility="Hidden"/>
<field name="destinationGlobalId" title="Destination Global ID" type="integer" required="false" visibility="Hidden"/>
</section>
<section useFor="SR" name="Review Routing" required="true">
<group id="pathOptionsGroup" cloneable="true">
<field name="reqExOption" title="" type="combo" required="false" value="Required NE/Link">
<valueMap>
<value>Required NE/Link</value>
<value>Excluded NE/Link</value>
</valueMap>
</field>
<field name="reqExElement" title="" type="textpicker" resource="devicesAndTpLinks" width="400" required="true"/>
<field name="pathtype" title="" type="combo" required="false" value="Working Path">
<valueMap>
<value>Working Path</value>
<value>Protect Path</value>
</valueMap>
</field>
</group>
</section>
</service>
]]></value>
</item>
</properties>
</objectPath>
</objectPath>
</ns1:createInstance>
</soapenv:Body>
</soapenv:Envelope>
Related APIs
•ModifyMplsTpPolicy.xml
MPLS-TP Discovery
After completing the preconfiguration process, you can discover the MPLS-TP network for a particular MPLS-TP provider. This populates the repository with the network topology.
Only links that have been configured as MPLS-TP links and have a link number are discovered. Specifically, a link is discovered if it is listed in the output of show mpls tp link-numbers and is running CDP.
As a prerequisite for running MPLS-TP discovery, all devices must be present and a Collect Config task
must be run. For further information about MPLS-TP Discovery, see the Cisco Prime Fulfillment User Guide 6.2.
MPLS-TP Discovery Example
The following is an example of how to create an MPLS-TP Discovery task.
The relevant attributes that need to be set for this policy are highlighted in bold in the example. In this case, it is the attribute Subtype, which in the example is set to TP_DISCOVERY.
Example: CreateTaskServiceOrderTpDiscovery.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://www.cisco.com/cim-cx/2.0"
xmlns:ns1="urn:CIM">
<soapenv:Header>
<!-- WaitTimeout has a default set in system properties.-->
<ns0:message id="87855" timestamp="2002-12-13T14:55:38.885Z"
Wait="false" WaitTimeout="60" sessiontoken="E8AF7A658C78F46BFF4E33E4E4DB1B78"/>
</soapenv:Header>
<soapenv:Body>
<ns1:performBatchOperation>
<actions xsi:type="ns1:CIMActionList"
soapenc:arrayType="ns1:CIMAction[]">
<action>
<actionName xsi:type="xsd:string">createInstance</actionName>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceOrder</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceName</name>
<value xsi:type="xsd:string">ServiceOrderForTpDiscovery</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">CarrierId</name>
<value xsi:type="xsd:string">1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DesiredDueDate</name>
<value xsi:type="xsd:dateTime">2002-12-13T14:55:38.885Z</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">NumberOfRequests</name>
<value xsi:type="xsd:string">1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Organization</name>
<value xsi:type="xsd:string">Customer1</value>
</item>
</properties>
</objectPath>
</action>
<action>
<actionName xsi:type="xsd:string">createInstance</actionName>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequest</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">RequestName</name>
<value xsi:type="xsd:string">TP-DISCOVERY-NBI</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Task</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequestDetails</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SubType</name>
<value xsi:type="xsd:string">TP_DISCOVERY</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Device</name>
<value xsi:type="xsd:string">ngxp-agg-lv</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">labelSyncOnly</name>
<value xsi:type="xsd:string">true</value>
</item>
</properties>
</objectPath>
</objectPath>
</action>
</actions>
</ns1:performBatchOperation>
</soapenv:Body>
</soapenv:Envelope>
MPLS-TP Service Requests
Before creating a service request, a service policy has to be defined. Use a predefined policy template as is or with modifications to create a service request, and deploy the service. For information on MPLS-TP policies, see the Cisco Prime Fulfillment User Guide 6.2.
A MPLS-TP service request defines the service definition to use and applies the needed policy information.
When deploying a MPLS-TP service request using a service order, the attributes specified in the service definition are applied to the devices and interfaces defined in the service request.
This section includes the following:
Typical Sequence of Calls
Once you have run Collect Config and MPLS-TP Discovery, the typical sequence of calls for MPLS-TP would be:
1. Create MPLS-TP Policy (CreateMplsTpPolicy.xml )
2. Create MPLS-TP Policy Response
3. Create Mpls MPLS-TP service request
using either
–CreateMplsTpTunnelServiceRequestWithProtection.xml—creates an MPLS-TP tunnel between tp-device1 and tp-device2 with both working and protect LSPs
or
–CreateMplsTpTunnelServiceRequestNoProtection.xml—creates an MPLS-TP tunnel with just a working LSP, no protect LSP
4. Create Mpls MPLS-TP service request Response
5. Deploy SR(Same XML as other service request types)
6. Modify MPLS-TP service request (ModifyMplsTpTunnelServiceRequest.xml).
Service Request Examples
The following XML examples illustrate how you work with service requests for MPLS-TP APIs. They also demonstrate the kinds of properties (attributes) that need to be specified for each request.
This section contains the following examples:
•Creating an MPLS-TP Service Request With Path Protection
•Modify an MPLS-TP Service Request
Creating an MPLS-TP Service Request With Path Protection
The following is an example of how to create an MPLS-TP service request with path protection.
Example: CreateMplsTpTunnelServiceRequestWithProtection.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://www.cisco.com/cim-cx/2.0"
xmlns:ns1="urn:CIM">
<soapenv:Header>
<ns0:message id="1" sessiontoken="E453ADAFF7319803C1E8E3C68E1850CD"
Wait="false" WaitTimeout="300" />
</soapenv:Header>
<soapenv:Body>
<ns1:createInstance>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequest</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Flexible</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">RequestName</name>
<value xsi:type="xsd:string">TP-3</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequestDetails</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceDefinition</name>
<value xsi:type="xsd:string">tp-policy</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">InstanceData</name>
<value xsi:type="xsd:string"><![CDATA[
<service serviceType="MPLS-TP" serviceName="MPLS-TP">
<section useFor="SR" name="Service Information " required="true" >
<field name="serviceType" value="MPLS-TP"/>
<field name="serviceDescription"/>
</section>
<section useFor="Policy" name="Policy Information " required="true" >
<field name="policyName" title="Policy Name" type="text" required="true"/>
<field name="policyDescription" title="Description" type="textarea" required="false"/>
</section>
<section useFor="Policy-SR" name="Tunnel Characteristics" required="true" >
<group>
<field name="srcTunnelName" title="Name" type="text" required="false" editable="true">
<validators>
<validator type="regexp" expression=".*" errorMessage="Tunnel name can be any number of characters"/>
</validators>
</field>
<field name="dstTunnelName" title="Name (If Different from Source Name)" type="text" required="false" editable="true">
<validators>
<validator type="regexp" expression=".*" errorMessage="Tunnel name can be any number of characters"/>
</validators>
</field>
</group>
<group>
<field name="srcTunnelDescription" title="Description" type="textarea" required="false"/>
<field name="dstTunnelDescription" title="Description (If Different from Source Description)" type="textarea" required="false"/>
</group>
<group>
<field name="bandwidth" title="Transmit Bandwidth" type="integer" required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
<field name="rxBandwidth" title="Receive Bandwidth(If Different from Transmit)" type="integer" required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
</group>
<group>
<field name="srcTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number At Source" type="boolean" required="false" value="true" visibility="Editable"/>
<field name="dstTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number At Destination" type="boolean" required="false" value="true" visibility="Editable"/>
</group>
<field name="state" title="State" type="combo" required="false" visibility="Editable" value="Up">
<valueMap>
<value>Up</value>
<value>Down</value>
</valueMap>
</field>
<field name="protectedTpTunnel" title="Protection" type="boolean" required="false" visibility="Editable" value="true"/>
<field name="diversityOption" title="Diversity Options" type="combo" required="false" disabled="true" visibility="Editable" value="Node Diversity Desired">
<valueMap>
<value>Node Diversity Desired</value>
<value>Node Diversity Required</value>
<value>Link Diversity Only</value>
</valueMap>
</field>
</section>
<section useFor="Policy-SR" name="Tunnel End-Points" required="true" >
<field name="sourceDevice" title="Source Node" type="textpicker" resource="devices" resourceToLoad="sourceBfdTemplate" required="true" editable="true" value="router-TP11"/>
<field name="sourceBfdTemplate" title="Source BFD" type="textpicker" required="true" value="BFDTemplate-SingleHopMilliSec-4"/>
<field name="sourceTunnelNumber" title="Source Tunnel Number" type="text" required="false" visibility="Editable" editable="true">
<validators>
<validator type="regexp" expression="\d*" errorMessage="Tunnel number must be 0 - 65535"/>
</validators>
</field>
<field name="sourceRouterId" title="Source Router ID" type="ip" required="false" visibility="Editable"/>
<field name="sourceGlobalId" title="Source Global ID" type="integer" required="false" visibility="Editable"/>
<field name="destinationDevice" title="Destination Node" type="textpicker" resource="devices" resourceToLoad="destinationBfdTemplate" required="true" value="tp-device2/>
<field name="destinationBfdTemplate" title="Destination BFD(If Different from Source BFD)" type="textpicker" required="true"/>
<field name="destinationTunnelNumber" title="Destination Tunnel Number" type="text" required="false" visibility="Editable" editable="true">
<validators>
<validator type="regexp" expression="\d*" errorMessage="Tunnel number must be 0 - 65535"/>
</validators>
</field>
<field name="destinationRouterId" title="Destination Router ID" type="ip" required="false" visibility="Editable"/>
<field name="destinationGlobalId" title="Destination Global ID" type="integer" required="false" visibility="Editable"/>
</section>
<section useFor="SR" name="Review Routing" required="true">
<group id="pathOptionsGroup" cloneable="true">
<field name="reqExOption" title="" type="combo" required="false" value="Required NE/Link">
<valueMap>
<value>Required NE/Link</value>
<value>Excluded NE/Link</value>
</valueMap>
</field>
<field name="reqExElement" title="" type="textpicker" resource="devicesAndTpLinks" width="400" required="true"/>
<field name="pathtype" title="" type="combo" required="false" value="Working Path">
<valueMap>
<value>Working Path</value>
<value>Protect Path</value>
</valueMap>
</field>
</group>
</section>
</service> ]]></value>
</item>
</properties>
</objectPath>
</objectPath>
</ns1:createInstance>
</soapenv:Body>
</soapenv:Envelope>
Modify an MPLS-TP Service Request
The following is an example of how to modify an MPLS-TP service request.
Example: ModifyMplsTpTunnelServiceRequest.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://www.cisco.com/cim-cx/2.0"
xmlns:ns1="urn:CIM">
<soapenv:Header>
<ns0:message id="1" sessiontoken="E453ADAFF7319803C1E8E3C68E1850CD"
Wait="false" WaitTimeout="300" />
</soapenv:Header>
<soapenv:Body>
<ns1:modifyInstance>
<objectPath subAction="modifyInstance" xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequest</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Flexible</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">RequestName</name>
<value xsi:type="xsd:string">TP-3</value>
</item>
</properties>
<objectPath subAction="modifyInstance" xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequestDetails</className>
<keyProperties xsi:type="ns1:CIMKeyPropertyList"
soapenc:arrayType="ns1:CIMKeyProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">LocatorId</name>
<value xsi:type="xsd:string">194</value>
</item>
</keyProperties>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceDefinition</name>
<value xsi:type="xsd:string">tp-policy</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">InstanceData</name>
<value xsi:type="xsd:string"><![CDATA[
<service serviceType="MPLS-TP" serviceName="MPLS-TP">
<section useFor="SR" name="Service Information " required="true" >
<field name="serviceType" title="Service Type" type="text" disabled="true" required="false" editable="true" value="MPLS-TP"/>
<field name="serviceDescription" title="Service Description" type="textarea" required="false"/>
</section>
<section useFor="Policy" name="Policy Information " required="true" >
<field name="policyName" title="Policy Name" type="text" required="true"/>
<field name="policyDescription" title="Description" type="textarea" required="false"/>
</section>
<section useFor="Policy-SR" name="Tunnel Characteristics" required="true" >
<group>
<field name="srcTunnelName" title="Name" type="text" required="false" editable="true">
<validators>
<validator type="regexp" expression=".*" errorMessage="Tunnel name can be any number of characters"/>
</validators>
</field>
<field name="dstTunnelName" title="Name (If Different from Source Name)" type="text" required="false" editable="true">
<validators>
<validator type="regexp" expression=".*" errorMessage="Tunnel name can be any number of characters"/>
</validators>
</field>
</group>
<group>
<field name="srcTunnelDescription" title="Description" type="textarea" required="false"/>
<field name="dstTunnelDescription" title="Description (If Different from Source Description)" type="textarea" required="false"/>
</group>
<group>
<field name="bandwidth" title="Transmit Bandwidth" type="integer" required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
<field name="rxBandwidth" title="Receive Bandwidth(If Different from Transmit)" type="integer" required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
</group>
<group>
<field name="srcTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number At Source" type="boolean" required="false" value="true" visibility="Hidden"/>
<field name="dstTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number At Destination" type="boolean" required="false" value="true" visibility="Hidden"/>
</group>
<field name="state" title="State" type="combo" required="false" visibility="Hidden" value="Up">
<valueMap>
<value>Up</value>
<value>Down</value>
</valueMap>
</field>
<field name="protectedTpTunnel" title="Protection" type="boolean" required="false" visibility="Hidden" value="true"/>
<field name="diversityOption" title="Diversity Options" type="combo" required="false" disabled="true" visibility="Hidden" value="Node Diversity Desired">
<valueMap>
<value>Node Diversity Desired</value>
<value>Node Diversity Required</value>
<value>Link Diversity Only</value>
</valueMap>
</field>
</section>
<section useFor="Policy-SR" name="Tunnel End-Points" required="true" >
<field name="sourceDevice" title="Source Node" type="textpicker" resource="devices" resourceToLoad="sourceBfdTemplate" required="true" editable="true" />
<field name="sourceBfdTemplate" title="Source BFD" type="textpicker" required="true"/>
<field name="sourceTunnelNumber" title="Source Tunnel Number" type="text" required="false" visibility="Hidden" editable="true">
<validators>
<validator type="regexp" expression="\d*" errorMessage="Tunnel number must be 0 - 65535"/>
</validators>
</field>
<field name="sourceRouterId" title="Source Router ID" type="ip" required="false" visibility="Hidden"/>
<field name="sourceGlobalId" title="Source Global ID" type="integer" required="false" visibility="Hidden"/>
<field name="destinationDevice" title="Destination Node" type="textpicker" resource="devices" resourceToLoad="destinationBfdTemplate" required="true"/>
<field name="destinationBfdTemplate" title="Destination BFD(If Different from Source BFD)" type="textpicker" required="true"/>
<field name="destinationTunnelNumber" title="Destination Tunnel Number" type="text" required="false" visibility="Hidden" editable="true">
<validators>
<validator type="regexp" expression="\d*" errorMessage="Tunnel number must be 0 - 65535"/>
</validators>
</field>
<field name="destinationRouterId" title="Destination Router ID" type="ip" required="false" visibility="Hidden"/>
<field name="destinationGlobalId" title="Destination Global ID" type="integer" required="false" visibility="Hidden"/>
</section>
<section useFor="SR" name="Review Routing" required="true">
<group id="pathOptionsGroup" cloneable="true">
<field name="reqExOption" title="" type="combo" required="false" value="Required NE/Link">
<valueMap>
<value>Required NE/Link</value>
<value>Excluded NE/Link</value>
</valueMap>
</field>
<field name="reqExElement" title="" type="textpicker" resource="devicesAndTpLinks" width="400" required="true"/>
<field name="pathtype" title="" type="combo" required="false" value="Working Path">
<valueMap>
<value>Working Path</value>
<value>Protect Path</value>
</valueMap>
</field>
</group>
</section>
</service>
]]></value>
</item>
</properties>
</objectPath>
</objectPath>
</ns1:modifyInstance>
</soapenv:Body>
</soapenv:Envelope>
Related APIs
•CreateMplsTpTunnelServiceRequestNoProtection.xml
•DecommisionMplsTpTunnelServiceRequest.xml
Provisioning Example
This section describes the process for using the API to provision MPLS-TP, and includes the required operation, object definition (className), and parameter definitions.
This section contains the following:
Process Summary
This MPLS-TP provisioning example documents the following process:
1. Create provider.
2. Create region for provider.
3. Run Collect Config.
4. Create and run MPLS-TP Discovery task.
5. Create service definition (policy).
6. Create tunnel service request.
Provisioning Process
To provision MPLS-TP using Prime Fulfillment APIs, a MPLS-TP service definition (policy) and a MPLS-TP service request are required.
This section describes the process for provisioning MPLS-TP using XML examples.
The complete package of XML examples for MPLS-TP is available here:
Cisco Prime Fulfillment API Programmer Reference 6.2
Note For clarity, this provisioning process shows each step as a separate XML request. Many of these steps can be combined using performBatchOperations.
Step 1 Create a provider.
The provider is the administrative domain of an ISP, with one BGP autonomous system (AS) number. The network owned by the provider is called the backbone network. If an ISP has two AS numbers, you must define it as two provider administrative domains.
|
|
|
---|---|---|
createInstance |
Provider |
•Name •AsNumber |
XML Examples:
ISCProviderCreateRequest.xml
Step 2 Create regions.
Each provider can contain multiple regions.
|
|
|
---|---|---|
createInstance |
Region |
•Name •Provider |
XML Examples:
ISCDefaultRegionCreateRequest.xml
Step 3 Run a Collect Config task.
A device configuration collection is a task. This task uploads the current configuration from the device to the Prime Fulfillment database. The collection task is executed through a service request, and the service request is scheduled through a service order.
Note The service request name must be unique for each API.
XML Examples:
•CreateTaskServiceOrderCollection.xml
Step 4 Run an MPLS-TP Discovery task.
This discovers the MPLS-TP topology and resources and populates the repository.
XML Examples:
CreateTaskServiceOrderTpDiscovery.xml
Step 5 Create service definition (policy).
Service definitions or policies are used to define common tunnel attributes.
|
|
|
---|---|---|
createInstance |
ServiceDefinition |
•Name •Type •Provider |
ServiceDefinitionDetails |
[For a complete list of parameters, see Policy Example] |
XML Examples:
CreateMplsTpPolicy.xml
Step 6 Create service request.
An MPLS-TP service request applies the service definition and assigns interfaces and attributes.
|
|
|
---|---|---|
createInstance |
ServiceRequest |
•RequestName=TP-3 •ServiceRequestDetails |
ServiceRequestDetails |
[For a complete list of parameters, see example Creating an MPLS-TP Service Request With Path Protection] |
Tip Record the LocatorId value from the XML response for the service request. The Locator ID is required for subsequent service request tasks.
XML Example:
CreateMplsTpTunnelServiceRequestWithProtection.xml
Auditing Service Requests
There are currently two kinds of audit that can be applied to an MPLS-TP service request:
Config Audit
A configuration audit occurs automatically each time you deploy a service request. During this configuration audit, Prime Fulfillment verifies that all Cisco IOS commands are present and that they have the correct syntax. An audit also verifies that there were no errors during deployment by examining the commands configured by the service request on the target devices. If the device configuration does not match what is defined in the service request, the audit flags a warning.
If you do not want the configuration audit to occur, change the value for the Audit parameter. The Audit parameter supports these values:
•Audit—This is the default. A successfully deployed service request is automatically audited unless this flag is changed.
•NoAudit—Do not perform a configuration audit when the service request is deployed.
•ForceAudit—Perform a configuration audit even if the service request deployment is not successful.
You can use the Audit parameter with a Create, Modify, or Decommission service request or a Deployment task. See the "Service Decommission" section for more information. To perform a configuration audit as a separate task, see the "Configuration Audit" section.
Functional Audit
In an MPLS-TP Functional Audit, information is retrieved from source and destination endpoints to
provide tunnel audit information. A functional audit is then performed on service requests, which are not in one of the following states: Draft, Closed, Requested, Invalid, Failed Deploy.
The following is an example of how to create an MPLS-TP Functional Audit via the NBI.
The relevant attributes that need to be set for this service order is RequestName, Type, SubType, and LocatorId, which are highlighted with bold in the example below. In the example, they are set to MplsTpFuncAudit-TASK, task, SubType, and 13.
Example: CreateTaskServiceOrderMplsTpFuncAudit.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://www.cisco.com/cim-cx/2.0"
xmlns:ns1="urn:CIM">
<soapenv:Header>
<!-- WaitTimeout has a default set in system properties.-->
<ns0:message id="87855" timestamp="2002-12-13T14:55:38.885Z"
Wait="false" WaitTimeout="60" sessiontoken="26384AD0F199088FAA9F8989C4040DDA"/>
</soapenv:Header>
<soapenv:Body>
<ns1:performBatchOperation>
<actions xsi:type="ns1:CIMActionList"
soapenc:arrayType="ns1:CIMAction[]">
<action>
<actionName xsi:type="xsd:string">createInstance</actionName>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceOrder</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceName</name>
<value xsi:type="xsd:string">ServiceOrder-MplsTpFuncAudit</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">CarrierId</name>
<value xsi:type="xsd:string">234</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DesiredDueDate</name>
<value xsi:type="xsd:dateTime">2002-12-14T14:55:38.885Z</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">NumberOfRequests</name>
<value xsi:type="xsd:string">1</value>
</item>
</properties>
</objectPath>
</action>
<action>
<actionName xsi:type="xsd:string">createInstance</actionName>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequest</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">RequestName</name>
<value xsi:type="xsd:string">MplsTpFuncAudit-TASK</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Task</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequestDetails</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SubType</name>
<value xsi:type="xsd:string">MPLS-TP.FUNCTIONAL_AUDIT</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">LocatorId</name>
<value xsi:type="xsd:string">13</value>
</item>
</properties>
</objectPath>
</objectPath>
</action>
</actions>
</ns1:performBatchOperation>
</soapenv:Body>
</soapenv:Envelope>