Tenant Service (2.4.2)

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.

Port Channel

getPortchannels

Get all portchannels configured with tenant service.

query Parameters
tenant_name
required
string

tenant to which this port channel belongs.

Responses

getPortchannel

Get specified Port-channel details.

query Parameters
name
string

Unique name of the Port-channel to be fetched.

tenant_name
string

tenant to which this port channel belongs.

po_id
string

filter by port-channel id allocated on device. This should be combined with device_ip param.

device_ip
string

device ip to which the po_id belongs

Responses

createPortchannel

Create a new Port-channel.

Request Body schema: application/json

Create Port-channel parameter.

name
required
string

Identifier of the Port-channel unique to the tenant service.

description
string

Description of the Port-channel.

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

Configure speed for the Port-channel and its Member ports.

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

Configure LACP negotiation mode for Port-channel.

required
Array of objects (Device)
tenantName
required
string

Name of tenant to which this Port-channel belongs.

lacpTimeout
required
string
Enum: "short" "long"

Configure LACP timeout for Port-channel.

minLinkCount
string

Minimum number of links provided for a Port-channel.

Responses

Request samples

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

deletePortchannel

Delete the given Port-channel.

query Parameters
name
required
string

Unique name of the Port-channel unique to a device to be deleted.

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 port channel belongs.

Responses

updatePortchannel

Update the parameters of Port-channel.

Request Body schema: application/json

Update the Port-channel parameter.

name
required
string

Identifier of the Port-channel unique to the tenant service.

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

Add ports, Delete ports, modify description, minimum links or lacp-timeout for Portchannel.

required
Array of objects (Device)
tenantName
required
string

Tenant to which this Port-channel belongs.

lacpTimeout
string
Enum: "short" "long"

Configure LACP timeout for Port-channel.

description
string

Description of the Port-channel.

minLinkCount
string

Minimum number of links provided for a Port-channel.

Responses

Request samples

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

configurePortchannel

Configure Portchannel

query Parameters
name
required
string

Name of the Portchannel to retrieve

tenant_name
required
string

tenant to which this portchannel belongs

Responses

Vrf

getVrfs

Get all routers configured with tenant service.

query Parameters
tenant_name
required
string

tenant to which these routers belongs.

Responses

getVrf

Get Vrf details by name.

query Parameters
name
required
string

Vrf name to be deleted.

tenant_name
required
string

tenant to which this router belongs.

Responses

createVrf

Create a new router for a tenant.

Request Body schema: application/json

Create Vrf.

tenant_name
required
string

Tenant Name.

Array of objects (Vrf)

Responses

Request samples

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

deleteVrf

Delete a Vrf by name.

Request Body schema: application/json

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":
    [
    ]
}

updateVrf

Update the parameters of vrf

Request Body schema: application/json

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-add" "static-route-delete" "static-route-bfd-add" "static-route-bfd-delte" "max-path-add" "max-path-delete" "redistribute-add" "redistribute-delete" "rh-max-path-add" "rh-max-path-delete" "rh-ecmp-update" "centralized-router-add" "centralized-router-delete"

Below operation are supported -

  1. local-asn-add: Add local-asn in Vrf.
    1. local-asn-delete: Delete local-asn from Vrf.
    2. static-route-add: Add static-route in Vrf.
    3. static-route-delete: Delete static-route from Vrf.
    4. static-route-bfd-add: Add static-route-bfd in Vrf.
    5. static-route-bfd-delete: Delete static-route-bfd from Vrf.
    6. max-path-add: Add max-path in Vrf.
    7. max-path-delete: Delete max-path from Vrf.
    8. redistribute-add: Add redistribute in Vrf.
    9. redistribute-delete: Delete redistribute from Vrf.
    10. rh-max-path-add: Add rh-max-path in Vrf.
    11. rh-max-path-delete: Delete rh-max-path from Vrf.
    12. rh-ecmp-update: Update rh-ecmp in Vrf.
    13. centralized-router-add: Add centralized-router devices to Vrf.
    14. centralized-router-delete: Delete centralized-router devices 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-paths for vrf.

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

Resilient hashing maximum-paths for vrf.

rh-ecmp-enable
boolean

Resilient Hashing is enabled or not for vrf

Array of objects

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

graceful-restart-enable
boolean

Graceful restart is enabled or not for vrf

Responses

Request samples

Content type
application/json
{
  • "name": "vrf-red",
  • "operation": "local-asn-add | local-asn-delete | static-route-add | static-route-delete | static-route-bfd-add | static-route-bfd-delete | max-path-add | max-path-delete | redistribute-add | redistribute-delete | rh-max-path-add | rh-max-path-delete | rh-ecmp-update | centralized-router-add | centralized-router-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
}

Tenant

getTenants

Get all tenants configured with tenant service.

Responses

getTenant

This api will fetch the configured details like l2VNI, l3VNI and its assets.

query Parameters
name
required
string

Name of the tenant to retrieve

Responses

createTenant

This API will 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. While creating a tenant for an underlay fabric, VNI parameters are not required and will be considered as invalid rquest.

Request Body schema: application/json

Add a new tenant.

name
required
string

Unique Name of the tenant.

description
string

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

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.

vlan-range
string

Range of VLANs to be reserved for the tenant.

num-of-vrf
integer

Number of VRFs reserved for the tenant.

enable-bd
boolean

Enable bridge-domain so that overlapping vlans can be supported.

type
string
Enum: "shared" "private"

POs of shared tenant are available to other tenants. Create VRF, EPG, BGP Peer and BGP Peer-Group is not allowed for the shared tenant. Default tenant type is private.

Array of objects (Device)

Responses

Request samples

Content type
application/json
{
  • "name": "Tenant-A",
  • "description": "Tenant-A's Description",
  • "l2-vni-range": "1-100",
  • "l3-vni-range": "4096-5000",
  • "vlan-range": "10-20,50-60",
  • "num-of-vrf": 20,
  • "enable-bd": true,
  • "type": "shared | private",
  • "port-list":
    [
    ]
}

deleteTenant

This API will 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.

query Parameters
name
required
string

Name of the tenant to be deleted.

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

updateTenant

This API will update an existing tenant for non-conflicting changes of its resources like L2VNI, L3VNI, vlan range etc for the tenant. Update request to delete ports from the tenant with Networks configured on ports is not allowed without force parameter. Update with operation port_delete will deconfigure networks and port-property configured on that port. Port delete request if determined as long running job, a job id will be returned to caller which can be used to monitor the progress of the job.

path Parameters
tenant_name
required
string

name of the tenant that needs update.

Request Body schema: application/json

Update Tenant Settings can be done by name.

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

Add or Delete these configurations from tenant.

force
boolean

Use force parameter to delete the assets forcefully. Valid only when operation is set to port-delete

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",
  • "force": true,
  • "tenant":
    {
    }
}

Endpoint Group

getEndpointGroups

Get all Endpoint Groups configured with tenant service.

query Parameters
tenant_name
string

tenant to which this epg belongs.

all_data
boolean

Use all_data parameter to get the detailed list of all Endpoint Groups.

Responses

createEndpointGroup

An Endpoint Group is a collection of ports and port-channels 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.

Request Body schema: application/json

Create an End point Group.

tenant_name
required
string

Tenant Name.

Array of objects (EndpointGroup)

Responses

Request samples

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

getEndpointGroup

This api will fetch the configured details and not the operational state of the ports belonging to this EndpointGroup.

query Parameters
name
required
string

Name of the EndpointGroup to retrieve

tenant_name
required
string

tenant to which this epg belongs.

Responses

deleteEndpointGroup

This API will 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 endpoint. The delete request with force parameter will trigger a delete operation for the network to which this EndpointGroup was attached.

Request Body schema: application/json
tenant_name
required
string

Tenant Name

force
boolean

Set to true if EPG 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":
    [
    ]
}

updateEndpointGroupPortGroup

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

Request Body schema: application/json

Update Endpoint Group.

tenant_name
string

Tenant Name

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

Add or Delete these ports from the port group. To delete/add device provide mgmt-ip with empty port to it.

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":
    [
    ]
}

updateEndpointGroupNetworkPolicy

Update operation supports updating networks belonging to these Endpoint Groups. Below operation are supported -

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

Update Endpoint Group.

tenant_name
string

Tenant Name

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

These operations are allowed on endpoint group

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":
    [
    ]
}

updateEndpointGroupNetworkProperty

Update operation supports updating properties of the networks belonging to these Endpoint Groups. 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.
Request Body schema: application/json

Update Endpoint Group.

tenant_name
string

Tenant Name

operation
string
Enum: "local-ip-add" "local-ip-delete" "anycast-ip-add" "anycast-ip-delete"

These operations are allowed on endpoint group

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",
  • "endpoint-group-list":
    [
    ]
}

detachNetworkFromEndpointGroup

This API helps user to split network or range of networks from the endpoint group into another endpoint group for allowing user to do operations on the newly created endpoint group.

Request Body schema: application/json

Create an End point Group.

tenant_name
required
string

Name of tenant to which this EndpointGroup belongs.

from-epg
required
string

Unique name of the endpoint group.

to-epg
required
string

A new endpoint group name on which these network(s) will be created.

to-epg-description
string

Description about end point group to be created.

ctag-range
string

Range of CTags to be detached.

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-1",
  • "from-epg": "EndpointGroup-1",
  • "to-epg": "EndpointGroup-2",
  • "to-epg-description": "EndpointGroup-Finance",
  • "ctag-range": "2-30"
}

configureEndpointGroup

Configure EndpointGroup

query Parameters
name
required
string

Name of the EndpointGroup to retrieve

tenant_name
required
string

tenant to which this epg belongs.

Responses

Debug

setDebug

Set Debug Level for modules.

query Parameters
debug_level
string

Set debug level. If empty reset to default level (ERROR).

Responses

deviceInventorySync

Sync devices for given ips from inventory.

query Parameters
device_ips
required
Array of strings non-empty

IP Addresses of the device(s) to be updated.

Responses

deviceConfigDriftReconcile

This API helps user to generate the confg-drift between efa intended and device configuration. If reconcile flag is set then generated config-drift will be pushed to the device.

query Parameters
device_ip
required
string

Devcie IP for which config drift will be generated.

reconcile
boolean

If flag is set to true, then generated config-drift will be pushed to the device.

Responses

Endpoint Group Error

getEndpointGroupError

This api will fetch EndpointGroup errors

query Parameters
name
required
string

Name of the EndpointGroup to retrieve

tenant_name
required
string

tenant to which this epg belongs.

Responses

Trouble Shooting

getExecutionDetail

Get the detailed output of the given execution ID

query Parameters
id
required
string

Detailed output of the given execution ID

Responses

getExecutionList

Get the list of all the previous executions

query Parameters
limit
required
integer
Default: 10

Limit the number of executions that will be sent in the response. Default is 10

status
string
Default: "all"

Filter the executions based on the status(failed/succeeded/all)

Responses

deleteExecutions

This API will delete the execution older than specific number of days

query Parameters
days_older_by
required
integer
Default: 30

Deletes execution entries older than specified number of days

Responses

GetRunningConfig

Get the list of all CLIs in Running Config

Responses

getEventHistoryList

Get the list of all the event Histories

query Parameters
execution_uuid
string

Execution UUID for filtering

device_ip
string

Device IP for filtering

Responses

BGP Service

getBgpServicePeerGroups

Get all bgp-service-peer-groups configured with tenant service.

query Parameters
tenant_name
string

tenant to which this bgp-peer-group belongs.

all_data
boolean

Use all_data parameter to get the detailed list of all BGP Services.

Responses

createBgpServicePeerGroup

BGP Service Peer Group is a collection of bgp peer-group configuration done on router bgp instance of a device.

Request Body schema: application/json

Create BGP Service Peer Group.

tenant_name
required
string

Tenant Name.

Array of objects (BgpServicePeerGroup)

Responses

Request samples

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

updateBgpServicePeerGroup

Update operation supports add and delete of peer group config on router bgp instance on device(s). Below operation are supported -

  1. peer-group-add: Add peer group configuration on router bgp instance of the device.
  2. peer-group-delete: Delete peer group configuration for the specified router bgp instance from the device.
  3. desc-update: Update description bgp service peer group.
Request Body schema: application/json

Update BGP Service.

tenant_name
required
string

Tenant Name.

operation
required
string
Enum: "peer-group-add" "peer-group-delete" "desc-update"
object (BgpServicePeerGroup)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "peer-group-add | peer-group-delete",
  • "bgp-service-peer-group-update":
    {
    }
}

deleteBgpServicePeerGroup

This API will delete the BGP Service Peer Group

query Parameters
name
required
string

Name of the bgp-service-peer-group to delete

tenant_name
required
string

tenant to which this bgp service peer group belongs.

force
boolean

Use force parameter to remove the bgp-servicepeer-group forcefully. This parameters allow user to ignore the error thrown by devices during bgp-service-peer-group delete. Useful to delete this object when device is not reachable. If force is used some configuratoin can be left on the device if deconfiguration fails.

Responses

getBgpServicePeerGroup

This api will fetch the configured details state of the peer-config belonging to this BGP Service.

query Parameters
name
required
string

Name of the bgp-service-peer-group to retrieve

tenant_name
required
string

tenant to which this epg belongs.

Responses

configureBgpServicePeerGroup

Configure BGP Service Peer Group

query Parameters
name
required
string

Name of the BGP Service Peer Group to configure

tenant_name
required
string

tenant to which this BGP Service Peer Group belongs.

Responses

getBgpPeers

Get all bgp-peer-groups configured with tenant service.

query Parameters
tenant_name
string

tenant to which this bgp-peer-group belongs.

all_data
boolean

Use all_data parameter to get the detailed list of all BGP Services.

Responses

creatBgpPeer

BGP Service is a collection of bgp peer configuration done on router bgp instance of a device for a provided vrf. This provides the means to extend networks created by Endpoint Group to establish bgp session with its peer towards the external gateway and coumpute.

Request Body schema: application/json

Create BGP Service.

tenant_name
required
string

Tenant Name.

Array of objects (BgpPeer)

Responses

Request samples

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

updateBgpPeer

Update operation supports add and delete of peer config on a VRF for device(s). Below operation are supported -

  1. peer-add: Add neighbor configuration for the specified vrf on device of bgp-peer-group.
  2. peer-delete: Add neighbor configuration for the specified vrf on device of bgp-peer-group.
  3. desc-update: Update description bgp service.
Request Body schema: application/json

Update BGP Service.

tenant_name
required
string

Tenant Name.

operation
required
string
Enum: "peer-add" "peer-delete" "desc-update"
object (BgpPeer)

Responses

Request samples

Content type
application/json
{
  • "tenant_name": "Tenant-A",
  • "operation": "peer-add | peer-delete",
  • "peer-list":
    {
    }
}

deleteBgpPeer

This API will delete the BGP Service

query Parameters
name
required
string

Name of the bgp-peer-group to delete

tenant_name
required
string

tenant to which this epg belongs.

force
boolean

Use force parameter to remove the bgp-peer-group forcefully. This parameters allow user to ignore the error thrown by devices during bgp-peer-config delete. Useful to delete this object when device is not reachable. If force is used some configuratoin can be left on the device if deconfiguration fails.

Responses

getBgpPeer

This api will fetch the configured details state of the peer-config belonging to this BGP Service.

query Parameters
name
required
string

Name of the bgp-peer-group to retrieve

tenant_name
required
string

tenant to which this epg belongs.

Responses

configureBgpPeer

Configure BGP Service

query Parameters
name
required
string

Name of the BGP Service to configure

tenant_name
required
string

tenant to which this BGP Service belongs.

Responses

Health

getHealth

Get the health of the Tenant service.

Responses