Tenant Service (3.6.0)

Download OpenAPI specification:Download

This is the spec that defines the APIs provided by the tenant service to create a tenant and add the networks to the tenant, configure network parameters and configure switches with the tenant network's specific configurations.

Health

getHealth

This API helps to get the health of the Tenant service

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "Service": "string",
  • "MessageBus": "string"
}

Tenant

getTenants

This API helps to get all tenants configured with tenant service

Authorizations:
bearerAuth
query Parameters
object (SearchQuery)

{"group_by":"name"} Responses grouped by name {"filter":[{"name":"name","value":"Tenant1"},{"name":"id',"value":"1"}] Responses searched by name="Tenant1" and id="1" {"fuzzy":"tenant"} Responses searched using fuzzy search "tenant"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

include
Array of strings
Items Value: "utilization"

include parameters that needs to be shown with output

Responses

Response samples

Content type
application/json
{
  • "paginationResponse": {
    },
  • "tenant": [
    ]
}

getTenant

This API helps to get the specified Tenant details

Authorizations:
bearerAuth
query Parameters
name
required
string

Name of the tenant to retrieve details

include
Array of strings
Items Value: "utilization"

include parameters that needs to be shown with output

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Tenant-A",
  • "type": "shared | private",
  • "description": "Tenant-A's Description",
  • "enable-bd": true,
  • "vlan-range": "10-20,50-60",
  • "l2-vni-range": "1-100",
  • "num-of-vrf": 20,
  • "l3-vni-range": "4096-5000",
  • "l2-vni-capacity": 100,
  • "l3-vni-capacity": 100,
  • "fabric-list": [
    ],
  • "port-list": [
    ],
  • "mirror-destination-port-list": [
    ],
  • "port-channel-list": [
    ],
  • "vrf-list": [
    ],
  • "epg-list": [
    ],
  • "bgp-peer-group-list": [
    ],
  • "bgp-peer-list": [
    ],
  • "mirror-session-list": [
    ],
  • "tenant-utilization": {
    },
  • "fabric": [
    ],
  • "DeviceDetails": [
    ],
  • "bgp-peer-group": [
    ],
  • "vrf": [
    ]
}

createTenant

This API helps to create a tenant and reserve resources like Physical Ports, L2VNI, L3VNI, VLAN and Number of VRFs for the tenant. Tenant Name must be a unique key while creating a tenant with the tenant service.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Create a new tenant

name
required
string

Unique name of the tenant

type
string
Enum: "shared" "private"

POs or VRFs of shared tenant are available to other tenants. Default tenant type is private.

description
string

Description about tenant

enable-bd
boolean

Enable bridge-domain so that overlapping vlans can be supported

vlan-range
string

Range of VLANs to reserve for the tenant

l2-vni-range
string

Contiguous Range of L2 VNIs in ascending order will be reserved for the tenant within the scope of a fabric. L2 networks will consume the VNIs from this range.

num-of-vrf
integer

Number of VRFs to reserve for the tenant

l3-vni-range
string

Contiguous Range of L3 VNIs in ascending order will be reserved for the tenant within the scope of a fabric. L3 networks will consume the VNIs from this range.

l2-vni-capacity
integer

l2 vni capacity

l3-vni-capacity
integer

l3 vni capacity

fabric-list
Array of strings unique
Array of objects (Device) unique
Array of objects (Device) unique
port-channel-list
Array of strings unique
vrf-list
Array of strings unique
epg-list
Array of strings unique
bgp-peer-group-list
Array of strings unique
bgp-peer-list
Array of strings unique
mirror-session-list
Array of strings unique
object (TenantUtilization)

Responses

Request samples

Content type
application/json
{
  • "name": "Tenant-A",
  • "type": "shared | private",
  • "description": "Tenant-A's Description",
  • "enable-bd": true,
  • "vlan-range": "10-20,50-60",
  • "l2-vni-range": "1-100",
  • "num-of-vrf": 20,
  • "l3-vni-range": "4096-5000",
  • "l2-vni-capacity": 100,
  • "l3-vni-capacity": 100,
  • "fabric-list": [
    ],
  • "port-list": [
    ],
  • "mirror-destination-port-list": [
    ],
  • "port-channel-list": [
    ],
  • "vrf-list": [
    ],
  • "epg-list": [
    ],
  • "bgp-peer-group-list": [
    ],
  • "bgp-peer-list": [
    ],
  • "mirror-session-list": [
    ],
  • "tenant-utilization": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Tenant-A",
  • "type": "shared | private",
  • "description": "Tenant-A's Description",
  • "enable-bd": true,
  • "vlan-range": "10-20,50-60",
  • "l2-vni-range": "1-100",
  • "num-of-vrf": 20,
  • "l3-vni-range": "4096-5000",
  • "l2-vni-capacity": 100,
  • "l3-vni-capacity": 100,
  • "fabric-list": [
    ],
  • "port-list": [
    ],
  • "mirror-destination-port-list": [
    ],
  • "port-channel-list": [
    ],
  • "vrf-list": [
    ],
  • "epg-list": [
    ],
  • "bgp-peer-group-list": [
    ],
  • "bgp-peer-list": [
    ],
  • "mirror-session-list": [
    ],
  • "tenant-utilization": {
    },
  • "fabric": [
    ],
  • "DeviceDetails": [
    ],
  • "bgp-peer-group": [
    ],
  • "vrf": [
    ]
}

deleteTenant

This API helps to delete the tenant if no tenant network is created by this tenant. If it has any tenant network, a force option is required to delete this tenant. The delete request with force parameter will trigger a delete operation for all its networks.

Authorizations:
bearerAuth
query Parameters
name
required
string

Name of the tenant to delete

force
boolean

Use force parameter to remove the tenant forcefully. This will remove the relevant configurations from the devices for its tenant network and delete the relevant record with tenant service.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Tenant-A",
  • "type": "shared | private",
  • "description": "Tenant-A's Description",
  • "enable-bd": true,
  • "vlan-range": "10-20,50-60",
  • "l2-vni-range": "1-100",
  • "num-of-vrf": 20,
  • "l3-vni-range": "4096-5000",
  • "l2-vni-capacity": 100,
  • "l3-vni-capacity": 100,
  • "fabric-list": [
    ],
  • "port-list": [
    ],
  • "mirror-destination-port-list": [
    ],
  • "port-channel-list": [
    ],
  • "vrf-list": [
    ],
  • "epg-list": [
    ],
  • "bgp-peer-group-list": [
    ],
  • "bgp-peer-list": [
    ],
  • "mirror-session-list": [
    ],
  • "tenant-utilization": {
    },
  • "fabric": [
    ],
  • "DeviceDetails": [
    ],
  • "bgp-peer-group": [
    ],
  • "vrf": [
    ]
}

updateTenant

This API helps to update existing tenant for non-conflicting changes of its resources like L2VNI, L3VNI, vlan range, port, number of vrf, description, type etc for the tenant.

Authorizations:
bearerAuth
path Parameters
tenant_name
required
string

Name of the tenant to update parameter

Request Body schema: application/json
required

Update the Tenant parameter

operation
required
string
Enum: "desc-update" "vni-update" "port-add" "port-delete" "vlan-add" "vlan-delete" "vlan-update" "num-vrf-update" "enable-bd-update" "mirror-destination-port-add" "mirror-destination-port-delete"

Add, delete or update tenant configuration

force
boolean

Force option which is valid only for port-delete operation is deprecated.

object (Tenant)

Responses

Request samples

Content type
application/json
{
  • "operation": "desc-update | vni-update | port-add | port-delete | vlan-add | vlan-delete | vlan-update | num-vrf-update | enable-bd-update | mirror-destination-port-add | mirror-destination-port-delete",
  • "force": true,
  • "tenant": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Tenant-A",
  • "type": "shared | private",
  • "description": "Tenant-A's Description",
  • "enable-bd": true,
  • "vlan-range": "10-20,50-60",
  • "l2-vni-range": "1-100",
  • "num-of-vrf": 20,
  • "l3-vni-range": "4096-5000",
  • "l2-vni-capacity": 100,
  • "l3-vni-capacity": 100,
  • "fabric-list": [
    ],
  • "port-list": [
    ],
  • "mirror-destination-port-list": [
    ],
  • "port-channel-list": [
    ],
  • "vrf-list": [
    ],
  • "epg-list": [
    ],
  • "bgp-peer-group-list": [
    ],
  • "bgp-peer-list": [
    ],
  • "mirror-session-list": [
    ],
  • "tenant-utilization": {
    },
  • "fabric": [
    ],
  • "DeviceDetails": [
    ],
  • "bgp-peer-group": [
    ],
  • "vrf": [
    ]
}

Port Channel

getPortchannels

This API helps to get all Portchannels configured with Tenant service

Authorizations:
bearerAuth
query Parameters
tenant_name
required
string

Tenant to which this Portchannel belongs

object (SearchQuery)

{"group_by":"state"} Responses grouped by state {"filter":[{"name":"name","value":"samplePO"}] Responses searched by name="samplePO" {"fuzzy":"Port channel"} Responses searched using fuzzy search "Port channel"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

Responses

Response samples

Content type
application/json
{
  • "paginationResponse": {
    },
  • "portchannel": [
    ]
}

getPortchannel

This API helps to get the specified Portchannel details

Authorizations:
bearerAuth
query Parameters
name
string

Unique name of the Portchannel to fetch

tenant_name
string

Tenant to which this Portchannel belongs

po_id
string

Filter by Portchannel id allocated on device. This should be combined with device_ip param.

device_ip
string

Device Management IP Address to which the po_id belongs

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "number": 1,
  • "name": "po101",
  • "description": "po101",
  • "speed": "100Mbps | 1Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps",
  • "negotiation": "active | passive | static",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "minLinkCount": 2,
  • "mtu": 9100,
  • "state": "po-init | po-created | po-port-delete-pending | po-delete-pending | po-lacp-timeout-set-pending | po-description-set-pending | po-min-links-count-set-pending | po-mtu-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "error": [
    ]
}

createPortchannel

This API helps to create a new Portchannel

Authorizations:
bearerAuth
Request Body schema: application/json
required

Create Port-channel parameter

number
string

Portchannel interface number generated by the service

name
required
string

Identifier of the Portchannel unique to the tenant service

description
string

Description of the Portchannel

speed
required
string
Enum: "100Mbps" "1Gbps" "10Gbps" "25Gbps" "40Gbps" "100Gbps"

Configure speed for the Portchannel and its Member ports

negotiation
required
string
Enum: "active" "passive" "static"

Configure LACP negotiation mode for Portchannel

required
Array of objects (Device) unique
tenantName
required
string

Name of the tenant to which this Portchannel belongs

lacpTimeout
required
string
Enum: "short" "long"

Configure LACP timeout for Portchannel

minLinkCount
string

Minimum number of links provided for a Portchannel

mtu
integer

MTU for a Portchannel

Responses

Request samples

Content type
application/json
{
  • "number": 1,
  • "name": "po101",
  • "description": "po101",
  • "speed": "100Mbps | 1Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps",
  • "negotiation": "active | passive | static",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "minLinkCount": 2,
  • "mtu": 9100
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "number": 1,
  • "name": "po101",
  • "description": "po101",
  • "speed": "100Mbps | 1Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps",
  • "negotiation": "active | passive | static",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "minLinkCount": 2,
  • "mtu": 9100,
  • "state": "po-init | po-created | po-port-delete-pending | po-delete-pending | po-lacp-timeout-set-pending | po-description-set-pending | po-min-links-count-set-pending | po-mtu-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "error": [
    ]
}

deletePortchannel

This API helps to delete the given Portchannel

Authorizations:
bearerAuth
query Parameters
name
required
string

Unique name of the Portchannel to delete

force
boolean

Use force parameter to remove the tenant network forcefully. This will remove the relevant configurations from the devices in this tenant network and update the record with tenant service.

tenant_name
required
string

Tenant to which this Portchannel belongs

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "number": 1,
  • "name": "po101",
  • "description": "po101",
  • "speed": "100Mbps | 1Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps",
  • "negotiation": "active | passive | static",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "minLinkCount": 2,
  • "mtu": 9100,
  • "state": "po-init | po-created | po-port-delete-pending | po-delete-pending | po-lacp-timeout-set-pending | po-description-set-pending | po-min-links-count-set-pending | po-mtu-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "error": [
    ]
}

updatePortchannel

This API helps to update the parameters of the Portchannel

Authorizations:
bearerAuth
Request Body schema: application/json
required

Update the Port-channel parameter

name
required
string

Identifier of the Portchannel unique to the tenant service

operation
required
string
Enum: "port-add" "port-delete" "lacp-timeout" "description" "min-link-count" "mtu-add" "mtu-delete"

Add ports, Delete ports, modify lacp-timeout, description, minimum links, add mtu and delete mtu for Portchannel

required
Array of objects (Device) unique
tenantName
required
string

Tenant to which this Portchannel belongs

lacpTimeout
string
Enum: "short" "long"

Configure LACP timeout for Portchannel

description
string

Description of the Portchannel

minLinkCount
string

Minimum number of links provided for a Portchannel

mtu
integer

MTU for a Portchannel

Responses

Request samples

Content type
application/json
{
  • "name": "po101",
  • "operation": "port-add | port-delete | lacp-timeout | description | min-link-count | mtu-add | mtu-delete",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "description": "po101",
  • "minLinkCount": 2,
  • "mtu": 9100
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "number": 1,
  • "name": "po101",
  • "description": "po101",
  • "speed": "100Mbps | 1Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps",
  • "negotiation": "active | passive | static",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "minLinkCount": 2,
  • "mtu": 9100,
  • "state": "po-init | po-created | po-port-delete-pending | po-delete-pending | po-lacp-timeout-set-pending | po-description-set-pending | po-min-links-count-set-pending | po-mtu-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "error": [
    ]
}

configurePortchannel

This API helps to configure the given Portchannel

Authorizations:
bearerAuth
query Parameters
name
required
string

Name of the Portchannel to configure

tenant_name
required
string

Tenant to which this Portchannel belongs

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "number": 1,
  • "name": "po101",
  • "description": "po101",
  • "speed": "100Mbps | 1Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps",
  • "negotiation": "active | passive | static",
  • "memberinterfaces": [
    ],
  • "tenantName": "Tenant-1",
  • "lacpTimeout": "short | long",
  • "minLinkCount": 2,
  • "mtu": 9100,
  • "state": "po-init | po-created | po-port-delete-pending | po-delete-pending | po-lacp-timeout-set-pending | po-description-set-pending | po-min-links-count-set-pending | po-mtu-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "error": [
    ]
}

Vrf

getVrfs

This API helps to get all Vrfs configured with tenant service

Authorizations:
bearerAuth
query Parameters
tenant_name
required
string

Tenant to which this Vrf belongs

object (SearchQuery)

{"group_by":"routing-type"} Responses grouped by routing-type centralized or distributed {"filter":[{"name":"name","value":"VRF"}]} Responses searched by name="VRF" {"fuzzy":"VRF"} Responses searched using fuzzy search "VRF"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

Responses

Response samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "paginationResponse": {
    },
  • "vrf-list": [
    ]
}

getVrfStaticRoutes

This API helps to get specified static routes for VRF

Authorizations:
bearerAuth
query Parameters
object (SearchQuery)

{"group_by":"network"} Responses grouped by network {"filter":[{"name":"network","value":"20.0.0.0/24"}] Responses searched by network="20.0.0.0/24" {"fuzzy":"20.0.0.0/24"} Responses searched using fuzzy search "20.0.0.0/24"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

name
required
string

Vrf name to get

tenant_name
required
string

Tenant to which this Vrf belongs

Responses

Response samples

Content type
application/json
{
  • "paginationResponse": {
    },
  • "id": 1,
  • "name": "vrf-red",
  • "tenant_name": "Tenant-1",
  • "static-route": [
    ]
}

getVrf

This API helps to get specified Vrf details

Authorizations:
bearerAuth
query Parameters
name
required
string

Vrf name to delete

tenant_name
required
string

Tenant to which this Vrf belongs

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "vrf-red",
  • "tenantName": "Tenant-1",
  • "routing-type": "distributed",
  • "centralized-router": [
    ],
  • "layer3-extension-enable": "true | false",
  • "vrf-type": "shared | private",
  • "vrf-state": "vrf-init | vrf-created | vrf-device-created | vrf-device-static-route-delete-pending | vrf-device-static-route-bfd-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "l3-vni": 1024,
  • "irb-bd": 1024,
  • "irb-ve": 1024,
  • "br-bd": 1024,
  • "br-ve": 1024,
  • "br-vni": 1025,
  • "local-asn": 1024,
  • "route-target": [
    ],
  • "static-route": [
    ],
  • "static-route-bfd": [
    ],
  • "max-path": 8,
  • "redistribute": [
    ],
  • "rh-max-path": 8,
  • "rh-ecmp-enable": true,
  • "graceful-restart-enable": true,
  • "next-hop-recursion-enable": "true | false",
  • "default-information-originate-enable": "true | false",
  • "network": [
    ],
  • "static-network": [
    ],
  • "aggregate-address": [
    ],
  • "error": [
    ]
}

createVrf

This API helps to create a new Vrf for a tenant

Authorizations:
bearerAuth
Request Body schema: application/json
required

Create Vrf

tenant_name
required
string

Tenant Name

object (PaginationResponse)
Array of objects (Vrf)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "paginationResponse": {
    },
  • "vrf-list": [
    ]
}

Response samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "paginationResponse": {
    },
  • "vrf-list": [
    ]
}

deleteVrf

This API helps to delete the given Vrf

Authorizations:
bearerAuth
Request Body schema: application/json
required

Delete Vrf.

tenant_name
string

Tenant Name

vrf-name-list
Array of strings

List of VRFs.

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "vrf-name-list": [
    ]
}

Response samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "paginationResponse": {
    },
  • "vrf-list": [
    ]
}

updateVrf

This API helps to update the parameters of the Vrf

Authorizations:
bearerAuth
Request Body schema: application/json
required

Update the Vrf parameter

name
required
string

Identifier of the Vrf unique to the tenant service

operation
required
string
Enum: "local-asn-add" "local-asn-delete" "static-route-bfd-add" "static-route-bfd-delete" "static-route-add" "static-route-delete" "max-path-add" "max-path-delete" "redistribute-add" "redistribute-delete" "rh-max-path-add" "rh-max-path-delete" "centralized-router-add" "centralized-router-delete" "rh-ecmp-update" "graceful-restart-update" "next-hop-recursion-update" "default-information-originate-update" "network-add" "network-delete" "static-network-add" "static-network-delete" "aggregate-address-add" "aggregate-address-delete"

Below operations are supported -

  1. local-asn-add: Add local-asn in Vrf.
  2. local-asn-delete: Delete local-asn from Vrf.
  3. static-route-bfd-add: Add static-route-bfd in Vrf.
  4. static-route-bfd-delete: Delete static-route-bfd from Vrf.
  5. static-route-add: Add static-route in Vrf.
  6. static-route-delete: Delete static-route from Vrf.
  7. max-path-add: Add max-path in Vrf.
  8. max-path-delete: Delete max-path from Vrf.
  9. redistribute-add: Add redistribute in Vrf.
  10. redistribute-delete: Delete redistribute from Vrf.
  11. rh-max-path-add: Add rh-max-path in Vrf.
  12. rh-max-path-delete: Delete rh-max-path from Vrf.
  13. centralized-router-add: Add centralized-router devices to Vrf.
  14. centralized-router-delete: Delete centralized-router devices from Vrf.
  15. rh-ecmp-update: Update rh-ecmp for Vrf.
  16. graceful-restart-update: Update graceful-restart for Vrf.
  17. next-hop-recursion-update: Update next-hop-recursion for Vrf.
  18. default-information-originate-update: Update default-information-originate for Vrf.
  19. network-add: Add network route.
  20. network-delete: Delete network route.
  21. static-network-add: Add static-network to Vrf.
  22. static-network-delete: Delete static-network from Vrf.
  23. aggregate-address-add: Add aggregate-address in Vrf.
  24. aggregate-address-delete: Delete aggregate-address from vrf.
localAsn
integer <int64>

Local Asn for Vrf

tenantName
required
string

Tenant to which this Vrf belongs

Array of objects (StaticRouteBfd)
Array of objects (StaticRoute)
max-path
integer <int>

Maximum-path for Vrf

redistribute
Array of strings
Items Enum: "static" "connected"
rh-max-path
integer <int>

Resilient hashing maximum-path for Vrf

rh-ecmp-enable
boolean

Enable/disable resilient hashing for Vrf

Array of objects[ items unique ]

Users can provide only one multi-homed BL pair or one single-homed BL device as centralized-routers

graceful-restart-enable
boolean

Enable/disable graceful restart for Vrf

next-hop-recursion-enable
string
Enum: "true" "false"

Enable/disable next hop recursion for Vrf

default-information-originate-enable
string
Enum: "true" "false"

Enable/disable default information originate for Vrf

Array of objects (BgpNetworkRoute)

List of bgp networks to be advertised to the BGP peers.

Array of objects (BgpStaticNetwork)

List of static networks to be advertised to the BGP peers

Array of objects (BgpAggregateAddress)

List of BGP aggregate-address to be advertised to the BGP peers.

Responses

Request samples

Content type
application/json
{
  • "name": "vrf-red",
  • "operation": "local-asn-add | local-asn-delete | static-route-bfd-add | static-route-bfd-delete | static-route-add | static-route-delete | | max-path-add | max-path-delete | redistribute-add | redistribute-delete | rh-max-path-add | rh-max-path-delete | centralized-router-add | centralized-router-delete | rh-ecmp-update | graceful-restart-update | next-hop-recursion-update | default-information-originate-update | network-add | network-delete | static-network-add | static-network-delete | aggregate-address-add | aggregate-address-delete",
  • "localAsn": 1024,
  • "tenantName": "Tenant-1",
  • "static-route-bfd": [
    ],
  • "static-route": [
    ],
  • "max-path": 8,
  • "redistribute": [
    ],
  • "rh-max-path": 8,
  • "rh-ecmp-enable": true,
  • "centralized-router": [
    ],
  • "graceful-restart-enable": true,
  • "next-hop-recursion-enable": "true | false",
  • "default-information-originate-enable": "true | false",
  • "network": [
    ],
  • "static-network": [
    ],
  • "aggregate-address": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "vrf-red",
  • "tenantName": "Tenant-1",
  • "routing-type": "distributed",
  • "centralized-router": [
    ],
  • "layer3-extension-enable": "true | false",
  • "vrf-type": "shared | private",
  • "vrf-state": "vrf-init | vrf-created | vrf-device-created | vrf-device-static-route-delete-pending | vrf-device-static-route-bfd-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "l3-vni": 1024,
  • "irb-bd": 1024,
  • "irb-ve": 1024,
  • "br-bd": 1024,
  • "br-ve": 1024,
  • "br-vni": 1025,
  • "local-asn": 1024,
  • "route-target": [
    ],
  • "static-route": [
    ],
  • "static-route-bfd": [
    ],
  • "max-path": 8,
  • "redistribute": [
    ],
  • "rh-max-path": 8,
  • "rh-ecmp-enable": true,
  • "graceful-restart-enable": true,
  • "next-hop-recursion-enable": "true | false",
  • "default-information-originate-enable": "true | false",
  • "network": [
    ],
  • "static-network": [
    ],
  • "aggregate-address": [
    ],
  • "error": [
    ]
}

configureVrf

This API helps to configure the given Vrf

Authorizations:
bearerAuth
query Parameters
name
required
string

Name of the Vrf to configure

tenant_name
required
string

Tenant to which this Vrf belongs

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "vrf-red",
  • "tenantName": "Tenant-1",
  • "routing-type": "distributed",
  • "centralized-router": [
    ],
  • "layer3-extension-enable": "true | false",
  • "vrf-type": "shared | private",
  • "vrf-state": "vrf-init | vrf-created | vrf-device-created | vrf-device-static-route-delete-pending | vrf-device-static-route-bfd-delete-pending",
  • "dev-state": "provisioned | provisioning-failed | not-provisioned",
  • "app-state": "cfg-ready | cfg-in-sync | cfg-refreshed | cfg-refresh-err",
  • "l3-vni": 1024,
  • "irb-bd": 1024,
  • "irb-ve": 1024,
  • "br-bd": 1024,
  • "br-ve": 1024,
  • "br-vni": 1025,
  • "local-asn": 1024,
  • "route-target": [
    ],
  • "static-route": [
    ],
  • "static-route-bfd": [
    ],
  • "max-path": 8,
  • "redistribute": [
    ],
  • "rh-max-path": 8,
  • "rh-ecmp-enable": true,
  • "graceful-restart-enable": true,
  • "next-hop-recursion-enable": "true | false",
  • "default-information-originate-enable": "true | false",
  • "network": [
    ],
  • "static-network": [
    ],
  • "aggregate-address": [
    ],
  • "error": [
    ]
}

getVrfRouteTarget

This API helps to get specified route targets for VRF

Authorizations:
bearerAuth
query Parameters
object (SearchQuery)

{"group_by":"route-target"} Responses grouped by route-target {"filter":[{"name":"route-target","value":"100::100"}] Responses searched by route-target="100::100" {"fuzzy":"20.0.0.0/24"} Responses searched using fuzzy search "20.0.0.0/24"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

name
required
string

Vrf name to get

tenant_name
required
string

Tenant to which this Vrf belongs

Responses

Response samples

Content type
application/json
{
  • "paginationResponse": {
    },
  • "name": "vrf-red",
  • "tenantName": "Tenant-1",
  • "route-target": [
    ]
}

getVrfStaticRoutesBFD

This API helps to get specified static routes BFD for VRF

Authorizations:
bearerAuth
query Parameters
object (SearchQuery)

{"group_by":"network"} Responses grouped by network {"filter":[{"name":"network","value":"20.0.0.0/24"}] Responses searched by network="20.0.0.0/24" {"fuzzy":"20.0.0.0/24"} Responses searched using fuzzy search "20.0.0.0/24"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

name
required
string

Vrf name to get

tenant_name
required
string

Tenant to which this Vrf belongs

Responses

Response samples

Content type
application/json
{
  • "paginationResponse": {
    },
  • "id": 1,
  • "name": "vrf-red",
  • "tenantName": "Tenant-1",
  • "static-route-bfd": [
    ]
}

Vrf Error

getVrfError

This API helps to fetch Vrf errors

Authorizations:
bearerAuth
query Parameters
name
required
string

Name of the Vrf to retrieve errors

tenant_name
required
string

Tenant to which this Vrf belongs

Responses

Response samples

Content type
application/json
{
  • "name": "VRF-1",
  • "error": [
    ]
}

Endpoint Group

getEndpointGroups

This API helps to get all EndpointGroups configured with tenant service

Authorizations:
bearerAuth
query Parameters
tenant_name
string

Tenant to which this EndpointGroup belongs

object (SearchQuery)

{"group_by":"name"} Responses grouped by name {"filter":[{"name":"type","value":"port-profile"}] Responses searched by type="port-profile" {"fuzzy":"20.0.0.0/24"} Responses searched using fuzzy search "20.0.0.0/24"

object (PaginationQuery)

{"sort_by":"asc|desc"} Responses with id in ascending or descending order {"offset" : "lt:30"} Responses searched with id less than 30 {"page_size":20} Responses searched with limit of 20 entries

Responses

Response samples

Content type
application/json
{
  • "paginationResponse": {
    },
  • "epg": [
    ]
}

createEndpointGroup

This API helps to create EndpointGroup which is a collection of ports and Portchannels on which a tenant can apply policies - port-property and network-policy. The validation includes that the port should belong to only one fabric. The parameters like ctag, swithport mode must be non-conflicting.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Create EndpointGroup

tenant_name
required
string

Tenant Name

Array of objects (EndpointGroup)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "endpoint-group-list": [
    ]
}

Response samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "endpoint-group-list": [
    ]
}

getEndpointGroup

This API helps to fetch the configured details and not the operational state of the ports belonging to this EndpointGroup

Authorizations:
bearerAuth
query Parameters
name
required
string

Name of the EndpointGroup to retrieve

tenant_name
required
string

Tenant to which this EndpointGroup belongs

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "EndpointGroup-1",
  • "description": "EndpointGroup-Sales",
  • "type": "l3-hand-off | extension | port-profile",
  • "tenantName": "Tenant-1",
  • "state": "epg-empty | epg-with-port-group | epg-with-ctag-range | epg-with-port-group-and-ctag-range | epg-port-group-delete-pending | epg-ctag-range-delete-pending | epg-vrf-delete-pending | epg-delete-pending | epg-migration-pending | epg-local-ip-delete-pending | epg-anycast-ip-delete-pending",
  • "port-group": {
    },
  • "port-property": {
    },
  • "network-policy": {
    }
}

deleteEndpointGroup

This API helps to delete the endpoint if EndpointGroup is not attached to a tenant network. If it is attached to a tenant network then a force option is required to delete this EndpointGroup. The delete request with force parameter will trigger a delete operation for the network to which this EndpointGroup was attached.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Delete end point group.

tenant_name
required
string

Tenant Name

force
boolean

Set to true if EndpointGroup delete will require deconfiguring networks also

required
Array of objects (EndpointGroupName)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "force": true,
  • "endpoint-group-list": [
    ]
}

Response samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "force": true,
  • "endpoint-group-list": [
    ]
}

updateEndpointGroupPortGroup

This API helps in addition of new port(s) and/or Portchannel(s) to EndpointGroup or deletion of port(s) and/or Portchannel(s) from EndpointGroup. If the EndpointGroup is linked to any tenant network, the newly added port or Portchannel will become the part of the tenant network and its appropriate L2/L3 configurations will be applied on the newly added port, Portchannel and record will be updated with tenant automation service. For deleted port and/or Portchannel from EndpointGroup, appropriate configurations will be removed from the device and record will be updated with tenant automation service.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Update the EndpointGroup PortGroup

tenant_name
string

Tenant Name

operation
required
string
Enum: "port-group-add" "port-group-delete"

Add or delete ports from the port group

Array of objects (EndpointGroupPortGroup)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "port-group-add | port-group-delete",
  • "endpoint-group-list": [
    ]
}

Response samples

Content type
application/json
{
  • "epg": [
    ]
}

updateEndpointGroupPortProperty

This API helps to add, delete and update port property belonging to the EndpointGroups.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Update the EndpointGroup Port Property

tenant_name
required
string

Tenant Name

operation
required
string
Enum: "port-property-add" "port-property-delete" "port-property-update"

Add, delete or update property of port

Array of objects (EndpointGroupUpdatePortProperty)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "port-property-add | port-property-delete | port-property-update",
  • "endpoint-group-list": [
    ]
}

Response samples

Content type
application/json
{
  • "epg": [
    ]
}

updateEndpointGroupNetworkPolicy

This API helps in updating networks belonging to EndpointGroups. Below operations are supported -

  1. ctag-range-add: Add provided l2/l3 network(s) to EndpointGroup.
  2. ctag-range-delete: Delete provided l2/l3 network(s) from the EndpointGroup.
  3. vrf-add: Attach the networks to the provided Vrf. Required parameters like anycast for each network should be provided in network-properties block.
  4. vrf-delete: Migrate L3 networks to L2 networks. This operation doesn't expect any other parameters other than operation itself.
Authorizations:
bearerAuth
Request Body schema: application/json
required

Update the EndpointGroup NetworkPolicy

tenant_name
string

Tenant Name

operation
string
Enum: "ctag-range-add" "ctag-range-delete" "vrf-add" "vrf-delete"

Add or delete ctag-range and/or vrf

Array of objects (EndpointGroupNetworkPolicy)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "ctag-range-add | ctag-range-delete | vrf-add | vrf-delete",
  • "endpoint-group-list": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "EndpointGroup-1",
  • "description": "EndpointGroup-Sales",
  • "type": "l3-hand-off | extension | port-profile",
  • "port-group": {
    },
  • "port-property": {
    },
  • "network-policy": {
    },
  • "error": [
    ]
}

updateEndpointGroupNetworkProperty

This API helps in updating properties of the networks belonging to the EndpointGroups. Below operation are supported -

  1. local-ip-add: Configure local ip v4/v6 to Ve Interface of the network.
  2. local-ip-delete: De-Configure local ip v4/v6 from Ve Interface of the network. For local-ip-delete without specifying payload will deconfigure local-ip from all the nodes which has local-ip configured.
  3. anycast-ip-add: Configure anycast ip v4/v6 to Ve Interface of the network.
  4. anycast-ip-delete: De-Configure anycast ip v4/v6 from Ve Interface of the network.
  5. dhcp-relay-address-ip-add: Configure DHCP relay address ip v4/v6 to Ve Interface of the network.
  6. dhcp-relay-address-ip-delete: De-Configure DHCP relay address ip v4/v6 from Ve Interface of the network. 7. dhcp-relay-gateway-ip-add: Configure DHCP relay Gateway ip v4/v6 to Ve Interface of the network.
  7. dhcp-relay-gateway-ip-delete: De-Configure DHCP relay gateway ip v4/v6 from Ve Interface of the network.
Authorizations:
bearerAuth
Request Body schema: application/json
required

Update the EndpointGroup NetworkProperty

tenant_name
string

Tenant Name

operation
string
Enum: "local-ip-add" "local-ip-delete" "anycast-ip-add" "anycast-ip-delete" "dhcp-relay-address-ip-add" "dhcp-relay-address-ip-delete" "dhcp-relay-gateway-ip-add" "dhcp-relay-gateway-ip-delete"

Add or delete local-ip and/or anycast-ip and/or dhcp-relay-address-ip and/or dhcp-relay-gateway-ip

Array of objects (EndpointGroupNetworkProperty)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "local-ip-add | local-ip-delete | anycast-ip-add | anycast-ip-delete | dhcp-relay-address-ip-add | dhcp-relay-address-ip-delete | dhcp-relay-gateway-ip-add | dhcp-relay-gateway-ip-delete",
  • "endpoint-group-list": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "EndpointGroup-1",
  • "description": "EndpointGroup-Sales",
  • "type": "l3-hand-off | extension | port-profile",
  • "port-group": {
    },
  • "port-property": {
    },
  • "network-policy": {
    },
  • "error": [
    ]
}

updateEndpointGroupNetworkPolicyNetworkProperty

This API helps to add, delete and update network property belonging to the EndpointGroups.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Update EndpointGroup Network Policy Network Property

tenant_name
required
string

Tenant Name

operation
required
string
Enum: "network-property-add" "network-property-delete" "network-property-update"

Add, delete or update property of network

Array of objects (EndpointGroupUpdateNetworkProperty)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "network-property-add | network-property-delete | network-property-update",
  • "endpoint-group-list": [