Purchased Pool License Members

Overview

You can use this API to assign, refresh or revoke a purchased pool license seat for managed or unmanaged BIG-IPs. You can also assign and revoke Purchased pool licenses from a BIG-IP using the License Assign/Revoke API. To use this API, you require the administrator, device manager, or license manager role. For unmanaged BIG-IPs, you you will require the administrator role and the BIG-IP’s IP address and credentials.

You must activate a purchased pool license before you can use BIG-IQ to assign it to a BIG-IP. When assigned as a license member, that BIG-IP is counted as occupying a seat of the purchased pool license. You can activate a purchased pool license using the License Initial Activation API or the Purchased Pool Licenses API. In this topic, {uuid} is a placeholder for the identifier for the license in the purchased pool license collection.

REST Endpoint: /mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members

Requests

GET /mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members

Request Parameters

None

Query Parameters

None

Response

The JSON in the body of a GET response can contain the following parameters.

HTTP/1.1 200 OK

Name Type Description
auditRecordReference object Reference to audit record which tracks which BIG-IPs use which licenses.
     link string The url to the audit record for this assignment.
deviceAddress string The IP address of the BIG-IP.
deviceMachineId string The machine id of the BIG-IP.
deviceName string The name of the BIG-IP.
deviceReference object The deviceReference for a managed BIG-IP. An unmanaged BIG-IP has no deviceReference.
     link string The url to the deviceReference of the managed BIG-IP.
healthCheckFailureCount number Number of basic health check failures. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
lastGoodHealthCheckDateTime string Formatted Date/Time of last good health check. For example,”2017-03-02T06:15:57.846Z”. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
selfLink string Url to member assignment
state string The license’s state. For example, “INSTALL” or “LICENSED”.
uuid string An unique identifier for the member.

Permissions

Role Allow
device_manager Yes
License_Manager Yes

POST /mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members

To assign a license, you can send a POST request to the members collection. The JSON in the request can contain the following parameters.

Request Parameters

Name Type Required Description
deviceReference object Yes The deviceReference for a managed BIG-IP. An unmanaged BIG-IP has no deviceReference.
     link string Yes The url to the deviceReference of the managed BIG-IP.
httpsPort number Yes if the port is other than 443. The HTTP port of the BIG-IP.
password string Yes for an unmanaged BIG-IP. Password for the unmanaged BIG-IP.
username string Yes for an unmanaged BIG-IP. User name for the unmanaged BIG-IP.

Query Parameters

None

Response

HTTP/1.1 200 OK

The JSON in the POST’s response can contain the following parameters.

HTTP/1.1 200 OK

Name Type Description
auditRecordReference object Reference to audit record which tracks which BIG-IPs use which licenses.
     link string The url to the audit record for this assignment.
deviceAddress string The IP address of the BIG-IP.
deviceMachineId string The machine id of the BIG-IP.
deviceName string The name of the BIG-IP.
deviceReference object The deviceReference for a managed BIG-IP. An unmanaged BIG-IP has no deviceReference.
     link string The url to the deviceReference of the managed BIG-IP.
healthCheckFailureCount number Number of basic health check failures. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
lastGoodHealthCheckDateTime string Formatted Date/Time of last good health check. For example,”2017-03-02T06:15:57.846Z”. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
selfLink string Url to member assignment
state string The license’s state. For example, “INSTALL” or “LICENSED”.
uuid string An unique identifier for the member.

Permissions

Role Allow
device_manager Yes
License_Manager Yes

PATCH /mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members/{member_uuid}

To refresh a license, you can send a PATCH request to the specific member’s endpoint. The JSON in the request can contain the following parameters.

Request Parameters

Name Type Required Description
httpsPort number Yes if the port is other than 443. The HTTP port of the BIG-IP.
state string Yes “INSTALL”
password string Yes for an unmanaged BIG-IP. Password for the unmanaged BIG-IP.
username string Yes for an unmanaged BIG-IP. User name for the unmanaged BIG-IP.

Query Parameters

None

Response

The JSON in the PATCH’s response can contain the following parameters.

HTTP/1.1 200 OK

Name Type Description
auditRecordReference object Reference to audit record which tracks which BIG-IPs use which licenses.
     link string The url to the audit record for this assignment.
deviceAddress string The IP address of the BIG-IP.
deviceMachineId string The machine id of the BIG-IP.
deviceName string The name of the BIG-IP.
deviceReference object The deviceReference for a managed BIG-IP. An unmanaged BIG-IP has no deviceReference.
     link string The url to the deviceReference of the managed BIG-IP.
healthCheckFailureCount number Number of basic health check failures. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
lastGoodHealthCheckDateTime string Formatted Date/Time of last good health check. For example,”2017-03-02T06:15:57.846Z”. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
selfLink string Url to member assignment
state string The license’s state. For example, “INSTALL” or “LICENSED”.
uuid string An unique identifier for the member.

Permissions

Role Allow
device_manager Yes
License_Manager Yes

DELETE /mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members/{member_uuid}

To a revoke a license, you can send a DELETE request to the specific member’s endpoint. The JSON in the request can contain the following parameters.

Request Parameters

Name Type Required Description
httpsPort number Yes if the port is other than 443. The HTTP port of the BIG-IP.
password string Yes for an unmanaged BIG-IP. Password for the unmanaged BIG-IP.
username string Yes for an unmanaged BIG-IP. User name for the unmanaged BIG-IP.
uuid string Yes “1ecbb7fb-8f2a-421c-9450-d2d927181b47”

Query Parameters

None

Response

The JSON in the body of the response can include the following parameters.

HTTP/1.1 200 OK

Name Type Description
auditRecordReference object Reference to audit record which tracks which BIG-IPs use which licenses.
     link string The url to the audit record for this assignment.
deviceAddress string The IP address of the BIG-IP.
deviceMachineId string The machine id of the BIG-IP.
deviceName string The name of the BIG-IP.
deviceReference object The deviceReference for a managed BIG-IP. An unmanaged BIG-IP has no deviceReference.
     link string The url to the deviceReference of the managed BIG-IP.
healthCheckFailureCount number Number of basic health check failures. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
lastGoodHealthCheckDateTime string Formatted Date/Time of last good health check. For example,”2017-03-02T06:15:57.846Z”. Basic health checking occurs because BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to health checking appear only for unmanaged BIG-IP assignments.
selfLink string Url to member assignment
state string The license’s state. For example, “INSTALL” or “LICENSED”.
uuid string An unique identifier for the member.

Permissions

Role Allow
device_manager Yes
License_Manager Yes

Examples

GET to query assignments for a purchased pool license

To get a list of all the BIG-IPs which have been assigned as members of a purchased pool license, you can send a GET request to the members collection.

GET https://<BIG-IQ>/mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members

Response

The response to the GET can look similar to the following.

{
"items": [
    {
      "auditRecordReference": {
        "link": "https://localhost/mgmt/cm/device/licensing/audit/6f14789b-c12f-4018-b086-d0b4b638beec"
      },
      "deviceAddress": "10.145.198.181",
      "deviceMachineId": "77d9d4a4-9255-4f46-907e-b2bbd717e819",
      "deviceName": "dsc-ip3.pdsea.f5net.com",
      "deviceReference": {
        "link": "https://localhost/mgmt/shared/resolver/device-groups/cm-bigip-allBigIpDevices/devices/77d9d4a4-9255-4f46-907e-b2bbd717e819"
      },
      "generation": 4,
      "kind": "cm:device:licensing:pool:purchased-pool:licenses:licensepoolmemberstate",
      "lastUpdateMicros": 1488240514143425,
      "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/purchased-pool/licenses/56c1b433-8cfa-485e-b1fb-0d964f994f90/members/e228a87d-3b89-4f42-951e-557e839a4d59",
      "state": "LICENSED",
      "uuid": "e228a87d-3b89-4f42-951e-557e839a4d59"
    },
    ...
    ]
}

POST to license a managed BIG-IP

Assigning a license to a managed BIG-IP only requires providing a deviceReference value. All managed BIG-IPs exist in the cm-bigip-allBigIpDevices device group. You can query the device group to find a BIG-IP’s deviceReference.

POST https://<BIG-IQ>/mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members

The JSON in the POST request can look similar to the following example.

{
     "deviceReference": {
       "link": "https://localhost/mgmt/shared/resolver/device-groups/cm-bigip-allBigIpDevices/devices/77d9d4a4-9255-4f46-907e-b2bbd717e819"
     }
}

Response

The JSON in the body of the POST’s response can look similar to the following example.

HTTP/1.1 200 OK

{
     "uuid": "20a5cf91-f9a3-400f-9325-b4fc2a2c464b",
     "deviceName": "dsc-ip3.pdsea.f5net.com",
     "deviceReference": {
       "link": "https://localhost/mgmt/shared/resolver/device-groups/cm-bigip-allBigIpDevices/devices/77d9d4a4-9255-4f46-907e-b2bbd717e819"
     },
             "deviceMachineId": "77d9d4a4-9255-4f46-907e-b2bbd717e819",
             "deviceAddress": "10.145.198.181",
             "state": "INSTALL",
             "generation": 1,
             "lastUpdateMicros": 1488434123132956,
             "kind": "cm:device:licensing:pool:purchased-pool:licenses:licensepoolmemberstate",
             "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/purchased-pool/licenses/56c1b433-8cfa-485e-b1fb-0d964f994f90/members/20a5cf91-f9a3-400f-9325-b4fc2a2c464b"
}

After the POST to assign a license completes, you can send a GET request to the selfLink of the assignment to check status. Continue polling until the value of state transitions to be “LICENSED”. The response to the GET can look similar to the following.

POST to license an unmanaged BIG-IP

You must provide credentials when performing license operations on an unmanaged BIG-IP because BIG-IQ cannot use BIG-IP trust. BIG-IQ communicates with an unmanaged BIG-IP solely for licensing purposes. The following is an example of the assignment of a license to an unmanaged BIG-IP. Unmanaged BIG-IPs have no device reference.

POST https://<BIG-IQ>/mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members

The JSON in the POST’s request can look similar to the following example. You must provide the BIG-IP’s IP address, an username and password. If you’re licensing a BIG-IP configured with an ssl-port other than 443, you can supply the port using the httpsPort field.

{
     "deviceAddress": "10.145.193.61",
     "username": "admin",
     "password": "password",
     "httpsPort": 8443
}

Response

After the POST to assign a license completes, you can send a GET request to the selfLink of the assignment to check status. Continue polling until the value of state transitions to be “LICENSED”. The response can look similar to the following.

HTTP/1.1 200 OK

 {
      "uuid": "ab267880-c34a-418a-9e75-fb507f636120",
      "deviceName": "dsc-ip4.pdsea.f5net.com",
      "deviceMachineId": "fb4e7e62-f3ae-4a95-b1a4-e89d7ba6ead3",
      "deviceAddress": "10.145.193.61",
      "state": "INSTALL",
      "generation": 1,
      "lastUpdateMicros": 1488435208256456,
      "kind": "cm:device:licensing:pool:purchased-pool:licenses:licensepoolmemberstate",
      "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/purchased-pool/licenses/56c1b433-8cfa-485e-b1fb-0d964f994f90/members/ab267880-c34a-418a-9e75-fb507f636120"
 }

}

GET to query license assignment status

After assigning a license, you can send a GET request to the specific member’s endpoint to query the status of the assignment. Successful assignments will typically takes less than a minute to reach a state of “LICENSED”.

GET https://<BIG-IQ>/mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members/{member_uuid}

Response

When assigning a license to an unmanaged BIG-IP, BIG-IQ performs basic health checking periodically because the BIG-IQ isn’t otherwise managing the BIG-IP. Fields related to the health checking will appear only for unmanaged BIG-IP assignments as shown in the following example.

{
    "auditRecordReference": {
      "link": "https://localhost/mgmt/cm/device/licensing/audit/7252695f-1531-4c1a-8775-18a872f22fc8"
    },
    "deviceAddress": "10.145.193.61",
    "deviceMachineId": "fb4e7e62-f3ae-4a95-b1a4-e89d7ba6ead3",
    "deviceName": "dsc-ip4.pdsea.f5net.com",
    "generation": 5,
    "healthCheckFailureCount": 0,
    "kind": "cm:device:licensing:pool:purchased-pool:licenses:licensepoolmemberstate",
    "lastGoodHealthCheckDateTime": "2017-03-02T06:15:57.846Z",
    "lastUpdateMicros": 1488435357850120,
    "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/purchased-pool/licenses/56c1b433-8cfa-485e-b1fb-0d964f994f90/members/ab267880-c34a-418a-9e75-fb507f636120",
    "state": "LICENSED",
    "uuid": "ab267880-c34a-418a-9e75-fb507f636120"
}

PATCH to refresh the license on a BIG-IP

If a license is reactivated using BIG-IQ, the updated license can be pushed to a BIG-IP that is using the license by sending a PATCH request.

PATCH https://<BIG-IQ>/mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members/{member_uuid}

The JSON in the PATCH request can look similar to the following example. When refreshing the license on an unmanaged BIG-IP, the PATCH body must also include the username and password for unmanaged BIG-IP. If the port is other than 443, the port can be included as the value of httpsPort.

{
     "state": "INSTALL"
}

Response

The JSON in the response to the PATCH can look similar to the following example.

HTTP/1.1 200 OK

{
     "uuid": "ec234bf5-80bb-41dc-96bc-4d5e15f6dcf5",
     "deviceName": "bigip11-41.f5net.com",
     "deviceReference": {
       "link": "https://localhost/mgmt/shared/resolver/device-groups/cm-bigip-allBigIpDevices/devices/7141a063-7cf8-423f-9829-9d40599fa3e0"
     },
     "deviceMachineId": "7141a063-7cf8-423f-9829-9d40599fa3e0",
     "deviceAddress": "10.145.197.41",
     "state": "INSTALL",
     "auditRecordReference": {
       "link": "https://localhost/mgmt/cm/device/licensing/audit/ef7ce604-1c61-498e-a6df-32e13780ea14"
     },
     "generation": 8,
     "lastUpdateMicros": 1488436813066133,
     "kind": "cm:device:licensing:pool:purchased-pool:licenses:licensepoolmemberstate",
     "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/purchased-pool/licenses/56c1b433-8cfa-485e-b1fb-0d964f994f90/members/ec234bf5-80bb-41dc-96bc-4d5e15f6dcf5"
}

Similar to the initial license assignment, you can poll the refresh assignment after the PATCH completes to check that the state to transition to “LICENSED”.

DELETE to revoke a license on a BIG-IP

To revoke a license from a BIG-IP and reclaim a seat, send a DELETE to the specific member’s endpoint. For managed BIG-IPs, no request body is needed. For unmanaged BIG-IPs, the request body must include administrator credentials and the member_uuid for the assignment as shown in the example. The port can optionally be included as httpsPort. The default value of is 443.

DELETE https://<BIG-IQ>/mgmt/cm/device/licensing/pool/purchased-pool/licenses/{uuid}/members/{member_uuid}

The JSON in the PATCH request can look similar to the following example for an unmanaged BIG-IP.

{
     "uuid": "1ecbb7fb-8f2a-421c-9450-d2d927181b47",
     "username": "admin",
     "password": "password",
     "httpsPort": 8443
}

Response

The JSON in the body of the response is for the revoked assignment.

HTTP/1.1 200 OK