Extreme Fabric Automation - Tenant Service APIs (2.1.0)

Download OpenAPI specification:Download

The tenant service allow you to programmatically create a tenant, 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

200

OK

401

Authorization information is missing or invalid.

500

Unexpected error

default

Unexpected error

get /portchannels
http://gotenant-service:8083/v1/tenant/portchannels

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

200

OK

401

Authorization information is missing or invalid.

404

Port-channel with the specified ID or number is not found.

500

Unexpected error

default

Unexpected error

get /portchannel
http://gotenant-service:8083/v1/tenant/portchannel

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.

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.

memberinterfaces
required
Array of objects (Device)
tenantName
required
string

Name of tenant to which this Port-channel belongs.

Responses

200

OK

401

Authorization information is missing or invalid.

409

Port-channel with the specified Number already exists.

500

Unexpected error.

default

Unexpected error

post /portchannel
http://gotenant-service:8083/v1/tenant/portchannel

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "po101",
  • "speed": "<100Mbps|1Gbps|10Gbps|25Gbps|40Gbps|100Gbps>",
  • "negotiation": "<active|passive|static>",
  • "memberinterfaces":
    [
    ],
  • "tenantName": "Tenant-1"
}

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

200

OK

401

Authorization information is missing or invalid.

404

Port-channel with the specified ID or number is not found.

500

Unexpected error

default

Unexpected error

delete /portchannel
http://gotenant-service:8083/v1/tenant/portchannel

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" "po-speed"

Add or Delete these member-ports from the Port-channel.

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

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

memberinterfaces
required
Array of objects (Device)
tenantName
required
string

Tenant to which this Port-channel belongs.

Responses

200

OK

401

Authorization information is missing or invalid.

404

Port-channel with the specified ID or number is not found.

500

Unexpected error

default

Unexpected error

put /portchannel
http://gotenant-service:8083/v1/tenant/portchannel

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "Po101",
  • "operation": "port-add | port-delete | po-speed",
  • "speed": "<100Mbps|1Gbps|10Gbps|25Gbps|40Gbps|100Gbps>",
  • "memberinterfaces":
    [
    ],
  • "tenantName": "Tenant-1"
}

Vrf

getVrfs

Get all routers configured with tenant service.

query Parameters
tenant_name
required
string

tenant to which these routers belongs.

Responses

200

OK

401

Authorization information is missing or invalid.

500

Unexpected error.

default

Unexpected error

get /vrfs
http://gotenant-service:8083/v1/tenant/vrfs

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

200

OK

401

Authorization information is missing or invalid.

404

Vrf with the specified name is not found.

500

Unexpected error.

default

Unexpected error

get /vrf
http://gotenant-service:8083/v1/tenant/vrf

createVrf

Create a new router for a tenant.

Request Body schema: application/json

Create Vrf.

tenant-name
required
string

Tenant Name.

vrf-list
Array of objects (Vrf)

Responses

200

OK

401

Authorization information is missing or invalid.

409

Vrf with name already exists.

500

Unexpected error.

default

Unexpected error

post /vrf
http://gotenant-service:8083/v1/tenant/vrf

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "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

200

OK

401

Authorization information is missing or invalid.

404

Vrf with the specified name is not found.

500

Unexpected error.

default

Unexpected error

delete /vrf
http://gotenant-service:8083/v1/tenant/vrf

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "tenant-name": "Tenant-A",
  • "vrf-name-list":
    [
    ]
}

Tenant

getTenants

Get all tenants configured with tenant service.

Responses

200

OK

401

Authorization information is missing or invalid.

500

Unexpected error.

default

Unexpected error

get /tenants
http://gotenant-service:8083/v1/tenant/tenants

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

200

OK

401

Authorization information is missing or invalid.

404

A tenant with the specified name is not found.

500

Unexpected error.

default

Unexpected error

get /tenant
http://gotenant-service:8083/v1/tenant/tenant

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.

port-list
Array of objects (Device)

Responses

200

OK

401

Authorization information is missing or invalid.

409

A tenant with the specified name already exists.

500

Unexpected error.

default

Unexpected error

post /tenant
http://gotenant-service:8083/v1/tenant/tenant

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "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,
  • "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

200

OK

202

ACCEPTED

401

Authorization information is missing or invalid.

404

A tenant with the specified name is not found.

500

Unexpected error.

default

Unexpected error

delete /tenant
http://gotenant-service:8083/v1/tenant/tenant

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-update" "num-vrf-update" "enable-bd-update"

Add or Delete these ports from the port group.

force
boolean

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

tenant
object (Tenant)

Responses

200

OK

202

ACCEPTED

401

Authorization information is missing or invalid.

404

Tenant not found.

500

Unexpected error.

default

Unexpected error

put /tenant/{tenant_name}
http://gotenant-service:8083/v1/tenant/tenant/{tenant_name}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "operation": "desc-update | vni-update | port-add | port-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

200

OK

401

Authorization information is missing or invalid.

500

Unexpected error.

default

Unexpected error

get /endpointgroups
http://gotenant-service:8083/v1/tenant/endpointgroups

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.

endpoint-group-list
Array of objects (EndpointGroup)

Responses

200

OK

202

ACCEPTED

401

Authorization information is missing or invalid.

409

EndpointGroup with name already exists.

500

Unexpected error.

default

Unexpected error

post /endpointgroup
http://gotenant-service:8083/v1/tenant/endpointgroup

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "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

200

OK

401

Authorization information is missing or invalid.

404

An EndpointGroup with the specified name is not found.

500

Unexpected error.

default

Unexpected error

get /endpointgroup
http://gotenant-service:8083/v1/tenant/endpointgroup

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.

endpoint-group-list
required
Array of objects (EndpointGroupName)

Responses

200

OK

202

ACCEPTED

401

Authorization information is missing or invalid.

404

An EndpointGroup with the specified name is not found.

500

Unexpected error.

default

Unexpected error

delete /endpointgroup
http://gotenant-service:8083/v1/tenant/endpointgroup

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "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.

endpoint-group-list
Array of objects (EndpointGroupPortGroup)

Responses

200

OK

202

ACCEPTED

401

Authorization information is missing or invalid.

404

EndpointGroup not found.

500

Unexpected error.

default

Unexpected error

patch /endpointgroup/port-group
http://gotenant-service:8083/v1/tenant/endpointgroup/port-group

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "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

endpoint-group-list
Array of objects (EndpointGroupNetworkPolicy)

Responses

200

OK

202

ACCEPTED

401

Authorization information is missing or invalid.

404

EndpointGroup not found.

500

Unexpected error.

default

Unexpected error

patch /endpointgroup/network-policy
http://gotenant-service:8083/v1/tenant/endpointgroup/network-policy

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "tenant-name": "Tenant-A",
  • "operation": "ctag-range-add | ctag-range-delete | vrf-add | vrf-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

200

OK

401

Authorization information is missing or invalid.

409

EndpointGroup with name already exists.

500

Unexpected error.

default

Unexpected error

post /endpointgroup/detach-network
http://gotenant-service:8083/v1/tenant/endpointgroup/detach-network

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "tenant-name": "Tenant-1",
  • "from-epg": "EndpointGroup-1",
  • "to-epg": "EndpointGroup-2",
  • "to-epg-description": "EndpointGroup-Finance",
  • "ctag-range": "2-30"
}

Debug

setDebug

Set Debug Level for modules.

query Parameters
debug_level
string

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

Responses

200

OK

401

Authorization information is missing or invalid.

500

Unexpected error.

default

Unexpected error

post /debug
http://gotenant-service:8083/v1/tenant/debug

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

200

OK

401

Authorization information is missing or invalid.

404

An EndpointGroup with the specified name is not found.

500

Unexpected error.

default

Unexpected error

get /endpointgroup/errors
http://gotenant-service:8083/v1/tenant/endpointgroup/errors

Trouble Shooting

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

200

OK

401

Authorization information is missing or invalid.

500

Unexpected error.

default

Unexpected error

get /executions
http://gotenant-service:8083/v1/tenant/executions