BigIP

The following services are supported by the REST connector for F5 (BigIP).

connect

API to connect to the device.

The BigIP REST implementation supports specifying the port to connect to and allows to specify the username and password in the testbed YAML file. Under the hood its using token authentication to communicate with BigIP.

# Example
# -------
#
#   pyATS testbed yaml example for defining a REST connection

testbed:
    name: myTestbed

devices:
bigip01.lab.local:
    alias: 'bigip01'
    type: 'bigip'
    os: 'bigip'
    custom:
    abstraction:
        order: [os]
    connections:
    rest:
        class: rest.connector.Rest
        ip: 1.2.3.4
        port: 443
        protocol: http
        credentials:
        rest:
            username: admin
            password: admin

If no port is specified, the default of 443 is used. If verify is provided and is True, it will verify the SSL certificate. If protocol is not provided, the default is http.

device = testbed.devices['bigip01']
device.connect(alias='rest', via='rest')
device.rest.connected

disconnect

Will delete the current API Token in use.

GET

API to GET from the device.

GET arguments

Argument

Description

Default

api_url

API url string (required)

timeout

timeout in seconds (optional)

30

url = '/mgmt/tm/ltm/node'
nodes = device.rest.get(url)

POST

API to POST data to the device.

POST arguments

Argument

Description

Default

api_url

API url string (required)

payload

Payload to be sent (required)

timeout

timeout in seconds (optional)

30

url = '/mgmt/tm/ltm/node/'
data = {"name":"wa12","partition":"Common","address":"119.119.192.193"}
node = device.rest.post(url, data)

url = '/mgmt/tm/ltm/node/'
data = {"name":"wa13","partition":"Common","address":"119.119.192.195"}
node = device.rest.post(url, data)

url = '/mgmt/tm/ltm/pool/'
data = {"name":"wa12","partition":"Common","members":"wa12:80"}
pool = device.rest.post(url, data)

PATCH

API to PATCH data on the device.

PATCH arguments

Argument

Description

Default

api_url

API url string (required)

payload

Payload to be sent (required)

timeout

timeout in seconds (optional)

30

url = '/mgmt/tm/ltm/node/~Common~wa12'
data = {"session":"user-disabled"}
node = device.rest.patch(url, data)

PUT

API to PUT data on the device.

PUT arguments

Argument

Description

Default

api_url

API url string (required)

payload

Payload to be sent (required)

timeout

timeout in seconds (optional)

30

url = '/mgmt/tm/ltm/pool/wa12'
data = {"members":"wa13:80"}
pool = device.rest.put(url, data)

DELETE

API to DELETE data on the device.

DELETE arguments

Argument

Description

Default

api_url

API url string (required)

timeout

timeout in seconds (optional)

30

url = '/mgmt/tm/ltm/node/wa12'
node = device.rest.delete(url)

url = '/mgmt/tm/ltm/pool/wa12'
pool = device.rest.delete(url)

url = '/mgmt/tm/ltm/node/wa13'
node = device.rest.delete(url)

Section author: Mirza Waqas Ahmed <m.w.ahmed@gmail.com>