BIG-IQ API Reference Guide



Similar documents
BIG-IQ Centralized Management and Citrix XenServer : Setup. Version 4.6

BIG-IP Virtual Edition Setup Guide for Amazon EC2. Version 11.3

Getting Started with BIG-IP

BIG-IP Virtual Edition Setup Guide for Linux KVM. Version 11.4

BIG-IQ Cloud and Linux KVM: Setup. Version 1.0

BIG-IP Virtual Edition Setup Guide for Microsoft Hyper-V. Version 11.5

Enterprise Manager : Monitoring Network Health and Activity. Version 3.1

BIG-IP Virtual Edition Setup Guide for Microsoft Hyper-V. Version

BIG-IP Global Traffic Manager : Concepts. Version 11.3

BIG-IP Virtual Edition Setup Guide for Linux Community Xen. Version 11.6

BIG-IP Virtual Edition Setup Guide for Microsoft Hyper-V. Version 11.3

BIG-IP Systems: DoS Protection and Protocol Firewall Implementations. Version 12.0

BIG-IP Virtual Edition Setup Guide for VMware ESXi. Version 11.5

BIG-IP Access Policy Manager : Authentication and Single Sign-On. Version 12.0

DEPLOYMENT GUIDE Version 2.1. Deploying F5 with Microsoft SharePoint 2010

DEPLOYMENT GUIDE Version 1.2. Deploying the BIG-IP system v10 with Microsoft Exchange Outlook Web Access 2007

BIG-IP Access Policy Manager : Third-Party Integration Implementations. Version 12.0

BIG-IP Virtual Edition Setup Guide for VMware ESX or ESXi. Version

BIG-IP Network Firewall: Policies and Implementations. Version 11.5

BIG-IP TMOS : Tunneling and IPsec. Version 12.0

DEPLOYMENT GUIDE Version 1.2. Deploying the BIG-IP System v10 with Microsoft IIS 7.0 and 7.5

Deploying F5 to Replace Microsoft TMG or ISA Server

Configuring a single-tenant BIG-IP Virtual Edition in the Cloud

Deploying F5 with Microsoft Active Directory Federation Services

Deploying the BIG-IP System v10 with VMware Virtual Desktop Infrastructure (VDI)

BIG-IP Global Traffic Manager : Topology Load Balancing. Version 11.0

DEPLOYMENT GUIDE. Deploying F5 for High Availability and Scalability of Microsoft Dynamics 4.0

HAWAII TECH TALK SDN. Paul Deakin Field Systems Engineer

Deploying the BIG-IP System v10 with Oracle Application Server 10g R2

Deploying the BIG-IP System v10 with SAP NetWeaver and Enterprise SOA: ERP Central Component (ECC)

DEPLOYMENT GUIDE Version 1.2. Deploying F5 with Oracle E-Business Suite 12

Cisco ACI and F5 LTM Integration for accelerated application deployments. Dennis de Leest Sr. Systems Engineer F5

Presented by Philippe Bogaerts Senior Field Systems Engineer Securing application delivery in the cloud

DEPLOYMENT GUIDE Version 1.1. Deploying F5 with Oracle Application Server 10g

Deploying F5 for Microsoft Office Web Apps Server 2013

Deploying the BIG-IP System with Microsoft Lync Server 2010 and 2013 for Site Resiliency

DEPLOYMENT GUIDE Version 1.0. Deploying the BIG-IP LTM System with VMware View

DEPLOYMENT GUIDE Version 1.2. Deploying the BIG-IP System v9.x with Microsoft IIS 7.0 and 7.5

DEPLOYMENT GUIDE Version 1.2. Deploying F5 with Microsoft Exchange Server 2007

AG MacOS Standalone Array Client Administration Guide

Deploying the BIG-IP System with Microsoft IIS

BIG-IQ Systems: Cloud Management. Version 4.1.0

DEPLOYMENT GUIDE Version 1.1. DNS Traffic Management using the BIG-IP Local Traffic Manager

DEPLOYMENT GUIDE Version 1.1. Deploying F5 with IBM WebSphere 7

Deploying the BIG-IP System v11 with Microsoft SharePoint 2010 and 2013

DEPLOYMENT GUIDE DEPLOYING F5 WITH VMWARE VIRTUAL DESKTOP INFRASTRUCTURE (VDI)

Application centric Datacenter Management. Ralf Brünig, F5 Networks GmbH Field Systems Engineer March 2014

DEPLOYMENT GUIDE DEPLOYING F5 WITH SAP NETWEAVER AND ENTERPRISE SOA

Deploying F5 with Microsoft Remote Desktop Session Host Servers

Web Application Firewall

DEPLOYMENT GUIDE. Deploying the BIG-IP LTM v9.x with Microsoft Windows Server 2008 Terminal Services

BIG-IP Access Policy Manager : Authentication and Single Sign-On. Version 11.5

Deploying the BIG-IP LTM with. Citrix XenApp. Deployment Guide Version 1.2. What s inside: 2 Prerequisites and configuration notes

F5 PARTNERSHIP SOLUTION GUIDE. F5 and VMware. Virtualization solutions to tighten security, optimize performance and availability, and unify access

ARX Add-on: ARX1500+ License Upgrade (Limited to Enterprise) ARX Add-on: ARX1500+ Second Protocol License

Deploying the BIG-IP System with Oracle WebLogic Server

vrealize Automation Load Balancing

Deploying F5 with IBM Tivoli Maximo Asset Management

DEPLOYMENT GUIDE DEPLOYING THE BIG-IP SYSTEM WITH MICROSOFT INTERNET INFORMATION SERVICES (IIS) 7.0

CONFIGURING BIG-IP LOCAL TRAFFIC MANAGER 3-Day

Deploying the BIG-IP System with Microsoft SharePoint

DEPLOYMENT GUIDE DEPLOYING THE BIG-IP LTM SYSTEM WITH MICROSOFT WINDOWS SERVER 2008 TERMINAL SERVICES

BIG IP Global Traffic Manager (GTM) v.11

F5 Configuring BIG-IP Local Traffic Manager (LTM) - V11. Description

BIG-IP Access Policy Manager : Edge Client and Application Configuration. Version 11.4

Enterprise Manager : Monitoring Network Health and Activity. Version 3.1.1

Deploying the BIG-IP System v11 with LDAP Servers

DEPLOYMENT GUIDE Version 1.1. Deploying the BIG-IP LTM v10 with Citrix Presentation Server 4.5

DEPLOYMENT GUIDE DEPLOYING F5 WITH MICROSOFT WINDOWS SERVER 2008

Deploying F5 with Microsoft Dynamics CRM 2011 and 2013

Accelerating SaaS Applications with F5 AAM and SSL Forward Proxy

5 Key Reasons to Migrate from Cisco ACE to F5 BIG-IP

FirePass SSLVPN Client Software Deployment Guide For Windows Mobile 5 and 6 Devices MAN

Deploying the BIG-IP System v11 with Microsoft Exchange 2010 and 2013 Client Access Servers

BIG-IP Global Traffic Manager : Implementations. Version 11.3

F5 BIG DDoS Umbrella. Configuration Guide

Microsoft Exchange Server

Deploying F5 with Microsoft Remote Desktop Session Host Servers

DEPLOYMENT GUIDE Version 1.0. Deploying the BIG-IP Edge Gateway for Layered Security and Acceleration Services

BIG-IP Local Traffic Manager : Implementations. Version 11.4

BIG-IP Access Policy Manager : Authentication and Single Sign-On. Version 11.6

Installing and Configuring vcloud Connector

Configuration Guide. BES12 Cloud

Enabling Application Defined Networking with F5 Synthesis and Cisco Application Centric Infrastructure

Implementing PCoIP Proxy as a Security Server/Access Point Alternative

Deploying F5 with Microsoft Dynamics CRM 2011 and 2013

MANAGE SECURE ACCESS TO APPLICATIONS BASED ON USER IDENTITY. EMEA Webinar July 2013

Deploying the BIG-IP System v11 with Apache HTTP Server

Deploying the BIG-IP LTM with Microsoft Skype for Business

F5 White Paper. The F5 Powered Cloud

Deployment Guide. Deploying F5 BIG-IP Global Traffic Manager on VMware vcloud Hybrid Service

DEPLOYMENT GUIDE Version 1.3. Deploying F5 with VMware ESX Server

Deploying F5 with Microsoft Remote Desktop Gateway Servers

Transcription:

BIG-IQ API Reference Guide version 4.3.0 PUB-0281-03

Legal Notices Product Version This manual applies to version 4.3.0 of BIG-IQ system. Publication Date This document was published on February 25, 2014. Publication Number PUB-0281-03 Copyright F5 Networks, Inc. (F5) believes the information it furnishes to be accurate and reliable. However, F5 assumes no responsibility for the use of this information, nor any infringement of patents or other rights of third parties which may result from its use. No license is granted by implication or otherwise under any patent, copyright, or other intellectual property right of F5 except as specifically described by applicable user licenses. F5 reserves the right to change specifications at any time without notice. Trademarks AAM, Access Policy Manager, Advanced Client Authentication, Advanced Firewall Manager, Advanced Routing, AFM, Application Acceleration Manager, Application Security Manager, APM, ARX, AskF5, ASM, BIG-IP, BIGIQ, Cloud Extender, CloudFucious, Cloud Manager, Clustered Multiprocessing, CMP, COHESION, Data Manager, DevCentral, DevCentral [DESIGN DNS Express, DSC, DSI, Edge Client, Edge Gateway, Edge Portal, ELEVATE, EM, Enterprise Manager, ENGAGE, F5, F5 [DESIGN F5 Certified [DESIGN F5 Networks, F5 SalesXchange [DESIGN F5 Synthesis, f5 Synthesis, F5 Synthesis [DESIGN F5 TechXchange [DESIGN Fast Application Proxy, Fast Cache, FirePass, Global Traffic Manager, GTM, GUARDIAN, iapps, IBR, Intelligent Browser Referencing, Intelligent Compression, IPv6 Gateway, icontrol, ihealth, iquery, irules, irules OnDemand, isession, L7 Rate Shaping, LC, Link Controller, Local Traffic Manager, LTM, LineRate, LineRate Systems [DESIGN LROS, LTM, Message Security Manager, MobileSafe, MSM, OneConnect, Packet Velocity, PEM, Policy Enforcement Manager, Protocol Security Manager, PSM, Real Traffic Policy Builder, SalesXchange, ScaleN, Signalling Delivery Controller, SDC, SSL Acceleration, Software Designed Applications Services, SDAC (except in Japan), StrongBox, SuperVIP, SYN Check, TCP Express, TDR, TechXchange, TMOS, TotALL, Traffic Management Operating System, Traffix Systems, Traffix Systems [DESIGN Transparent Data Reduction, UNITY, VAULT, vcmp, VE F5 [DESIGN Versafe, Versafe [DESIGN VIPRION, Virtual Clustered Multiprocessing, WebSafe, and ZoneRunner, are trademarks or service marks of F5 Networks, Inc., in the U.S. and other countries, and may not be used without F5's express written consent. All other product and company names herein may be trademarks of their respective owners. Patents This product may be protected by one or more patents indicated at: http://www.f5.com/about/guidelines-policies/patents Export Regulation Notice This product may include cryptographic software. Under the Export Administration Act, the United States government may consider it a criminal offense to export this product from the United States. RF Interference Warning This is a Class A product. In a domestic environment this product may cause radio interference, in which case the user may be required to take adequate measures. BIG-IQ API Reference Guide i

FCC Compliance This equipment has been tested and found to comply with the limits for a Class A digital device pursuant to Part 15 of FCC rules. These limits are designed to provide reasonable protection against harmful interference when the equipment is operated in a commercial environment. This unit generates, uses, and can radiate radio frequency energy and, if not installed and used in accordance with the instruction manual, may cause harmful interference to radio communications. Operation of this equipment in a residential area is likely to cause harmful interference, in which case the user, at his own expense, will be required to take whatever measures may be required to correct the interference. Any modifications to this device, unless expressly approved by the manufacturer, can void the user's authority to operate this equipment under part 15 of the FCC rules. Canadian Regulatory Compliance This Class A digital apparatus complies with Canadian ICES-003. Standards Compliance This product conforms to the IEC, European Union, ANSI/UL and Canadian CSA standards applicable to Information Technology products at the time of manufacture. ii

Table of Contents

Table of Contents 1 F5 BIG-IQ REST APIs Introduction to cloud service APIs...1-1 BIG-IQ Cloud overview...1-2 BIG-IQ Cloud API conventions...1-3 Ports required for F5 Cloud service REST API...1-4 Uncharacteristic return codes...1-5 Bad Gateway...1-5 Service Temporarily Unavailable...1-5 2 Central Management APIs Central management APIs...2-1 Templates iapp collection worker APIs...2-1 Get templates...2-1 Update template item...2-3 Create new template item...2-5 Delete template item...2-7 Provider iapp template APIs...2-8 What is an iapp template?...2-8 What is a provider iapp template?...2-8 How does a provider make an iapp template?...2-8 The structure of a provider template...2-9 Tenant templates... 2-11 Variables... 2-11 Properties... 2-12 Get provider iapp templates... 2-13 Create provider iapp template... 2-15 Get customized provider template parameters... 2-17 Delete provider iapp template... 2-19 Sample provider template APIs... 2-20 Get example provider template for a corresponding iapp template... 2-20 Get example provider template for a corresponding iapp template... 2-21 Find all provider template examples... 2-21 Tenant iapp templates APIs... 2-23 Variables... 2-23 Properties... 2-24 Get all tenant iapp templates... 2-25 Get tenant iapp template configuration... 2-28 Tenant APIs... 2-30 Get all tenants... 2-31 Get one tenant information... 2-32 Create tenant... 2-32 Update tenant information... 2-34 Delete one tenant...2-34 Tenant services APIs... 2-35 Properties... 2-35 Get service instances... 2-36 Get service instance configuration... 2-38 Delete service instances... 2-40 Create service instance... 2-40 Update service instance... 2-43 Get example-stats... 2-44 Tenant service health APIs... 2-46 xvi

Table of Contents Get service health... 2-46 Tenant virtual servers APIs... 2-49 Get all virtual servers... 2-49 Get one virtual server... 2-50 Get example-stats... 2-50 Tenant service server tiers APIs... 2-53 Get server tiers... 2-53 Get servers in tier... 2-54 Tenant node APIs... 2-56 Create node... 2-56 Query for all tenant nodes... 2-57 Query example-stats for tenant nodes... 2-58 Tenant cloud connectors APIs... 2-60 Get all tenant cloud connectors... 2-60 Get tenant connector... 2-61 Cloud connector APIs... 2-63 Types of cloud connectors... 2-63 Creating a cloud connector... 2-63 Deploying an application in the cloud... 2-64 Cloud connector description... 2-64 Explanation of fields... 2-65 Parameters... 2-65 Parameters for specific cloud types... 2-66 Discovering a cloud connector's parameters... 2-66 Create a cloud connector... 2-68 Change a cloud connector... 2-68 Get a cloud connector... 2-70 Get health of a cloud connector... 2-70 Get all cloud connectors of a given type... 2-71 Get all cloud connectors of all types (brief)... 2-72 Get all cloud connectors of all types (detailed)... 2-72 Delete a cloud connector... 2-74 Local cloud connector APIs... 2-75 Parameters... 2-75 Explanation of fields... 2-76 Parameters... 2-76 Parameters for local clouds... 2-77 Create a local cloud connector... 2-77 Change a local cloud connector... 2-78 Get a cloud connector... 2-79 Get all local cloud connectors... 2-79 Get health of a local cloud connector... 2-80 Delete a local cloud connector... 2-81 EC2 cloud connectors APIs... 2-82 EC2 Connector Topology... 2-83 Parameters for EC2 cloud connectors... 2-84 Create an EC2 cloud connector... 2-85 Change an EC2 cloud connector... 2-87 Get an EC2 connector... 2-90 Get health of an EC2 cloud connector... 2-92 Get all EC2 cloud connectors... 2-92 Delete an EC2 cloud connector... 2-94 OpenStack cloud connector APIs... 2-97 Parameters for OpenStack cloud connectors... 2-98 Create an OpenStack cloud connector... 2-99 Change an OpenStack cloud connector... 2-99 BIG-IQ API Reference Guide xvii

Table of Contents Get an OpenStack cloud connector... 2-100 Get health of an OpenStack cloud connector... 2-101 Get all OpenStack cloud connector... 2-103 Delete an OpenStack cloud connector... 2-104 VMware cloud connector APIs... 2-105 Parameters for VMware cloud connectors... 2-106 Create a VMware cloud connector... 2-108 Change a VMware cloud connector... 2-108 Get a VMware cloud connector... 2-110 Get health of a VMware cloud connector... 2-111 Get all VMware cloud connector... 2-111 Delete a VMware cloud connector... 2-112 Cloud managed devices APIs... 2-114 Get managed devices... 2-115 Add a managed device... 2-118 Recover a device in the POST_FAILED state... 2-118 Delete a managed device... 2-119 Cloud licensing APIs... 2-121 Get license status... 2-121 EC2 nodes APIs... 2-123 Get EC2 node stats... 2-123 Create node in EC2... 2-125 Query for all EC2 nodes... 2-129 Delete node in EC2... 2-131 Modify node secondary and virtual addresses in EC2... 2-133 OpenStack nodes APIs... 2-137 Create a new node... 2-138 Get node... 2-138 Get all nodes... 2-140 Get OpenStack Node Stats... 2-142 Delete Node... 2-143 3 Shared APIs Shared APIs overview...3-1 Group resolver view worker APIs...3-2 List all the worker URIs under /shared...3-2 List all the worker URIs under /tm...3-5 List all the worker URIs under /cm...3-7 File transfer worker APIs...3-9 Get file contents using downloads worker...3-9 Post file contents using downloads worker...3-9 Cancel existing upload... 3-10 In statistics helper worker API... 3-11 Get worker statistics... 3-12 Update worker statistics... 3-14 Delete worker statistics... 3-14 REST worker availability APIs... 3-15 Get worker availability... 3-15 REST worker subscriber s list APIs... 3-17 Get worker availability... 3-17 Rest diagnostics worker APIs...3-18 Get diagnostics... 3-18 Get device statistics diagnostics... 3-19 Set the tracing and logging levels... 3-21 xviii

Table of Contents Set the URIs that will be traced: white list... 3-21 Shutdown or restart REST server... 3-22 Multiple user coordinator APIs... 3-25 Get all user and resource associations... 3-25 Create a resource association... 3-27 Remove a resource association... 3-29 Device resolver APIs... 3-30 Get device resolver groups... 3-30 Get a single group... 3-31 Get devices within a group... 3-32 Get a single device... 3-34 Get a single device s health statistics... 3-35 Add a new group...3-37 Add a new device... 3-37 Rediscover a POST_FAILED device... 3-39 Delete a device... 3-39 Add an existing device to a group... 3-41 Modifying device properties... 3-42 Group resolver APIs... 3-43 Get resolver groups... 3-43 Query resolver groups... 3-44 Create resolver groups... 3-44 Delete resolver group... 3-45 Device information API... 3-46 Get device information... 3-46 statistics information and metadata API... 3-49 Create a statistics information item... 3-50 Retrieve all statistics information items... 3-51 Change a portion of a statistics information item... 3-54 Replace a statistics information item... 3-54 Delete a statistics information item... 3-56 User authentication API... 3-56 Verify authentication...3-56 Authentication token worker API... 3-58 Create an authentication token... 3-59 Get all auth-tokens... 3-59 Get auth-tokens based on UUID... 3-61 Delete all auth-tokens... 3-61 Delete auth-tokens based on UUID... 3-63 Delete auth-tokens based on state (POJO)... 3-63 Licensing APIs... 3-65 Get license... 3-65 Install license... 3-68 Revoke license... 3-71 User authorization APIs... 3-72 Get all users... 3-72 Get single user... 3-74 Create user... 3-75 Update user... 3-75 Delete user... 3-76 Authorization roles APIs... 3-77 Get all roles... 3-77 Get role... 3-79 Create new role... 3-81 Update a role... 3-83 Delete role... 3-84 BIG-IQ API Reference Guide xix

Table of Contents Authz roles resource groups APIs... 3-85 Get all resource groups... 3-85 Create a role resource group... 3-87 Modify a role resource group... 3-88 Remove a group of resources... 3-90 Licensing activation APIs... 3-90 Automatic activation... 3-91 Post an automatic base key and add-on keys... 3-91 Check for automatic activation status and get EULA... 3-92 Post EULA text... 3-94 Check for automatic activation status and get license... 3-94 Install license... 3-96 Manual activation method... 3-96 Post manual base key and add-on keys... 3-97 Check for status and get dossier... 3-97 Install license... 3-99 Registration key management APIs... 3-99 Query registration keys... 3-99 Create a registration key record... 3-101 Add User-Accepted EULA text... 3-101 Assign a key to a device... 3-103 Delete a registration key record...3-104 xx

1 F5 BIG-IQ REST APIs Introduction to BIG-IQ APIs BIG-IQ Cloud overview BIG-IQ Cloud API conventions Ports required for F5 Cloud service REST API Uncharacteristic return codes

F5 BIG-IQ REST APIs Introduction to BIG-IQ APIs This guide provides the basic structure of BIG-IQ APIs. The APIs are organized into two groups, each in a separate chapter. The first group is referred to as Shared APIs and the second group is referred to as Central Management APIs. For each API, we define the basic function and then outline the expected structure for the Request, and. To use the APIs defined in this guide, install the virtual machine that we have created to accompany it. Instructions for performing this installation are in the Virtual Edition Setup Guide specific to your hypervisor. BIG-IQ API Reference Guide 1-1

Chapter 1 BIG-IQ Cloud overview The Cloud Service is part of what F5 refers to as its North-bound interface (NBI). The NBI allows third party frameworks and service providers to interact with our cloud deployment and orchestration framework. This integration enables providers to offer their tenants a spectrum of web services that are fully configurable, provide customizable service levels, and provider initiated service deployment, along with monitoring and maintenance features. Cloud/Service Providers are organizations who offer or sell cloud services provided by F5 equipment and products. Tenants are customers of these organizations who require specific services. Tenants can use the Tenant Service to configure and monitor their specific services. It is this Tenant Service that Cloud/Service Providers can use to manage all their tenants as well as the offerings they make available to them. Calls for these APIs are made using standard REST semantics and HTTP verbs. 1-2

F5 BIG-IQ REST APIs BIG-IQ Cloud API conventions The top-level namespace for BIG-IQ APIs generally follows these conventions: [endpoint]/[sub-endpoint]/[module] [endpoint]/shared/[common functionality] The endpoint is /mgmt All BIG-IP traffic management modules are located under the sub-endpoint of /tm (which corresponds to traffic management). All BIG-IQ modules are located under the sub-endpoint /cm (which corresponds to central management). APIs and workers that may be common to both tm and cm are located under the sub-endpoint /shared. Sub-endpoint /forwarder /mgmt/shared/resolver/group s /mgmt/shared/authz/users /mgmt/shared/diagnostics /mgmt/shared/authz/roles /mgmt/shared/echo /mgmt/cm/firewall /mgmt/cm/cloud /mgmt/tm/ltm /mgmt/tm/gtm /mgmt/tm/asm /mgmt/tm/... Public to internal entry point, authz evaluation, maps to https://hostname:443/mgmt Organizing collection, directory of workers authz Diagnostics worker, tracing support, process and node resource use API RBAC Validation/canary worker big-iq security firewall mgr namespace big-iq cloud mgr namespace tmapi ltm tmapi gtm tmapi asm tmapi or new control plane workers for other modules/functionality An example of a public URI would be: https://localhost:443/mgmt/cm/firewall/rule-lists BIG-IQ API Reference Guide 1-3

Chapter 1 Ports required for F5 Cloud service REST API The F5 Cloud Service Manager REST API is exposed through HTTPS (port 443). 1-4

F5 BIG-IQ REST APIs Uncharacteristic return codes Bad Gateway There are certain rare circumstances in which a return code of 502 Bad Gateway can result when you submit an API call. If this occurs, wait a minute and resubmit the API call. Service Temporarily Unavailable There are certain rare circumstances in which a return code of 503 Service Temporarily Unavailable can result when you submit an API call. If this occurs, wait a minute and resubmit the API call. BIG-IQ API Reference Guide 1-5

Chapter 1 1-6

2 Central Management APIs Central management APIs Templates iapp collection worker APIs Provider iapp template APIs Sample provider template APIs Tenant iapp templates APIs Tenant APIs Tenant services APIs Tenant service health APIs Tenant virtual servers APIs Tenant service server tiers APIs Tenant node APIs Tenant cloud connectors APIs Cloud connector APIs Local cloud connector APIs EC2 cloud connectors APIs OpenStack cloud connector APIs VMware cloud connector APIs Cloud managed devices APIs Cloud licensing APIs EC2 nodes APIs OpenStack nodes APIs

Central Management APIs Central management APIs The APIs referred to as central management APIs are documented in this chapter. Templates iapp collection worker APIs These APIs provide an aggregation point for all iapp templates that are available from the devices managed by the BIG-IQ Cloud. Child URIs are supported based on the iapp template name. Get templates Gets the set of currently known iapp templates supported by all managed devices. /mgmt/cm/cloud/templates/iapp GET N/A None BIG-IQ API Reference Guide 2-1

Chapter 2 NOTE: Example is truncated for brevity. NOTE: Example below is truncated for brevity. "items": [ "name": "f5.bea_weblogic", "devicereferences": [ "link": "https://10.22.22.2:443" "template": "vars": [ "name": "optimizations policy", "isrequired": false, "defaultvalue": "/Common/Generic Policy - Enhanced" "tables": [ "name": "basic snatpool_members", "isrequired": false, "columns": [ "name": "addr", "isrequired": true ] "name": "optimizations hosts", "isrequired": false, "columns": [ "name": "host", "isrequired": true ] ] "generation": 2, "lastupdatemicros": 1361401599050490, "kind": "cm:cloud:templates:iapp:templatesiappitemstate", "selflink": "https://localhost/mgmt/cm/cloud/templates/iapp/f5.bea_weblogic" "generation": 27, "kind": "cm:cloud:templates:iapp:templatesiappcollectionworkerstate", "lastupdatemicros": 1361401599622103, "selflink": "https://localhost/mgmt/cm/cloud/templates/iapp" 2-2

Central Management APIs Update template item Replaces the template item in the collection /mgmt/cm/cloud/templates/iapp/iapp name PUT N/A BIG-IQ API Reference Guide 2-3

Chapter 2 "name": "f5.bea_weblogic", "devicereferences": [ "link": "https://10.22.22.2:443" "template": "vars": [ "name": "optimizations policy", "isrequired": false, "defaultvalue": "/Common/Generic Policy - Enhanced" "tables": [ "name": "basic snatpool_members", "isrequired": false, "columns": [ "name": "addr", "isrequired": true ] "name": "optimizations hosts", "isrequired": false, "columns": [ "name": "host", "isrequired": true ] ] "generation": 2, "lastupdatemicros": 1361401599050490, "kind": "cm:cloud:templates:iapp:templatesiappitemstate", "selflink": "https://localhost/mgmt/cm/cloud/templates/iapp/f5.bea_weblogic" HTTP/1.1 200 OK 2-4

Central Management APIs Create new template item Creates a new template item. /mgmt/cm/cloud/templates/iapp POST N/A BIG-IQ API Reference Guide 2-5

Chapter 2 "name": "f5.bea_weblogic", "devicereferences": [ "link": "https://10.22.22.2:443" "template": "vars": [ "name": "optimizations policy", "isrequired": false, "defaultvalue": "/Common/Generic Policy - Enhanced" "tables": [ "name": "basic snatpool_members", "isrequired": false, "columns": [ "name": "addr", "isrequired": true ] "name": "optimizations hosts", "isrequired": false, "columns": [ "name": "host", "isrequired": true ] ] HTTP/1.1 200 OK 2-6

Central Management APIs Delete template item Deletes an item from a template. Note that this should only be done by the system. /mgmt/cm/cloud/templates/iapp name DELETE N/A "items": [ "name": "f5.bea_weblogic", "devicereferences": [ "link": "https://10.22.22.2:443" "template": null, "generation": 2, "lastupdatemicros": 1360700356339674, "kind": "cm:cloud:templates:iapp2:templatesiappitemstate", "selflink": "https://localhost/mgmt/cm/cloud/templates/iapp2/f5.bea_weblogic" ] HTTP/1.1 200 OK BIG-IQ API Reference Guide 2-7

Chapter 2 Provider iapp template APIs What is an iapp template? What is a provider iapp template? Providers who want to make services available to their tenants need to construct provider iapp templates. The provider iapp templates are populated with custom configuration settings that, when applied to a specific BIG-IP iapp template, define a baseline level of performance to which a service must conform when deployed. Having these baseline levels of performance allows the provider to advertise different service levels to their tenants. An iapp is a BIG-IP system configuration template that makes it easy to configure a BIG-IP system for a specific application. In the BIG-IP user interface, an iapp appears as a set of questions that users need to answer. Internally, an iapp can be considered as a set of variables with values: answering a question corresponds to providing a value for a variable. A provider iapp template (often referred to as just a provider template) is an iapp template in which some or all of the iapp template variables have been filled in by the provider. When a tenant wants to deploy an application, he specifies only the parameters that the provider has not set. A provider iapp template simplifies the process of deploying an application for a tenant, and it also allows the provider to clearly specify different ways of deploying an application. Often this allows different levels of service. For example, a provider might create a provider template for a web (HTTP) server that configures the use of the BIG-IP system SSL termination so that tenants do not need to understand how it works but simply benefit from it. Or a provider could create multiple provider templates for different levels of service (that is, templates that permit different numbers of simultaneous connections). How does a provider make an iapp template? There are two ways to make a provider template. 2-8

Central Management APIs Figure 2.1 Provider template call flows The structure of a provider template Conceptually, making a provider template is straightforward: take an iapp template, set values for variables that tenants cannot edit, and you have a provider template. In practice it can be more complicated, because doing this correctly requires a deeper understanding of the underlying iapp template so that you can make the template correctly. There is a REST API (documented separately in the Provider Template Example API) that allows you to start with a working provider template and make any necessary changes to it. This is the recommended path for creating provider templates A provider template specifies several things The iapp template that it is based on. Every provider template is based on exactly one BIG-IP iapp template. A set of scalar variables. That is, variables with a single value. For example, the virtual IP is a scalar variable. A set of tables. For example, the set of pool members is a table. Each row in the table is a single pool member, and (depending on the underlying iapp template) describes things such as the IP address and port of the pool member. BIG-IQ API Reference Guide 2-9

Chapter 2 A (shortened) example of a provider template looks like this: "templatename": "HTTP-Bronze", "parentreference": "link": "https://localhost/mgmt/cm/cloud/templates/iapp/f5.http" "overrides": "vars": [ "name": "basic addr", "isrequired": true, "defaultvalue": "", "providertype": "NODE", "servertier": "Servers" "name": "basic port", "isrequired": true, "provider": "80", "providertype": "PORT", "servertier": "Servers" "tables": [ "name": "server_pools servers", "columns": [ "name": "addr", "isrequired": true, "defaultvalue": "", "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" "servertier": "Servers" ] "properties": [ "id": "cloudconnectorreference", "displayname": "Cloud Connector", "isrequired": true "id": "deviceimagereference", "displayname": "Device Image", "isrequired": false, "description": "When connector supports automatic deployment of Devices, Provider will use this property to indicate which Device image is appropriate to use for deployment of this iapp template. It is expected that reference will point to a Node TEMPLATE.", "provider": "https://localhost/mgmt/cm/connectors/ec2/guid1234-guid-1234-guid-1234guid1234/nodes/guid1234-guid-1234 -GUID-1234GUID1234" "tenanttemplatereference": "link": "https://localhost/mgmt/cm/cloud/tenant/templates/iapp/http-bronze" "isf5example": false, "generation": 1, "lastupdatemicros": 1365655623070047, "kind": "cm:cloud:provider:templates:iapp:provideriapptemplateworkerstate", "selflink": "https://localhost/mgmt/cm/cloud/provider/templates/iapp/http-bronze" An actual provider template would have many more variables and tables: this example is shortened for clarity. 2-10

Central Management APIs Tenant templates When you create a provider template, a tenant template is created for it. (That is, you do not need to create it.) A tenant template is a provider template that has had all of the provider variables removed. Tenant templates can be used to understand which parameters a tenant can specify when creating a tenant service. Variables "name": "variablename". "displayname": "name", "description": "description", "isrequired": booleanvalue, "defaultvalue": "somevalue", "provider": "somevalue", "providertype": "TYPE" # see below "servertier": "name" Explanation of variables A variable in the provider template has the following form: Field name displayname description isrequired defaultvalue provider providertype servertier The name of the variable. White space is not allowed. A human-readable version of the variable name (optional) A longer description of the purpose of the variable (optional) If true, then the value must be supplied when creating an iapp service, unless the provider specified a fixed value using the provider field or a default value. The default value that will be used for the field when a user creates an iapp service based on this template. Also a default value, but indicates that a tenant may not edit this value. If the value is NODE, then the variable or column is an IP address. If the value is PORT, then the variable or column is a port number. If the value is var, it indicates the virtual IP address for the given server tier. If the value is a table, it indicates a server pool for the given server tier. If the value is SSL_CERT, then variable is an SSL certificate path. If the value is SSL_KEY, then variable is an SSL certificate private key path. If specified for a variable, then the variable represents a virtual server interface. At least one virtual server interface must be specified or it is an error. If specified for a table, then the table represents a set of pool members. BIG-IQ API Reference Guide 2-11

Chapter 2 Properties The defaultvalue and provider are mutually-exclusive fields: only one can be specified. A variable is referred to as "tenant-editable" if the provider field is not set. A property in the provider template has the following form: "id": "name", "displayname": "Descriptive Name", "description": "Descriptive text about the property", "isrequired": booleanvalue, "value": "somevalue", "provider": "somevalue", Explanation of properties Field id The name of the property. White space is not allowed. displayname description A user-friendly name for the property. White space is allowed. Some longer text describing the purpose of the property. isrequired A boolean, true or false value provider If the tenant does not specify a value, this value will be used. Also a default value, but indicates that a tenant can not edit this value. The value and provider are mutually-exclusive fields: only one can be specified. You must specify a cloud property when creating a provider template, but it is okay to have no default value--this will be a tenant-editable property. 2-12

Central Management APIs Get provider iapp templates Gets a list of the created provider iapp templates. /mgmt/cm/cloud/provider/templates/iapp GET N/A None BIG-IQ API Reference Guide 2-13

Chapter 2 "generation": 1, "items": [ "generation": 1, "templatename": "f5.httpstat.provider", "parentreference": "link": "/mgmt/cm/cloud/devices/templates/iapp/f5.httpstat" "overrides": "vars": [ "name": "net client_mode", "isrequired": true, "provider": "wan" "name": "net server_mode", "isrequired": true, "provider": "lan" "name": "pool addr", "displayname": "Virtual IP Address", "description": "The address of the VIP", "isrequired": true, "providertype": "NODE", "servertier": "default" "name": "pool port", "isrequired": true, "provider": "80", "providertype": "PORT", "servertier": "default" "tables": [ "name": "pool members", "columns": [ "name": "addr", "isrequired": false, "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" "name": "port_secure", "isrequired": true, "provider": "443" "servertier": "default" "name": "basic snatpool_members", "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" ] "name": "server_pools servers", "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" ] ] "kind": "cm:cloud:provider:templates:iapp:providerservicetemplateworkerstate", "selflink": "https://localhost/mgmt/cm/cloud/provider/templates/iapp/f5.httpstat.provider" "properties": [ "id": "cloudconnectorreference", "displayname": "Cloud Connector", "isrequired": true, "provider": "http://localhost/mgmt/cm/cloud/connectors/ec2/4bcf6ac5-7e52-48f8-ada2-3fa26103dfdc" "id": "shoesize", "displayname": "Shoe Size", "isrequired": true, "value": "7EEEE" "id": "deviceimagereference", "displayname": "Device Image", "isrequired": false, "description": "When connector supports automatic deployment of Devices, Provider will use this property to indicate which Device image is appropriate to use for deployment of this iapp template. It is expected that reference will point to a Node TEMPLATE.", "provider": "https://localhost/mgmt/cm/connectors/ec2/guid1234-guid-1234-guid-1234guid1234/nodes/guid1234-guid-1234-guid-1234guid1234" "kind": "cm:cloud:provider:templates:iapp:providerservicetemplatecollectionworkerstate", "selflink": "https://localhost/mgmt/cm/cloud/provider/templates/iapp" 2-14

Central Management APIs Tenant Templates /mgmt/cm/cloud/tenant/templates/iapp Create provider iapp template Creates a new customized provider template. /mgmt/cm/cloud/provider/templates/iapp POST N/A BIG-IQ API Reference Guide 2-15

Chapter 2 "templatename": "f5.httpstat.provider", "parentreference": "link": "/mgmt/cm/cloud/devices/templates/iapp/f5.httpstat" "overrides": "vars": [ "name": "net client_mode", "isrequired": true, "provider": "wan" "name": "net server_mode", "isrequired": true, "provider": "lan" "name": "pool addr", "isrequired": true, "providertype": "NODE", "servertier": "default" "name": "pool port", "isrequired": true, "provider": "80", "providertype": "PORT", "servertier": "default" "tables": [ "name": "pool members", "columns": [ "name": "addr", "isrequired": false, "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" "name": "port_secure", "isrequired": true, "provider": "443" "servertier": "default" "name": "basic snatpool_members", "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" ] "name": "server_pools servers", "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" ] ] "properties": [ "id": "cloudconnectorreference", "displayname": "Cloud Connector", "isrequired": true, "provider": "http://localhost/mgmt/cm/cloud/connectors/ec2/4bcf6ac5-7e52-48f8-ada2-3fa26103dfdc" "id": "shoesize", "displayname": "Shoe Size", "isrequired": true, "value": "7EEEE" "id": "deviceimagereference", "displayname": "Device Image", "isrequired": false, "description": "When connector supports automatic deployment of Devices, Provider will use this property to indicate which Device image is appropriate to use for deployment of this iapp template. It is expected that reference will point to a Node TEMPLATE.", "provider": "https://localhost/mgmt/cm/connectors/ec2/guid1234-guid-1234-guid-1234guid1234/nodes/guid1234-guid-1234-guid-1234guid 1234" ] 2-16

Central Management APIs HTTP/1.1 200 OK HTTP Error code Tenant Templates /mgmt/cm/cloud/tenant/templates/iapp Get customized provider template parameters Gets the customized parameters for a specific provider template. /mgmt/cm/cloud/provider/templates/iapp/<template-id> GET N/A BIG-IQ API Reference Guide 2-17

Chapter 2 "generation": 1, "templatename": "f5.httpstat.provider", "parentreference": "link": "/mgmt/cm/cloud/devices/templates/iapp/f5.httpstat" "overrides": "vars": [ "name": "net client_mode", "isrequired": true, "provider": "wan" "name": "net server_mode", "isrequired": true, "provider": "lan" "name": "pool addr", "isrequired": true, "providertype": "NODE", "servertier": "default" "name": "pool port", "isrequired": true, "provider": "80", "providertype": "PORT", "servertier": "default" "tables": [ "name": "pool members", "columns": [ "name": "addr", "isrequired": false, "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" "name": "port_secure", "isrequired": true, "provider": "443" "servertier": "default" "name": "basic snatpool_members", "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" ] "name": "server_pools servers", "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" "name": "port", "isrequired": true, "provider": "80", "providertype": "PORT" ] ] "properties": [ "id": "cloudconnectorreference", "displayname": "Cloud Connector", "isrequired": true, "provider": "http://localhost/mgmt/cm/cloud/connectors/ec2/4bcf6ac5-7e52-48f8-ada2-3fa26103dfdc" "id": "shoesize", "displayname": "Shoe Size", "isrequired": true, "value": "7EEEE" "id": "deviceimagereference", "displayname": "Device Image", "isrequired": false, "description": "When connector supports automatic deployment of Devices, Provider will use this property to indicate which Device image is appropriate to use for deployment of this iapp template. It is expected that reference will point to a Node TEMPLATE.", "provider": "https://localhost/mgmt/cm/connectors/ec2/guid1234-guid-1234-guid-1234guid1234/nodes/guid1234-guid-1234-guid-1234gui D1234" "kind": "cm:cloud:provider:templates:iapp:providerservicetemplateworkerstate", "selflink": "https://localhost/mgmt/cm/cloud/provider/templates/iapp/f5.httpstat.provider" 2-18

Central Management APIs Tenant Templates /mgmt/cm/cloud/tenant/templates/iapp Delete provider iapp template Deletes the specified provider iapp templates /mgmt/cm/cloud/provider/templates/iapp/<template-id> DELETE N/A HTTP/1.1 200 OK Tenant Templates /mgmt/cm/cloud/tenant/templates/iapp BIG-IQ API Reference Guide 2-19

Chapter 2 Sample provider template APIs It can be challenging to create provider templates from scratch. To aid in creating provider templates, there is a worker that users can query in order to get sample provider templates. While you have the option of customizing them further, these samples can simply be posted to the sample provider template as-is to make a functioning provider template. Get example provider template for a corresponding iapp template This function returns an example provider template based on the underlying NAME iapp template. The name is the same as the name of one of the underlying templates. These names can be discovered by querying the BIG-IQ iapp Template Worker (/cm/cloud/templates/iapp). Note There is always an example named example. There may be other examples. You can get the complete list. Minimal modification needs to be done in order to post this as an actual provider template. You will need to edit two fields: templatename properties: A cloudconnectorreference needs to be provided Note This provider template does not exist until you edit it and POST it to the provider template API. This is merely an example of how to create a provider template. Gets an example provider iapp template for a given iapp template. /mgmt/cm/cloud/templates/iapp/name/providers/example-name/ GET N/A None A standard provider template: see the provider template API for an example. 2-20

Central Management APIs Provider iapp Templates Templates iapp Collection Worker /mgmt/cm/cloud/provider/templates/iapp /mgmt/cm/cloud/templates/iapp Get example provider template for a corresponding iapp template Gets a list of all example provider iapp templates for a given iapp template /mgmt/cm/cloud/templates/iapp/name/providers/ GET None None A standard provider template: see the provider template API for an example. Provider iapp Templates Templates iapp Collection Worker /mgmt/cm/cloud/provider/templates/iapp /mgmt/cm/cloud/templates/iapp Find all provider template examples Gets a list of all example provider iapp templates for a given iapp template. /mgmt/shared/index/config?$filter=kind eq 'cm:cloud:provider:templates:iapp:provideriapptemplateworkerstate' and isf5example eq 'true' GET None None BIG-IQ API Reference Guide 2-21

Chapter 2 "currentitemcount": 0, "itemsperpage": 0, "pageindex": 0, "selflink": "http://localhost:8100/shared/index/config?$filter=kind%20eq%20%27cm:cloud:provider:temp lates:iapp:provideriapptemplateworkerstate%27%20and%20isf5example%20eq%20%27true %27", "startindex": 0, "totalitems": 28, "totalpages": 0, "items": [ "templatename": "f5.bea_weblogic-example",... templates trimmed ] 2-22

Central Management APIs Tenant iapp templates APIs Tenants can access the template catalog by going to this API. It allows them to determine what configuration is necessary for each template. tenant_id = "soda2" as particular Tenant instance; customized_iapp_template_id = "Exchange-Gold" as particular customized (Provider-specific) iapp template instance; tenant_iapp_service_id = "my-exchange-gold-service" as particular running instance of Tenant service; The figure illustrates the call flow for creating a tenant template. Figure 2.2 Tenant template call flow Variables "name": "variablename". "isrequired": booleanvalue, "defaultvalue": "somevalue", "providertype": "TYPE" # see below "servertier": "name" A variable in the tenant template has the following form: BIG-IQ API Reference Guide 2-23

Chapter 2 Explanation of variables Field name isrequired defaultvalue providertype servertier The name of the variable. White space is not allowed. If true, then the value must be supplied when creating an iapp service, unless the provider specified a fixed value using the provider field or a default value. The default value that will be used for the field when a user creates an iapp service based on this template. If the value is NODE, then the variable or column is an IP address. If the value is PORT, then the variable or column is a port number. If the value is var, it indicates the virtual IP address for the given server tier. If the value is a table, it indicates a server pool for the given server tier. If specified for a variable, then the variable represents a virtual server interface. At least one virtual server interface must be specified or it is an error. If specified for a table, then the table represents a set of pool members. Properties Note The variables listed are the same as the ones in the corresponding provider templates, but without the provider variables. A property in the provider template has the following form: "id": "name", "displayname": "Descriptive Name", "description": "Descriptive text about the property", "isrequired": booleanvalue, "value": "somevalue", 2-24

Central Management APIs Explanation of properties Field id displayname description isrequired value The name of the property. White space is not allowed. A user-friendly name for the property. White space is allowed. Some longer text describing the purpose of the property. A boolean, true or false. If the tenant does not specify a value, this value will be used. Note that the variables listed are the same as the ones in the corresponding provider templates, but without the provider variables. Get all tenant iapp templates Gets all of the tenant iapp templates from the provider catalog. Note that tenants only see the parts of the template that the provider allowed. /mgmt/cm/cloud/tenant/templates/iapp GET N/A None BIG-IQ API Reference Guide 2-25

Chapter 2 "items: [ "name": "basic.template", "generation": 1, "sections": [ "displayname": "intro", "description": "Introduction" "displayname": "pool", "description": "Pool Address" "vars": [ "name": "intro ltm_provisioned", "isrequired": false, "section": "intro", "displayname": "ltm_provisioned", "name": "pool addr", "isrequired": true, "providertype": "NODE", "servertier": "default", "section": "pool", "displayname": "addr", "description": "Enter pool address" "name": "basic addr", "isrequired": true "tables": [ "name": "pool members", "servertier": "default", "isrequired": false, "section": "pool", "displayname": "members", "description": "Enter pool member addresses" "columns": [ "name": "addr", "isrequired": false, "providertype": "NODE" ] "name": "server_pools servers", "isrequired": false, "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" ] "properties": [ "id": "shoesize", "displayname": "Shoe Size", "isrequired": true, "value": "7EEEE" "generation": 1 "generation": 2 2-26

Central Management APIs BIG-IQ API Reference Guide 2-27

Chapter 2 Get tenant iapp template configuration Gets the configuration parameters for one tenant iapp template. /mgmt/cm/cloud/tenant/templates/iapp/<template-id> GET N/A None 2-28

Central Management APIs "name": "basic.template", "sections": [ "displayname": "intro", "description": "Introduction" "displayname": "pool", "description": "Pool Address" "vars": [ "name": "intro ltm_provisioned", "isrequired": false "name": "pool addr", "isrequired": true, "providertype": "NODE", "servertier": "default", "section": "pool", "displayname": "addr", "description": "Enter pool address" "name": "basic addr", "isrequired": true "tables": [ "name": "pool members", "servertier": "default", "isrequired": false, "section": "pool", "displayname": "members", "description": "Enter pool member addresses" "columns": [ "name": "addr", "isrequired": false, "providertype": "NODE" ] "name": "server_pools servers", "isrequired": false, "columns": [ "name": "addr", "isrequired": true, "providertype": "NODE" ] "properties": [ "id": "shoesize", "displayname": "Shoe Size", "isrequired": true, "value": "7EEEE" "generation": 1 BIG-IQ API Reference Guide 2-29

Chapter 2 Tenant APIs Providers advertise what services they make available to their customers. Customers who make use of the provider s services are known as tenants. Providers need a way to track customers who use their services. To do so, providers track them as tenants. Each tenant is identified using a name and a description. The name is used to refer to the tenant in a URI. The description is used to refer to the tenant in conversation. For example, a tenant can have the name soda2 and the description Soda 2 Tenant. 2-30

Central Management APIs Get all tenants Gets all of the tenants /mgmt/cm/cloud/tenants GET N/A "items": [ "name": "soda2", "description": "soda2 Tenant", "addresscontact": "123 Fake St.", "phone": "(206) 555-1212", "email": "soda2-it@f5.com", "userreference": "link": "http://localhost/mgmt/shared/authz/user/soda2" "rolereference": "link": "http://localhost/mgmt/shared/authz/roles/soda2_12345" "cloudconnectorreferences": [ "link": "http://localhost/mgmt/cm/cloud/connectors/vmware/67890" "generation": 2 "name": "soda1", "description": "soda1 Tenant", "addresscontact": "321 Fake St.", "phone": "(206) 555-1212", "email": "soda1-it@f5.com", "userreference": "link": "http://localhost/mgmt/shared/authz/user/soda1" "rolereference": "link": "http://localhost/mgmt/shared/authz/roles/soda1_54321" "cloudconnectorreferences": [ "link": "http://localhost/mgmt/cm/cloud/connectors/local/09876" "generation": 1 ] BIG-IQ API Reference Guide 2-31

Chapter 2 Get one tenant information Retrieves information for one tenant. /mgmt/cm/cloud/tenants/<tenant-id> GET N/A "name": "soda2", "description": "soda2 Tenant", "addresscontact": "123 Fake St.", "phone": "(206) 555-1212", "email": "soda2-it@f5.com", "userreference": "link": "http://localhost/mgmt/shared/authz/user/soda2" "rolereference": "link": "http://localhost/mgmt/shared/authz/roles/soda2_12345" "cloudconnectorreferences": [ "link": "http://localhost/mgmt/cm/cloud/connectors/vmware/67890" ] Create tenant Creates one new tenant. /mgmt/cm/cloud/tenants POST N/A 2-32

Central Management APIs "name": "soda2", "description": "Soda 2 Tenant", "addresscontact": "123 Fake St.", "phone": "(206) 555-1212", "email": "soda2-it@f5.com", "userreference": "link": "http://localhost/mgmt/shared/authz/user/soda2" "rolereference": "link": "http://localhost/mgmt/shared/authz/roles/soda2_12345" "cloudconnectorreferences": [ "link": "http://localhost/mgmt/cm/cloud/connectors/vmware/67890" ] HTTP/1.1 200 OK BIG-IQ API Reference Guide 2-33

Chapter 2 Update tenant information Changes one tenant's information. /mgmt/cm/cloud/tenants/<tenant-id> PUT N/A "name": "soda2", "description": "soda2 Tenant", "addresscontact": "123 Fake St.", "phone": "(206) 555-1212", "email": "soda2-it@f5.com", "userreference": "link": "http://localhost/mgmt/shared/authz/user/soda2" "rolereference": "link": "http://localhost/mgmt/shared/authz/roles/soda2_12345" "cloudconnectorreferences": [ "link": "http://localhost/mgmt/cm/cloud/connectors/vmware/67890" "generation": 2 HTTP/1.1 200 OK Specify all fields. Do not change the name. Increment the generation number. Delete one tenant Deletes a tenant. /mgmt/cm/cloud/tenants/<tenant-id> DELETE N/A HTTP/1.1 200 OK 2-34

Central Management APIs Tenant services APIs Properties "id": "name", "value": "somevalue", Explanation of properties These APIs make it possible for a tenant to manage his own application services. A tenant service request contains a list of optional properties, each of which has the following form: Field id The name of the property. White space is not allowed. value If the tenant does not specify a value, this value will be used. You can only specify properties if they are also in the tenant template referenced by the tenant service request. BIG-IQ API Reference Guide 2-35

Chapter 2 Get service instances Retrieves the list of service instances that have been deployed by the tenant. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp GET N/A 2-36

Central Management APIs "items": [ "name": "https-app1", "tenanttemplatereference": "link": "https://localhost/mgmt/cm/cloud/tenant/templates/iapp/https-gold" "tenantreference": "link": "https://localhost/mgmt/cm/cloud/tenants/thetenantname" "vars": [ "name": "pool addr", "value": "10.0.1.210" "name": "ssl cert", "value": "/Common/https-app1_Servers.crt" "name": "ssl key", "value": "/Common/https-app1_Servers.key" "tables": [ "name": "pool hosts", "columns": [ "name" "rows": [ [ "example.com" ] ] "name": "pool members", "columns": [ "addr", "port" "rows": [ [ "10.0.2.94", "80" ] ] "properties": [ "vipproxyaddressbyservertiername": "Servers": "54.201.90.23" "servertierswithprovisionedvips": [ "Servers" "servertiersslcerts": [ "tier": "Servers", "name": "https-app1_servers" "error" : "error description if any", "generation": 6, "lastupdatemicros": 1391551332270011, "kind": "cm:cloud:tenants:tenantserviceinstance", "selflink": "https://localhost/mgmt/cm/cloud/tenants/thetenantname/services/iapp/https-app1"... Sample response truncated for brevity... BIG-IQ API Reference Guide 2-37

Chapter 2 Get service instance configuration Retrieves configuration for a given tenant service. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp/<service-id> GET N/A 2-38

Central Management APIs "name": "https-app1", "tenanttemplatereference": "link": "https://localhost/mgmt/cm/cloud/tenant/templates/iapp/https-gold" "tenantreference": "link": "https://localhost/mgmt/cm/cloud/tenants/thetenantname" "vars": [ "name": "pool addr", "value": "10.0.1.210" "name": "ssl cert", "value": "/Common/https-app1_Servers.crt" "name": "ssl key", "value": "/Common/https-app1_Servers.key" "tables": [ "name": "pool hosts", "columns": [ "name" "rows": [ [ "example.com" ] ] "name": "pool members", "columns": [ "addr", "port" "rows": [ [ "10.0.2.94", "80" ] ] "properties": [ "vipproxyaddressbyservertiername": "Servers": "54.201.90.23" "servertierswithprovisionedvips": [ "Servers" "servertiersslcerts": [ "tier": "Servers", "name": "https-app1_servers" "error" : "error description if any", "generation": 6, "lastupdatemicros": 1391551332270011, "kind": "cm:cloud:tenants:tenantserviceinstance", "selflink": "https://localhost/mgmt/cm/cloud/tenants/thetenantname/services/iapp/https-app1" BIG-IQ API Reference Guide 2-39

Chapter 2 The information returned only includes the tenant-provided values, and not the provider values from the provider template. Delete service instances Deletes an active tenant service. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp/<service-id> DELETE N/A HTTP/1.1 200 OK Create service instance The fields this API uses are described in the table. Field pool_addr If the connector supportsvirtualserverprovisioning is true, then specifying 0.0.0.0 instructs BIG-IQ Cloud to dynamically assign a virtual server address. Otherwise, specify the exact address to be used. servertiersinfo Required only if you are deploying an elastic service. This field provides a list of additional information for the server tiers in the service. servertiersinfo[0].name The name of a server tier in a service. servertiersinfo[0].nodetemplatereference A reference to a node template that will be used to create new nodes in the server tier when it expands. elasticitypolicy Required only if you are deploying an elastic service. Contains information used to support the expansion and contraction of server tiers in a service. elasticitypolicy.servertierpolicies A list of policies that are unique to the server tiers in a service. elasticitypolicy.servertierpolicies[0].associatedservertier The name of the server tier in the service to which the elasticity policy will be applied. 2-40

Central Management APIs elasticitypolicy.servertierpolicies[0].minnumberofnodes The minimum number of nodes that should be running in the server tier at any given time. elasticitypolicy.servertierpolicies[0].maxnumberofnodes The maximum number of nodes that should be running in the server tier at any given time. elasticitypolicy.servertierpolicies[0].thresholds A list of thresholds that trigger either an expansion or contraction of a server tier when they are crossed. elasticitypolicy.servertierpolicies[0].thresholds[0].thresholdname The name of the threshold. elasticitypolicy.servertierpolicies[0].thresholds[0].stattype The type of statistics that should be monitored to determine whether a threshold was crossed or not. Valid values are VirtualServers and Application. elasticitypolicy.servertierpolicies[0].thresholds[0].statname The name of the stat to monitor. elasticitypolicy.servertierpolicies[0].thresholds[0].thresholdoperator The OData operator used to determine whether the threshold has been crossed or not. Valid values are gt, ge, eq, le, and lt. elasticitypolicy.servertierpolicies[0].thresholds[0].thresholdlevel The level of the threshold at which it is deemed to be crossed or not. elasticitypolicy.servertierpolicies[0].thresholds[0].thresholdfactor How much to expand or contract the threshold. elasticitypolicy.servertierpolicies[0].thresholds[0].thresholdcheckfrequencymicros Specifies how often to check whether the threshold has been crossed or not. servertiersslcerts The collection of client SSL certificates for each relevant server tier that uses SSL encryption. servertiersslcerts[0].tier The name of tier with which the client SSL cert will be associated. servertiersslcerts[0].certificatetext SSL certificate in base64 encoded PEM format. The text should begin with PEM sentinel -----BEGIN CERTIFICATE----- and end with ----END CERTIFICATE-----. Line feeds can be either \n or \r\n. servertiersslcerts[0].privatekeytext SSL certificate's private key in base64 encoded PEM format. The text should begin with PEM sentinel -----BEGIN PRIVATE KEY----- and end with ----END PRIVATE KEY-----. Line feeds can be either \n or \r\n. Create a new tenant service instance. mgmt/cm/cloud/tenants/<tenant-id>/services/iapp POST N/A BIG-IQ API Reference Guide 2-41

Chapter 2 "name": "https-app1", "tenanttemplatereference": "link": "https://localhost/mgmt/cm/cloud/tenant/templates/iapp/https-gold" "tenantreference": "link": "https://localhost/mgmt/cm/cloud/tenants/thetenantname" "vars": [ "name": "pool addr", "value": "0.0.0.0" "tables": [ "name": "pool hosts", "columns": [ "name" "rows": [ [ "example.com" ] ] "name": "pool members", "columns": [ "addr", "port" "rows": [ [ "10.0.2.94", "80" ] ] "properties": [ "id": "shoesize", "value": "7EEEE" "servertiersinfo": [ "name" : "Servers", "nodetemplatereference" : "link" : "https://localhost/mgmt/cm/cloud/connector/<someconnectortype>/495b501a-5d3b-11e3-8118-d231feb1dc81/nodes/beed49 04-b5a5-4bd8-ac40-808eeef5815f"... Sample response truncated for brevity... HTTP/1.1 200 OK 2-42

Central Management APIs Update service instance Updates an existing tenant service instance. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp/<service instance id> PUT N/A "name": "TheTenantName.dns", "tenanttemplatereference": "link": "/mgmt/cm/cloud/tenant/templates/iapp/dns.silver" "vars": [ "name": "vs_pool vs_addr", "value": "10.33.33.12" "tables": [ "name": "vs_pool members", "columns": [ "addr", "port" "rows": [ [ "10.22.22.12", "53" ] ] "properties": [ "id": "shoesize", "value": "7EEEE" ] HTTP/1.1 200 OK HTTP/1.1 503 Unavailable An HTTP 503 status code indicates you should retry later. This occurs when the asynchronous work of finishing the work from a previous POST or PUT is still in progress. BIG-IQ API Reference Guide 2-43

Chapter 2 Get example-stats Gets the list of stat names available on the iapp service category. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp-stats GET N/A https://<bigiq>/mgmt/cm/cloud/tenants/<tenantid>/services/iapp-stats 2-44

Central Management APIs "name": "TheTenantName.dns", "tenanttemplatereference": "link": "/mgmt/cm/cloud/tenant/templates/iapp/dns.silver" "vars": [ "name": "vs_pool vs_addr", "value": "10.33.33.12" "tables": [ "name": "vs_pool members", "columns": [ "addr", "port" "rows": [ [ "10.22.22.12", "53" ] ] "properties": [ "id": "shoesize", "value": "7EEEE" ] 200 OK 401 Unauthorized 503 Unavailable JavaScript Java An HTTP 503 status code indicates you should retry later. This occurs when the asynchronous work of finishing the work from a previous POST or PUT is still in progress. Get example-stats Get the list of stat names available on the iapp service category /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp-stats GET N/A https://<bigiq>/mgmt/cm/cloud/tenants/<tenantid>/services/iapp-stats HTTP/1.1 200 OK "entries": "health.stats.total-member-cnt": "value": 1, "description": "", "lastupdatemicros": 1382978994710114 "health.stats.serverside.pkts-out": "value": 1, "description": "", "lastupdatemicros": 1382978994709499 "health.stats.serverside.tot-conns": "value": 1, "description": "", "lastupdatemicros": 1382978994709562... Sample response truncated for brevity... BIG-IQ API Reference Guide 2-45

Chapter 2 Tenant service health APIs Get service health Gets the health of a single service that has been deployed with the BIG-IQ system. health.summary is the overall health of the application. health.placement is the status of the placement, and the description is a string version of the Health POJO health.app is the status from the application directly. Currently not all applications support this. health.service.stats.* are stats provided by the iapp itself. Other stats are supplied by other processes or the infrastructure. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp/<service-id>/stats GET N/A 2-46

Central Management APIs HTTP/1.1 200 OK "entries": "health.placement": "value":1.0, "description":"application Placement is placed and stable." "com.f5.rest.common.restworker.isreplicated": "value":0.0 "com.f5.rest.common.restworkerstate.lastupdatemicros": "value":1.364234385057122e15 "GET": "value":1220.0, "description":"counter for GET" "com.f5.rest.common.restworkerstate.generation": "value":1.0 "health.summary": "value":1.0, "description":"application is healthy." "com.f5.rest.common.restworker.ispersisted": "value":0.0 "com.f5.rest.common.restworker.isindexed": "value":1.0 "PUT": "value":1.0, "description":"counter for PUT" "health.app": "value":1.0, "description":"application is healthy." "com.f5.rest.common.restworker.issynchronized": "value":0.0 "generation":3045, "lastupdatemicros":1364239317606201, "kind":"cm:cloud:tenants:scotttenant:services:iapp:gold3:stats:restworkerstats", "selflink":"https://localhost/mgmt/cm/cloud/tenants/scotttenant/services/iapp/gold3/stats" BIG-IQ API Reference Guide 2-47

Chapter 2 Example Health PODO "description":"application Placement failed with an error.", "status":"error", "error":"placement on remote device:https://localhost/mgmt/cm/cloud/managed-devices/26c86b6e-b096-43f5-bb1e-0469233 01cfd failed with error:java.net.protocolexception: Status code:400, uri:http://127.1.1.2:8000/mgmt/tm/cloud/services/iapp?f5-remote-host=10.22.22.4&em_server _ip=127.0.2.1&em_server_auth_token=<token> at com.f5.rest.common.restrequestsender.finish(restrequestsender.java:403) at com.f5.rest.common.restrequestsender.processnext(restrequestsender.java:389) at com.f5.rest.common.resthelper$2.run(resthelper.java:1425) at java.util.concurrent.threadpoolexecutor$worker.runtask(unknown Source) at java.util.concurrent.threadpoolexecutor$worker.run(unknown Source) at java.lang.thread.run(unknown Source)" 2-48

Central Management APIs Tenant virtual servers APIs These APIs allow clients to retrieve all the virtual servers for any tenant services owned by a given tenant. It is the combination of all the server tiers owned by the tenant. Get all virtual servers Gets all application servers tiers that are associated with a given tenant. /mgmt/cm/cloud/tenants/<tenant-id>/virtual-servers GET N/A "items":[ "id":"tenant:app:servers", "name":"servers", "virtualserver": "address":"10.10.20.40", "proxyaddress":"1.2.3.4" "poolservers":[ "address":"10.10.10.100", "port":"80" "servicereference": "link":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3" "generation":1, "lastupdatemicros":1361404682366230, "kind":"cm:cloud:tenants:services:iapp:servertiers:servertierstate", "selflink":"https://localhost/mgmt/cm/cloud/tenants/tenant/services/iapp/myhttp3/servertiers/servers" "generation":1, "kind":"cm:cloud:tenants:services:iapp:servertiers:servertiercollectionstate", "lastupdatemicros":1361404682430280, "selflink":"https://localhost/mgmt/cm/cloud/tenants/tenant/virtual-servers" BIG-IQ API Reference Guide 2-49

Chapter 2 Get one virtual server Gets a single virtual server. Indexed by ID. /mgmt/cm/cloud/tenants/<tenant-id>/virtual-servers/id GET N/A "id":"tenant:app:servers", "name":"servers", "virtualserver": "address":"10.10.20.40" "poolservers":[ "address":"10.10.10.100", "port":"80" "servicereference": "link":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3" "generation":1, "lastupdatemicros":1361404682366230, "kind":"cm:cloud:tenants:services:iapp:servertiers:servertierstate", "selflink":"https://localhost/mgmt/cm/cloud/tenants/tenant/virtual-servers/servers" Get example-stats Gets a list of stat names available at the virtual server category /mgmt/cm/cloud/tenants/<tenant-id>/virtual-servers-stats 2-50

Central Management APIs GET N/A https://<bigiq-mgmt>/mgmt/cm/cloud/tenants/<tenantid>/virtual-servers-stats BIG-IQ API Reference Guide 2-51

Chapter 2 "entries": "health.stats.clientside.connections-max": "value": 1, "description": "", "lastupdatemicros": 1382978677209788 "health.stats.clientside.packets-out": "value": 1, "description": "", "lastupdatemicros": 1382978677209622 "health.stats.serverside.packets-in": "value": 1, "description": "", "lastupdatemicros": 1382978677209604 "health.stats.clientside.connections-total": "value": 1, "description": "", "lastupdatemicros": 1382978677209663 "health.stats.serverside.connections-total": "value": 1, "description": "", "lastupdatemicros": 1382978677209759 "health.stats.clientside.packets-in": "value": 1, "description": "", "lastupdatemicros": 1382978677209576 "health.stats.serverside.connections-max": "value": 1, "description": "", "lastupdatemicros": 1382978677209801 "health.stats.clientside.connections-current": "value": 1, "description": "", "lastupdatemicros": 1382978677209814 "health.stats.serverside.connections-current": "value": 1, "description": "", "lastupdatemicros": 1382978677209824 "health.stats.serverside.packets-out": "value": 1, "description": "", "lastupdatemicros": 1382978677209636 "generation": 10, "lastupdatemicros": 1382978677209826, "kind": "cm:cloud:tenants:t90:virtual-servers:stats:restworkerstats", "selflink": "https://localhost/mgmt/cm/cloud/tenants/t90/virtual-servers-stats" 2-52

Central Management APIs Tenant service server tiers APIs These APIs retrieve the application server tiers and servers for a given tenant service. Get server tiers Gets all application servers tiers that are associated with a given tenant service. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp/<service-id>/servertiers GET N/A BIG-IQ API Reference Guide 2-53

Chapter 2 HTTP/1.1 200 "items":[ "name":"default", "virtualserver": "address":"10.10.20.40", "proxyaddress":"1.2.3.4" "poolservers":[ "address":"10.10.10.100", "port":"80" "tenantreference": "link": "https://localhost/mgmt/cm/cloud/tenants/tenant", "servicereference": "link":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3" "cloudconnectorreference" : "link" : "https://localhost/mgmt/cm/cloud/connectors/local/2345-abcd-3959-defd-1548abcd" "generation":1, "lastupdatemicros":1361404682366230, "kind":"cm:cloud:tenants:services:iapp:servertiers:servertierstate", "selflink":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3/servertiers/default" "generation":1, "kind":"cm:cloud:tenants:services:iapp:servertiers:servertiercollectionstate", "lastupdatemicros":1361404682430280, "selflink":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3/servertiers" Get servers in tier Gets a particular application server tier that is associated with a given tenant service. /mgmt/cm/cloud/tenants/<tenant-id>/services/iapp/<service-id>/servertiers/<server-tier> GET N/A 2-54

Central Management APIs HTTP/1.1 200 OK "name":"default", "virtualserver": "address":"10.10.20.40", "proxyaddress":"1.2.3.4" "poolservers":[ "address":"10.10.10.100", "port":"80" "tenantreference": "link": "https://localhost/mgmt/cm/cloud/tenants/tenant", "servicereference": "link":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3" "cloudconnectorreference" : "link" : "https://localhost/mgmt/cm/cloud/connectors/local/abcd-2134-bdec-2358-abcd2358" "generation":1, "lastupdatemicros":1361404682366230, "kind":"cm:cloud:tenants:services:iapp:servertiers:servertierstate", "selflink":"https://localhost/mgmt/cm/cloud/tenants/soda1/services/iapp/myhttp3/servertiers/de fault" BIG-IQ API Reference Guide 2-55

Chapter 2 Tenant node APIs The tenant node aggregator API shows which unique nodes are running which services deployed for a tenant, as well as the data center/cloud in which they live. Create node Sends a request to the nodes worker for the connector using the tenant nodes worker. /cm/cloud/tenants/<tenant-id>/nodes POST None N/A "cloudconnectorreference" : "https://localhost/cm/cloud/connectors/ec2/4bcf6ac5-7e52-ada2-3fa26103dfdc", "properties" : [ "id" : "ImageId", "value" : "ami-abcd1234" "id" : "InstanceType", "value" : "m1.large" "networkinterfaces" : [ "localaddress" : "172.27.62.95", "virtualaddress" : "0.0.0.0", "subnetaddress" : "172.27.62.0/24" "subnetaddress" : "10.10.10.0/24" "subnetaddress" : "10.10.20.0/24" "state" : "PENDING", "provider" : false 2-56

Central Management APIs Query for all tenant nodes Gets all the tenant nodes associated with a specific tenant. /cm/cloud/tenants/<tenant-id>/nodes GET None N/A HTTP/1.1 200 OK "items" : [ "nodeid" : "73120fcb-5be0-4ea5-a0ab-260019abf18e", "cloudreference" : "link" : "http://localhost/cm/cloud/tenants/soda2/connectors/4bcf6ac5-7e52-ada2-3fa26103dfdc" "nodereference" : "link" : "http://localhost/cm/cloud/tenants/soda2/connectors/4bcf6ac6-7e52-ada2-3fa26103dfdc/nodes /7edbea73-b431-4c0b-8f71-f554eb6db824" "ipaddress" : "10.10.10.10", "services" : [ "serviceport" : "80", "servicereference" : "link" : "http://localhost/cm/cloud/tenants/soda2/services/iapp/soda2http" ] BIG-IQ API Reference Guide 2-57

Chapter 2 Query example-stats for tenant nodes Queries example-stats for nodes. /cm/cloud/tenants/<tenant-id>/nodes-stats GET CloudConnectorReference since stats availability may be different for different cloud connector. https://54.200.66.89/mgmt/cm/cloud/tenants/3670058c-63b6-43bc-b685-da0beedcbb36/nodes -stats?cloudconnectorreference=https://localhost/mgmt/cm/cloud/connectors/ec2/e4 21f436-9ca2-4f39-b33c-29918e78840e 2-58

Central Management APIs HTTP/1.1 200 OK "entries": "health.stats.cloud.min.diskreadops": "value": 1, "description": "", "lastupdatemicros": 1382720515322912 "health.stats.cloud.samplecount.networkout": "value": 1, "description": "", "lastupdatemicros": 1382720515322899 "health.stats.cloud.sum.diskwritebytes": "value": 1, "description": "", "lastupdatemicros": 1382720515323088 "health.stats.cloud.avg.networkin": "value": 1, "description": "", "lastupdatemicros": 1382720515322831 "health.stats.cloud.sum.diskreadops": "value": 1, "description": "", "lastupdatemicros": 1382720515322929 "health.stats.cloud.max.diskwritebytes": "value": 1, "description": "", "lastupdatemicros": 1382720515323081 "health.stats.cloud.max.diskreadops": "value": 1, "description": "", "lastupdatemicros": 1382720515322921... Sample response truncated for brevity... BIG-IQ API Reference Guide 2-59

Chapter 2 Tenant cloud connectors APIs Tenants can access cloud connector instances that they can target for application deployments. Providers can give access to specific connectors, and control access to specific fields, including providing default values. Tenant cloud connectors links can be provided during tenant service deployment to specify which cloud should be targeted for the application. Get all tenant cloud connectors Lists all of the cloud connectors to which the specified tenant has access. /mgmt/cm/cloud/tenants/<tenant-name>/connectors GET N/A "items": [ "cloudreference": "link":"https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid":"149e629f-4f45-4575-a347-1c1d924741d0", "name":"north Virginian EC2 Connector", "devicereferences":[ "link": "https://localhost/mgmt/cm/cloud/managed-devices/5de75fc4-1974-3037-b179-d3899a1a1 EC1" "tenantinternalnetworks":[ "networkaddress":"172.27.63.0", "subnetaddress":"255.255.255.0" "tenantexternalnetworks":[ "networkaddress":"172.27.65.0", "subnetaddress":"255.255.255.0" "parameters":[ '"id": "ec2-id", "value": "some-id" ] "generation":1, "lastupdatemicros":1362774373673041, "kind":"cm:cloud:connectors:local:cloudconnectorstate", "selflink":"https://localhost/mgmt/cm/cloud/connectors/local/149e629f-4f45-4575-a347-1c1d9 24741d0" ] 2-60

Central Management APIs Get tenant connector Gets the description for one specific tenant cloud connector instance. /mgmt/cm/cloud/tenants/<tenant-name>/connectors/<connector-id> GET N/A "cloudreference": "link":"https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid":"149e629f-4f45-4575-a347-1c1d924741d0", "name":"north Virginia EC2 Connector", "devicereferences":[ "link": "https://localhost/mgmt/cm/cloud/managed-devices/5de75fc4-1974-3037-b179-d3899a1a1 EC1" "tenantinternalnetworks":[ "subnetaddress":"172.27.63.0/24", "gatewayaddress":"172.27.63.1" "tenantexternalnetworks":[ "subnetaddress":"172.27.65.0/24", "gatewayaddress":"172.27.65.254" "managementnetworks":[ "subnetaddress":"192.168.0.0/16", "gatewayaddress":"192.168.22.254" "parameters":[ '"id": "ec2-id", "value": "some-id" ] "generation":1, "lastupdatemicros":1362774373673041, "kind":"cm:cloud:connectors:local:cloudconnectorstate", "selflink":"https://localhost/mgmt/cm/cloud/connectors/local/149e629f-4f45-4575-a347-1c1d92 4741d0" BIG-IQ API Reference Guide 2-61

Chapter 2 Explanation of the fields: connectorid: The unique ID of this connector. name: A human-readable name for display in the UI. tenantinternalnetworks: The private network addresses within the cloud tenantextenalnetworks: The public network connecting this cloud to the Internet parameters: Property bag for the custom configuration properties for this connector instance. 2-62

Central Management APIs Cloud connector APIs Types of cloud connectors Creating a cloud connector The cloud connector API allows you to create and manipulate cloud connectors. A cloud connector is an association with a specific cloud. Tenant services are targeted to a given cloud connector. Here are some examples. A local cloud connector allows you to describe a private cloud. An EC2 cloud connector allows you to describe a specific EC2 configuration. For example, you might have a set of virtual machines in the EC2 Oregon data center, and these would be described by a single cloud connector. A VMware cloud connector allows you to describe a specific VMware vshield configuration. There are four types of cloud connectors: local: for a private cloud ec2: for accessing Amazon's EC2 vmware: for accessing private clouds maintained by VMware vshield Manager openstack: for accessing OpenStack deployments The diagram details the call sequence for creating a cloud connector. Figure 2.3 Cloud connector call flow BIG-IQ API Reference Guide 2-63

Chapter 2 Deploying an application in the cloud The diagram details the call sequence for deploying an application in the cloud. Figure 2.4 Application deployment call flow Cloud connector description All clouds share a common description. Each cloud may have extra parameters unique to that type of cloud. The code sample illustrates a typical cloud connector description. "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/local" "displayname": "Local", "connectorid": "unique-id", "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] # A list of parameters: see below 2-64

Central Management APIs Explanation of fields Field Output only cloudreference Yes A URI for the cloud connector collection in which this connector is contained. displayname Yes The name of the type of the cloud connector this is contained in. Used for UI display purposes. connectorid Yes The unique identifier of the cloud connector. White space is not allowed. Internally assigned; can not be chosen by the client. supportsserverprovisioning Yes This cloud connector allows you to create new servers (virtual machines). supportsdeviceprovisioning Yes This cloud connector allows you to create new F5 BIG-IP devices. supportsdevicediscovery Yes This cloud connector automatically discovers F5 BIG-IP devices and associates them with the connector. supportsvirtualserverprovisioning Yes This cloud connector is able to automatically provision a dynamic virtual server address for each tier of an application. name No A user-friendly name for the property. White space is allowed. description No A user-friendly description for the property. devicereferences No A set of devices (ADCs) contained within this cloud tenantinternalnetworks No A description of the private network(s) within the cloud. The ADCs will be on these networks. tenantexternalnetworks No A description of the public network(s) to enter this cloud. The virtual servers will be on these networks. managementnetworks No A description of the management network(s) in this cloud. The BIG-IP management interfaces will be on these networks. Parameters Extra parameters for each cloud take the form illustrated in the sample. "id": "name", "displayname": "Descriptive Name", "description": "Descriptive text about the property", "isrequired": booleanvalue, "value": "somevalue", "provider": "somevalue", BIG-IQ API Reference Guide 2-65

Chapter 2 Explanation of parameters Field id displayname description isrequired value provider The name of the property. White space is not allowed. A user-friendly name for the property. White space is allowed. Some longer text describing the purpose of the property. A boolean, true or false. A value for the property that is viewable by a tenant. Also a default value, but indicates that a tenant may not view this value. Parameters for specific cloud types The value and provider fields are mutually exclusive. There are no extra parameters for local cloud connectors.this cloud connector is able to automatically provision a dynamic Virtual Server address for each tier of an Application For VMware and EC2 cloud connectors, refer to the documentation for those connector types. Discovering a cloud connector's parameters This is an example input you can use as a guide in creating your own inputs to a cloud connector. Find the parameters for a given cloud connector /mgmt/cm/cloud/connectors/type GET N/A N/A 2-66

Central Management APIs "items": [ "name": "Human-readable name of connector", "description": "A longer description of the connector", "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "devicereferences": [ "link": "https://172.27.2.2/mgmt/cm/cloud/managed-devices/4a0338b2-1974-876e-bbd3-48d0a68ca3c0" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [ "id": "vshieldaddress", "displayname": "vshield Manager Address", "isrequired": true, "description": "The IP Address or name of the VMware vshield Manager", "value": "192.0.2.1" "id": "vshieldusername", "displayname": "vshield Manager User Name", "isrequired": true, "description": "The user name used to authenticate to the VMware vshield Manager", "value": "username" "id": "vshieldpassword", "displayname": "vshield Manager Password", "isrequired": true, "description": "The password used to authenticate to the VMware vshield Manager", "value": "passw0rd" "id": "bigiqcallbackuser", "displayname": "BIG-IQ User Name", "isrequired": true, "description": "The username used by vshield to communicate with the BIG-IQ", "value": "username" "id": "bigiqcallbackpassword", "displayname": "BIG-IQ Password", "isrequired": true, "description": "The password used by vshield to communicate with the BIG-IQ","value": "passw0rd" BIG-IQ API Reference Guide 2-67

Chapter 2 Create a cloud connector Creates a new cloud connector for a given type of cloud. /mgmt/cm/cloud/connectors/type POST N/A "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. Change a cloud connector Make changes to a cloud connector. /mgmt/cm/cloud/connectors/type/id PUT N/A 2-68

Central Management APIs "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] "generation": 1 HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. The generation you specify must be the same as that returned by the most recent GET on the cloud connector. BIG-IQ API Reference Guide 2-69

Chapter 2 Get a cloud connector Gets a single cloud connector from a given cloud type. /mgmt/cm/cloud/connectors/type/id GET N/A N/A "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/local" "displayname": "Local", "connectorid": "unique-id", "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] "generation": 1 You only specify the name. The cloudreference and connectorid are assigned for you. The generation you specify must be the same as that returned by the most recent GET on the cloud connector. Get health of a cloud connector Gets the health for a single cloud connector. /mgmt/cm/cloud/connectors/type/id/stata GET N/A N/A 2-70

Central Management APIs "entries": "health.summary": "value": 1, "description": "vshield is configured and ready to use" "generation": 3, Get all cloud connectors of a given type Gets a single cloud connector from a given type. /mgmt/cm/cloud/connectors/type/ GET "items": [ "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/local" "displayname": "Local", "connectorid": "unique-id", "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [ "generation": 1 ] BIG-IQ API Reference Guide 2-71

Chapter 2 Get all cloud connectors of all types (brief) Gets all cloud connectors of all types (brief). /mgmt/shared/resolver/groups?$filter=groupname eq cm:cloud:connectors:cloudconnectorstate GET "issubscriptionrequired": false, "groupname": "cm:cloud:connectors:cloudconnectorstate", "references": [ "link": "https://localhost/mgmt/cm/cloud/connectors/ec2/id" "generation": 0, "lastupdatemicros": 0 Get all cloud connectors of all types (detailed) Gets all cloud connectors of all types (detailed). /mgmt/shared/resolver/groups?$filter=groupname eq cm:cloud:connectors:cloudconnectorstate&$expand=references GET 2-72

Central Management APIs "groupname": "cm:cloud:connectors:cloudconnectorstate", "issubscriptionrequired": false, "references": [ "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid": "unique-id", "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "name": "human-friendly-name", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] "generation": 0, "lastupdatemicros": 0 BIG-IQ API Reference Guide 2-73

Chapter 2 Delete a cloud connector Deletes a cloud connector. /mgmt/cm/cloud/connectors/type/id DELETE None 2-74

Central Management APIs Local cloud connector APIs Parameters A local cloud connector allows you to describe a private cloud: a set of BIG-IP devices and the networks to which they are connected. A local Cloud Connector is similar to other cloud connectors, except that it has no extra parameters. The code sample provides an example description. "displayname": "Local", "name": "Human-readable name of connector", "description": "A longer description of the connector", "devicereferences": [ "link": "https://172.27.2.2/mgmt/cm/cloud/managed-devices/4a0338b2-1974-876e-bbd3-48d0a68ca3c0" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [] BIG-IQ API Reference Guide 2-75

Chapter 2 Explanation of fields Field Output only cloudreference Yes A URI for the cloud connector collection in which this connector is contained. displayname Yes The name of the type of the cloud connector this is contained in. For UI display purposes. connectorid Yes The unique identifier of the cloud connector. White space is not allowed. Internally assigned; can not be chosen by the client. name No A user-friendly name for the property. White space is allowed. description No A user-friendly description for the property. devicereferences No A set of devices (ADCs) contained within this cloud. tenantinternalnetworks No A description of the private network(s) within the cloud. The ADCs will be on these networks. tenantexternalnetworks No A description of the public network(s) to enter this cloud. The virtual servers will be on these networks. managementnetworks No A description of the management network(s) in this cloud. The BIG-IP management interfaces will be on these networks. Parameters Extra parameters for each cloud take the form illustrated in the sample. "id": "name", "displayname": "Descriptive Name", "description": "Descriptive text about the property", "isrequired": booleanvalue, "value": "somevalue", "provider": "somevalue", 2-76

Central Management APIs Explanation of parameters Field id displayname description isrequired value provider The name of the property. White space is not allowed. A user-friendly name for the property. White space is allowed. Some longer text describing the purpose of the property. A boolean, true or false. A value for the property that is viewable by a tenant. Also a default value, but indicates that a tenant may not view this value. Parameters for local clouds The value and provider fields are mutually exclusive. There are no extra parameters for local cloud connectors. Create a local cloud connector Creates a new local cloud connector. /mgmt/cm/cloud/connectors/local POST "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] HTTP/1.1 201 Created BIG-IQ API Reference Guide 2-77

Chapter 2 Note that you only specify the name. The cloudreference and connectorid are assigned for you. Change a local cloud connector Changes a cloud connector. /mgmt/cm/cloud/connectors/local/id PUT "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [ "generation": 1 HTTP/1.1 201 Created Note that you only specify the name. The cloudreference and connectorid are assigned for you. 2-78

Central Management APIs Get a cloud connector Gets a single local cloud connector. /mgmt/cm/cloud/connectors/local/id GET "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/local" "displayname": "Local", "connectorid": "unique-id", "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [ "generation": 1 Get all local cloud connectors Gets all local cloud connectors. /mgmt/cm/cloud/connectors/local GET BIG-IQ API Reference Guide 2-79

Chapter 2 "items": [ "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/local" "displayname": "Local", "connectorid": "unique-id", "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.254" "tenantexternalnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "managementnetworks": [ "subnetaddress": "x.y.x.y/z", "gatewayaddress": "x.y.x.1" "parameters": [] "generation": 1 ] Get health of a local cloud connector Gets health of a local cloud connector. /mgmt/cm/cloud/connectors/local/id/stats GET "entries": "health.summary": "value": 1, "description": "" "generation": 3, 2-80

Central Management APIs The health value is 1 if it is healthy and 0 if it is unhealthy. Currently local cloud connectors will always report that they are healthy. Delete a local cloud connector Deletes a local cloud connector. /mgmt/cm/cloud/connectors/local/id DELETE HTTP/1.1 200 OK BIG-IQ API Reference Guide 2-81

Chapter 2 EC2 cloud connectors APIs The EC2 cloud connector API allows you to create and manipulate EC2 cloud connectors. The BIG-IQ EC2 connector is designed to be a single network topology that contains one or more BIG-IP devices. In AWS terms, it is a single VPC completely contained inside a single Availability Zone that is inside a single EC2 Region. The VPC network topology is expected to have three types of subnets. Management - BIG-IP VE eth0 interface sits on this subnet. BIG-IQ Cloud only supports one management subnet. Tenant External - BIG-IP application virtual servers are provisioned on this subnet. The first subnet specified of this type is considered the external VLAN of the BIG-IP device. Subsequent subnets are labeled external1, external2, and so on. Tenant Internal - BIG-IQ manages BIG-IP devices across this subnet. BIG-IP LTM nodes are expected to appear on this subnet. The first subnet specified of this type is considered the internal VLAN of the BIG-IP device. Subsequent subnets are labeled internal1, internal2, and so on. 2-82

Central Management APIs EC2 Connector Topology Figure 2.5 EC2 Connector Topology BIG-IQ API Reference Guide 2-83

Chapter 2 Parameters for EC2 cloud connectors Name Required Value regionendpoint yes The EC2 region endpoint that BIG-IQ system will connect to. This represents a choice of the EC2 geography that is being utilized. See possible values at http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region awsaccesskeyid yes The AWS Access Key ID associated with AWS user account that BIG-IQ system will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint. secretaccesskey yes The AWS Secret Access Key associated with AWS user account that BIG-IQ system will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint. availabilityzone yes The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. Example is us-west-2c. For more information, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availabilit y-zones.html vpcid no The EC2 Virtual Private Cloud (VPC) that connector's resources are contained within. A VPC is a network topology inside an availability zone. Example is vpc-6780750f. If none is specified then the BIG-IQ system will use the first VPC discovered in availability zone. autodeploydevices no Preference as to whether Devices will be auto-deployed when required to support tenant application deployment. If true, then tenantinternalnetworks and tenantexternalnetworks must be populated appropriately. Defaults to false. It is important that the owner of the AWS account create a less-privileged account that does not have access to the credit card used with the AWS account and use its credentials for the awsaccesskeyid and secretaccesskey. The less-privileged account permissions should be set up to so that it can be used to create, delete, or modify EC2 instances as well as perform any other activities related to creating, deleting, or modifying EC2 instances. 2-84

Central Management APIs Create an EC2 cloud connector Creates a new EC2 cloud connector. /mgmt/cm/cloud/connectors/ec2 POST "name" : "EC2 Connector Name", "parameters" : [ "description" : "Required parameter. The EC2 region endpoint that BIG-IQ will connect to. This represents a choice of the EC2 geography that is being utilized. See http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region", "displayname" : "Region Endpoint", "id" : "regionendpoint", "isrequired" : true, "value" : "ec2.us-west-2.amazonaws.com" "description" : "Required parameter. The AWS Access Key ID associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Key ID", "id" : "awsaccesskeyid", "isrequired" : true, "value" : "AKIAJ7GRU4S4D6NYQYUA" "description" : "Required parameter. The AWS Secret Access Key associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Secret Key", "id" : "secretaccesskey", "isrequired" : true, "value" : "wg1dx+sl/4ae9xgqtogrvunmlqekdphqfbygvhas" "description" : "Required parameter. The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. For more info, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availability-zones.html", "displayname" : "Availability Zone", "id" : "availabilityzone", "isrequired" : true, "value" : "us-west-2c" "licensereference": "link": "https://localhost/mgmt/cm/shared/licensing/pools/guid1234-guid-1234-guid-1234guid1234" "dnsserveraddresses": [ "8.8.8.8", "8.8.4.4" "dnssuffixes": [ "example.net", "example.com" ] BIG-IQ API Reference Guide 2-85

Chapter 2 "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid": "GUID1234-GUID-1234-GUID-1234GUID1234", "name": "EC2 Connector Name", "devicereferences": [ "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1235" "managementnetworks": [ "subnetaddress": "10.0.0.0/24", "name": "mgmt" "tenantinternalnetworks": [ "subnetaddress": "10.0.2.0/24", "name": "internal" "tenantexternalnetworks": [ "subnetaddress": "10.0.1.0/24", "name": "external" "parameters": [ "description" : "Required parameter. The EC2 region endpoint that BIG-IQ will connect to. This represents a choice of the EC2 geography that is being utilized. See http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region", "displayname" : "Region Endpoint", "id" : "regionendpoint", "isrequired" : true, "value" : "ec2.us-west-2.amazonaws.com" "description" : "Required parameter. The AWS Access Key ID associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Key ID", "id" : "awsaccesskeyid", "isrequired" : true, "value" : "AKIAJ7GRU4S4D6NYQYUA" "description" : "Required parameter. The AWS Secret Access Key associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Secret Key", "id" : "secretaccesskey", "isrequired" : true, "value" : "wg1dx+sl/4ae9xgqtogrvunmlqekdphqfbygvhas" "description" : "Required parameter. The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. For more info, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availability-zones.html", "displayname" : "Availability Zone", "id" : "availabilityzone", "isrequired" : true, "value" : "us-west-2c" "id": "autodeploydevices", "displayname": "Device Elasticity", "isrequired": false, "description": "Preference as to whether Device will be auto-deployed when required to support tenant application deployment. Defaults to true.", "provider": "true" "id": "autodeployservers", "displayname": "Server Elasticity", "isrequired": false, "description": "Preference as to whether Server pool elasticity policies will be offered to tenant. Defaults to true.", "value": "true" "id": "vpcid", "displayname": "Virtual Private Cloud", "isrequired": false, "description": "The EC2 Virtual Private Cloud (VPC) that connector's resources are contained within. A VPC is a network topology inside an availability zone. If none is specified then BIG-IQ will utilize the first VPC discovered in availability zone.", "value": "vpc-cb8f1ba0" "licensereference": "link": "https://localhost/mgmt/cm/shared/licensing/pools/guid1234-guid-1234-guid-1234guid1234" "timezone": "UTC", "ntpservers": [ "nist.time.gov" "dnsserveraddresses": [ "8.8.8.8", "8.8.4.4" "dnssuffixes": [ "example.net", "example.com" "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "generation": 2, "lastupdatemicros": 1379977282698938, "kind": "cm:cloud:connectors:cloudconnectorstate", "selflink": "https://localhost/mgmt/cm/cloud/connectors/ec2/guid1234-guid-1234-guid-1234guid1234" 2-86

Central Management APIs You only specify the name. The cloudreference and connectorid are assigned for you. On successful connection to EC2, it will add all BIG-IP devices in EC2 to the managed devices and all non BIG-IP devices to the node worker. When adding BIG-IP devices to managed devices it uses a dummy user name and password. The cloud administrator will need to correct user name and password field in the managed devices before the EC2 BIG-IP devices are used. Change an EC2 cloud connector Changes a cloud connector. /mgmt/cm/cloud/connectors/ec2/id PUT BIG-IQ API Reference Guide 2-87

Chapter 2 "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid": "GUID1234-GUID-1234-GUID-1234GUID1234", "name": "EC2 Connector Name Changed", "devicereferences": [ "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1235" "managementnetworks": [ "subnetaddress": "10.0.0.0/24", "name": "mgmt" "tenantinternalnetworks": [ "subnetaddress": "10.0.2.0/24", "name": "internal" "tenantexternalnetworks": [ "subnetaddress": "10.0.1.0/24", "name": "external", "gatewayaddress": "10.0.1.1" "parameters": [ "description" : "Required parameter. The EC2 region endpoint that BIG-IQ will connect to. This represents a choice of the EC2 geography that is being utilized. See http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region", "displayname" : "Region Endpoint", "id" : "regionendpoint", "isrequired" : true, "value" : "ec2.us-west-2.amazonaws.com" "description" : "Required parameter. The AWS Access Key ID associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Key ID", "id" : "awsaccesskeyid", "isrequired" : true, "value" : "AKIAJ7GRU4S4D6NYQYUA" "description" : "Required parameter. The AWS Secret Access Key associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Secret Key", "id" : "secretaccesskey", "isrequired" : true, "value" : "wg1dx+sl/4ae9xgqtogrvunmlqekdphqfbygvhas" "description" : "Required parameter. The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. For more info, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availability-zones.html", "displayname" : "Availability Zone", "id" : "availabilityzone", "isrequired" : true, "value" : "us-west-2c" "id": "autodeploydevices", "displayname": "Device Elasticity", "isrequired": false, "description": "Preference as to whether Device will be auto-deployed when required to support tenant application deployment. Defaults to true.", "provider": "true" "id": "autodeployservers", "displayname": "Server Elasticity", "isrequired": false, "description": "Preference as to whether Server pool elasticity policies will be offered to tenant. Defaults to true.", "value": "true" "id": "vpcid", "displayname": "Virtual Private Cloud", "isrequired": false, "description": "The EC2 Virtual Private Cloud (VPC) that connector's resources are contained within. A VPC is a network topology inside an availability zone. If none is specified then BIG-IQ will utilize the first VPC discovered in availability zone.", "value": "vpc-cb8f1ba0" "licensereference": "link": "https://localhost/mgmt/cm/shared/licensing/pools/guid1234-guid-1234-guid-1234guid1234" "timezone": "UTC", "ntpservers": [ "nist.time.gov" "dnsserveraddresses": [ "8.8.8.8", "8.8.4.4" "dnssuffixes": [ "example.net", "example.com" "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "generation": 3, "lastupdatemicros": 1379977282698938, "kind": "cm:cloud:connectors:cloudconnectorstate", "selflink": "https://localhost/mgmt/cm/cloud/connectors/ec2/guid1234-guid-1234-guid-1234guid1234" 2-88

Central Management APIs HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. The generation you specify must be the same as that returned by the most recent GET on the cloud connector. BIG-IQ API Reference Guide 2-89

Chapter 2 Get an EC2 connector Gets a single EC2 cloud connector. /mgmt/cm/cloud/connectors/ec2/id GET 2-90

Central Management APIs "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid": "GUID1234-GUID-1234-GUID-1234GUID1234", "name": "EC2 Connector Name Changed", "devicereferences": [ "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1235" "managementnetworks": [ "subnetaddress": "10.0.0.0/24", "name": "mgmt" "tenantinternalnetworks": [ "subnetaddress": "10.0.2.0/24", "name": "internal" "tenantexternalnetworks": [ "subnetaddress": "10.0.1.0/24", "name": "external" "parameters": [ "description" : "Required parameter. The EC2 region endpoint that BIG-IQ will connect to. This represents a choice of the EC2 geography that is being utilized. See http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region", "displayname" : "Region Endpoint", "id" : "regionendpoint", "isrequired" : true, "value" : "ec2.us-west-2.amazonaws.com" "description" : "Required parameter. The AWS Access Key ID associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Key ID", "id" : "awsaccesskeyid", "isrequired" : true, "value" : "AKIAJ7GRU4S4D6NYQYUA" "description" : "Required parameter. The AWS Secret Access Key associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Secret Key", "id" : "secretaccesskey", "isrequired" : true, "value" : "wg1dx+sl/4ae9xgqtogrvunmlqekdphqfbygvhas" "description" : "Required parameter. The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. For more info, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availability-zones.html", "displayname" : "Availability Zone", "id" : "availabilityzone", "isrequired" : true, "value" : "us-west-2c" "id": "autodeploydevices", "displayname": "Device Elasticity", "isrequired": false, "description": "Preference as to whether Device will be auto-deployed when required to support tenant application deployment. Defaults to true.", "provider": "true" "id": "autodeployservers", "displayname": "Server Elasticity", "isrequired": false, "description": "Preference as to whether Server pool elasticity policies will be offered to tenant. Defaults to true.", "value": "true" "id": "vpcid", "displayname": "Virtual Private Cloud", "isrequired": false, "description": "The EC2 Virtual Private Cloud (VPC) that connector's resources are contained within. A VPC is a network topology inside an availability zone. If none is specified then BIG-IQ will utilize the first VPC discovered in availability zone.", "value": "vpc-cb8f1ba0" "licensereference": "link": "https://localhost/mgmt/cm/shared/licensing/pools/guid1234-guid-1234-guid-1234guid1234" "timezone": "UTC", "ntpservers": [ "nist.time.gov" "dnsserveraddresses": [ "8.8.8.8", "8.8.4.4" "dnssuffixes": [ "example.net", "example.com" "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "generation": 3, "lastupdatemicros": 1379977282698938, "kind": "cm:cloud:connectors:cloudconnectorstate", "selflink": "https://localhost/mgmt/cm/cloud/connectors/ec2/guid1234-guid-1234-guid-1234guid1234" BIG-IQ API Reference Guide 2-91

Chapter 2 Get health of an EC2 cloud connector Gets health of an EC2 cloud connector. /mgmt/cm/cloud/connectors/ec2/id/stats GET "entries": "health.summary": "value": 1, "description": "Connected" "generation": 3, Get all EC2 cloud connectors Gets all EC2 cloud connectors. /mgmt/cm/cloud/connectors/ec2/ GET 2-92

Central Management APIs "items": [ "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid": "GUID1234-GUID-1234-GUID-1234GUID1234", "name": "EC2 Connector Name Changed", "devicereferences": [ "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1235" "managementnetworks": [ "subnetaddress": "10.0.0.0/24", "name": "mgmt" "tenantinternalnetworks": [ "subnetaddress": "10.0.2.0/24", "name": "internal" "tenantexternalnetworks": [ "subnetaddress": "10.0.1.0/24", "name": "external", "gatewayaddress": "10.0.1.1" "parameters": [ "description" : "Required parameter. The EC2 region endpoint that BIG-IQ will connect to. This represents a choice of the EC2 geography that is being utilized. See http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region", "displayname" : "Region Endpoint", "id" : "regionendpoint", "isrequired" : true, "value" : "ec2.us-west-2.amazonaws.com" "description" : "Required parameter. The AWS Access Key ID associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Key ID", "id" : "awsaccesskeyid", "isrequired" : true, "value" : "AKIAJ7GRU4S4D6NYQYUA" "description" : "Required parameter. The AWS Secret Access Key associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Secret Key", "id" : "secretaccesskey", "isrequired" : true, "value" : "wg1dx+sl/4ae9xgqtogrvunmlqekdphqfbygvhas" "description" : "Required parameter. The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. For more info, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availability-zones.html", "displayname" : "Availability Zone", "id" : "availabilityzone", "isrequired" : true, "value" : "us-west-2c" "id": "autodeploydevices", "displayname": "Device Elasticity", "isrequired": false, "description": "Preference as to whether Device will be auto-deployed when required to support tenant application deployment. Defaults to true.", "provider": "true" "id": "autodeployservers", "displayname": "Server Elasticity", "isrequired": false, "description": "Preference as to whether Server pool elasticity policies will be offered to tenant. Defaults to true.", "value": "true" "id": "vpcid", "displayname": "Virtual Private Cloud", "isrequired": false, "description": "The EC2 Virtual Private Cloud (VPC) that connector's resources are contained within. A VPC is a network topology inside an availability zone. If none is specified then BIG-IQ will utilize the first VPC discovered in availability zone.", "value": "vpc-cb8f1ba0" "licensereference": "link": "https://localhost/mgmt/cm/shared/licensing/pools/guid1234-guid-1234-guid-1234guid1234" "timezone": "UTC", "ntpservers": [ "nist.time.gov" "dnsserveraddresses": [ "8.8.8.8", "8.8.4.4" "dnssuffixes": [ "example.net", "example.com" "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "generation": 3, "lastupdatemicros": 1379977282698938, "kind": "cm:cloud:connectors:cloudconnectorstate", "selflink": "https://localhost/mgmt/cm/cloud/connectors/ec2/guid1234-guid-1234-guid-1234guid1234" "generation": 0, "lastupdatemicros": 0, "kind": "cm:cloud:connectors:genericconnectorcollectionworkerstate", "selflink": "https://localhost/mgmt/cm/cloud/connectors/ec2" BIG-IQ API Reference Guide 2-93

Chapter 2 Delete an EC2 cloud connector Deletes an EC2 cloud connector. /mgmt/cm/cloud/connectors/ec2/1816a046-b7ad-424c-8af9-09443e940f93 DELETE 2-94

Central Management APIs "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/ec2" "displayname": "Amazon EC2", "connectorid": "1816a046-b7ad-424c-8af9-09443e940f93", "name": "EC2 Connector Name Changed", "devicereferences": [ "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1235" "managementnetworks": [ "subnetaddress": "10.0.0.0/24", "name": "mgmt" "tenantinternalnetworks": [ "subnetaddress": "10.0.2.0/24", "name": "internal" "tenantexternalnetworks": [ "subnetaddress": "10.0.1.0/24", "name": "external" "parameters": [ "description" : "Required parameter. The EC2 region endpoint that BIG-IQ will connect to. This represents a choice of the EC2 geography that is being utilized. See http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region", "displayname" : "Region Endpoint", "id" : "regionendpoint", "isrequired" : true, "value" : "ec2.us-west-2.amazonaws.com" "description" : "Required parameter. The AWS Access Key ID associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Key ID", "id" : "awsaccesskeyid", "isrequired" : true, "value" : "AKIAJ7GRU4S4D6NYQYUA" "description" : "Required parameter. The AWS Secret Access Key associated with AWS user account that BIG-IQ will impersonate. EC2 uses this to authenticate source of requests sent to the EC2 endpoint.", "displayname" : "Secret Key", "id" : "secretaccesskey", "isrequired" : true, "value" : "wg1dx+sl/4ae9xgqtogrvunmlqekdphqfbygvhas" "description" : "Required parameter. The EC2 availability zone that connector's resources are contained within. An availability zone is a compartment of resources inside a region. For more info, see http://docs.aws.amazon.com/awsec2/latest/userguide/using-regions-availability-zones.html", "displayname" : "Availability Zone", "id" : "availabilityzone", "isrequired" : true, "value" : "us-west-2c" "id": "autodeploydevices", "displayname": "Device Elasticity", "isrequired": false, "description": "Preference as to whether Device will be auto-deployed when required to support tenant application deployment. Defaults to true.", "provider": "true" "id": "autodeployservers", "displayname": "Server Elasticity", "isrequired": false, "description": "Preference as to whether Server pool elasticity policies will be offered to tenant. Defaults to true.", "value": "true" "id": "vpcid", "displayname": "Virtual Private Cloud", "isrequired": false, "description": "The EC2 Virtual Private Cloud (VPC) that connector's resources are contained within. A VPC is a network topology inside an availability zone. If none is specified then BIG-IQ will utilize the first VPC discovered in availability zone.", "value": "vpc-cb8f1ba0" "licensereference": "link": "https://localhost/mgmt/cm/shared/licensing/pools/guid1234-guid-1234-guid-1234guid1234" "timezone": "UTC", "ntpservers": [ "nist.time.gov" "dnsserveraddresses": [ "8.8.8.8", "8.8.4.4" "dnssuffixes": [ "example.net", "example.com" "supportsserverprovisioning": true, "supportsdeviceprovisioning": true, "supportsdevicediscovery": true, "supportsvirtualserverprovisioning": true, "generation": 3, "lastupdatemicros": 1379977282698938, "kind": "cm:cloud:connectors:cloudconnectorstate", "selflink": "https://localhost/mgmt/cm/cloud/connectors/ec2/guid1234-guid-1234-guid-1234guid1234" BIG-IQ API Reference Guide 2-95

Chapter 2 2-96

Central Management APIs OpenStack cloud connector APIs This API allows you to create and manipulate OpenStack cloud connectors. For more information about cloud connectors, see the cloud connector documentation. This API communicates directly with OpenStack and requires version 2013.1 (Grizzly) or later. The OpenStack cloud connector is similar to other cloud connectors, except for the OpenStack-specific parameters. An example description is provided below. "displayname": "OpenStack", "name": "Human-readable name of connector", "description": "A longer description of the connector", "devicereferences": [ ] "parameters": [ "id": "OpenStackUri", "value": "http://172.27.62.40:5000" "id": "OpenStackUserName", "value": "admin" "id": "OpenStackTenantName", "value": "admin" "id": "OpenStackPassword", "value": "Passw0rd" ] Note While the connector documentation describes tenantinternalnetworks, tenantexternalnetworks, and managementnetworks, you should not pass these: they are discovered when querying OpenStack. See the section on Networks, in the properties explanation. Explanation of Properties Field Output only cloudreference Yes A URI for the cloud connector collection in which this connector is contained. displayname Yes The name of the type of the cloud connector in which this is contained. Used for UI display purposes. connectorid Yes The unique identifier of the cloud connector. White space is not allowed. Internally assigned; can not be chosen by the client. supportsserverprovisioning Yes This cloud connector allows you to create new servers (virtual machines). supportsdeviceprovisioning Yes This cloud connector allows you to create new F5 BIG-IP devices. name No A user-friendly name for the property. White space is allowed BIG-IQ API Reference Guide 2-97

Chapter 2 description No A user-friendly description for the property. devicereferences No A set of devices (ADCs) contained within this cloud. Normally you should specify an empty list: devices will be discovered when you connect to OpenStack Parameters for OpenStack cloud connectors Extra parameters for each cloud take the form illustrated in the sample text: "id": "name", "displayname": "Descriptive Name", "description": "Descriptive text about the property", "isrequired": booleanvalue, "value": "somevalue", "provider": "somevalue", Explanation of variables Field id displayname description The name of the property. White space is not allowed. A human-readable version of the property. White space is not allowed. A longer description of the purpose of the property. isrequired A boolean, true or false. value provider A value for the property that is viewable by a tenant. Also a default value, but indicates that a tenant can not edit this value. The value and provider fields are mutually exclusive. Field OpenStackUri OpenStackUserName OpenStackTenantName OpenStackPassword The IP Address or name of the OpenStack Controller. If you do not specify a port, it defaults to 5000. If you not specify a scheme (that is, http or https) it defaults to https. The user name used to authenticate to OpenStack. The tenant name used to authenticate to OpenStack. The password used to authenticate to OpenStack. 2-98

Central Management APIs Create an OpenStack cloud connector Creates a new OpenStack cloud connector. /mgmt/cm/cloud/connectors/openstack POST "name": "human-friendly-name", "description": "some friendly description", "devicereferences":[ "parameters": [ "id": "OpenStackUri", "value": "http://172.27.62.40:5000" "id": "OpenStackUserName", "value": "admin" "id": "OpenStackTenantName", "value": "admin" "id": "OpenStackPassword", "value": "Passw0rd" HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. Change an OpenStack cloud connector Changes an OpenStack cloud connector. /mgmt/cm/cloud/connectors/openstack/id PUT BIG-IQ API Reference Guide 2-99

Chapter 2 "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "parameters": [ "id": "OpenStackUri", "value": "http://172.27.62.40:5000" "id": "OpenStackUserName", "value": "admin" "id": "OpenStackTenantName", "value": "admin" "id": "OpenStackPassword", "value": "Passw0rd" "generation": 1 HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. The generation you specify must be the same as that returned by the most recent GET on the cloud connector. Get an OpenStack cloud connector Gets a single OpenStack cloud connector. /mgmt/cm/cloud/connectors/openstack/id GET 2-100

Central Management APIs "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/openstack" "displayname": "OpenStack", "connectorid": "ca5cd4f7-e3ac-4535-9f12-11ec0a6c9a0e", "supportsserverprovisioning": true, "supportsdeviceprovisioning": false, "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/c1492d9c-1894-4f6d-9efc-3bbb36b3595b" "tenantinternalnetworks": [ "subnetaddress": "1.2.3.0/24", "gatewayaddress": "1.2.3.1" "tenantexternalnetworks": [ "subnetaddress": "4.5.6.0/24", "gatewayaddress": "4.5.6.1" "managementnetworks": [ "subnetaddress": "7.8.9.0/24", "gatewayaddress": "7.8.9.0/24" "parameters": [ "id": "OpenStackUri", "value": "http://172.27.62.40:5000" "id": "OpenStackUserName", "value": "admin" "id": "OpenStackTenantName", "value": "admin" "id": "OpenStackPassword", "value": "Passw0rd" "generation": 1 Get health of an OpenStack cloud connector Gets health of an OpenStack cloud connector. /mgmt/cm/cloud/connectors/openstack/id/stats GET BIG-IQ API Reference Guide 2-101

Chapter 2 "entries": "health.summary": "value": 1, "description": "OpenStack setup is healthy: Successfully connected" "generation": 3, 2-102

Central Management APIs Get all OpenStack cloud connector Gets all OpenStack cloud connectors. /mgmt/cm/cloud/connectors/openstack/ GET "items": [ "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/openstack" "displayname": "OpenStack", "connectorid": "ca5cd4f7-e3ac-4535-9f12-11ec0a6c9a0e", "supportsserverprovisioning": true, "supportsdeviceprovisioning": false, "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/c1492d9c-1894-4f6d-9efc-3bbb36b3595b" "tenantinternalnetworks": [ "subnetaddress": "1.2.3.0/24", "gatewayaddress": "1.2.3.1" "tenantexternalnetworks": [ "subnetaddress": "4.5.6.0/24", "gatewayaddress": "4.5.6.1" "managementnetworks": [ "subnetaddress": "7.8.9.0/24", "gatewayaddress": "7.8.9.0/24" "parameters": [ "id": "OpenStackUri", "value": "http://172.27.62.40:5000" "id": "OpenStackUserName", "value": "admin" "id": "OpenStackTenantName", "value": "admin" "id": "OpenStackPassword", "value": "Passw0rd" "generation": 1 ] BIG-IQ API Reference Guide 2-103

Chapter 2 Delete an OpenStack cloud connector Deletes an OpenStack cloud connector. /mgmt/cm/cloud/connectors/openstack/id DELETE HTTP/1.1 200 OK 2-104

Central Management APIs VMware cloud connector APIs With the VMware cloud connector API, you can create and manipulate VMware cloud connectors. For more information about cloud connectors, see the cloud connector documentation. The VMware cloud connector API communicates directly with VMware vshield Manager version 5.1.1, or NSX version 6.0 or later. You can create tenant services within VMware after a VMware cloud connector has been created. You can use either the vshield service insertion interface or the NSX Edge Gateway Services to create the connector. Normally you specify the tenant in VMware when inserting a service profile. The vshield 5.1.1 has a user interface for this, but VMware NSX does not. When using NSX, give only one tenant access to a specific VMware connector, and BIG-IQ system then selects that tenant when it receives the service insertion request. You can also create tenant services using the vcloud Director interface for Edge Gateways. If you use vcloud Director, you still need vshield Manager. In this document, the term vshield, means vshield or vcloud or NSX.A VMware cloud connector is similar to other cloud connectors, except for the VMware-specific parameters. An example description is provided below: "displayname": "VMware vshieldmanager", "name": "Human-readable name of connector", "description": "A longer description of the connector", "devicereferences": [ "link": "https://172.27.2.2/mgmt/cm/cloud/managed-devices/4a0338b2-1974-876e-bbd3-48d0a68ca3c0" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [ "id": "vshieldaddress", "value": "192.0.2.1" "id": "vshieldusername", "value": "username" "id": "vshieldpassword", "value": "passw0rd" "id": "bigiqcallbackuser", "value": "username" "id": "bigiqcallbackpassword", "value": "passw0rd" BIG-IQ API Reference Guide 2-105

Chapter 2 Explanation of Properties Field Output only cloudreference Yes A URI for the cloud connector collection in which this connector is contained. displayname Yes The name of the type of the cloud connector in which this is contained. Used for UI display purposes. connectorid Yes The unique identifier of the cloud connector. White space is not allowed. Internally assigned--may not be chosen by the client. name No A user-friendly name for the property. White space is allowed description No A user-friendly description for the property. devicereferences No A set of devices (ADCs) contained within this cloud. tenantinternalnetworks No A description of the private network(s) within the cloud. The ADCs will be on these networks. tenantexternalnetworks No A description of the public network(s) that can enter this cloud. The virtual servers will be on these networks. managementnetworks A description of the management network(s) used to access this cloud. The BIG-IP system management interfaces reside on these networks Parameters for VMware cloud connectors Extra parameters for each cloud take the form illustrated in the sample text: "id": "name", "displayname": "Descriptive Name", "description": "Descriptive text about the property", "isrequired": booleanvalue, "value": "somevalue", "provider": "somevalue", 2-106

Central Management APIs Explanation of variables Field id displayname description The name of the property. White space is not allowed. A human-readable version of the property. White space is not allowed. A longer description of the purpose of the property. isrequired A boolean, true or false. value provider A value for the property that is viewable by a tenant. Also a default value, but indicates that a tenant can not edit this value. The value and provider fields are mutually exclusive. Field vshieldaddress vshieldusername vshieldpassword bigiqcallbackuser bigiqcallbackpassword The IP Address or name of the VMware vshield Manager. The user name used to authenticate to the VMware vshield Manager. The password used to authenticate to the VMware vshield Manager. The username used by vshield to communicate with the BIG-IQ Cloud. The password used by vshield to communicate with the BIG-IQ Cloud. BIG-IQ API Reference Guide 2-107

Chapter 2 Create a VMware cloud connector Creates a new VMware cloud connector. /mgmt/cm/cloud/connectors/vmware POST "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [ "id": "vshieldaddress", "value": "192.0.2.1" "id": "vshieldusername", "value": "username" "id": "vshieldpassword", "value": "passw0rd" "id": "bigiqcallbackuser", "value": "username" "id": "bigiqcallbackpassword", "value": "passw0rd" HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. Change a VMware cloud connector Changes a cloud connector. /mgmt/cm/cloud/connectors/vmware/id PUT 2-108

Central Management APIs "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [ "id": "vshieldaddress", "value": "192.0.2.1" "id": "vshieldusername", "value": "username" "id": "vshieldpassword", "value": "passw0rd" "id": "bigiqcallbackuser", "value": "username" "id": "bigiqcallbackpassword", "value": "passw0rd" "generation": 1 HTTP/1.1 201 Created You only specify the name. The cloudreference and connectorid are assigned for you. The generation you specify must be the same as that returned by the most recent GET on the cloud connector. You cannot update a VMware cloud connector's address after the connection has been successfully created and configured. BIG-IQ API Reference Guide 2-109

Chapter 2 Get a VMware cloud connector Gets a single VMware cloud connector. /mgmt/cm/cloud/connectors/vmware/id GET "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/vmware" "displayname": "VMware vshield Manager", "connectorid": "unique-id", "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [ "id": "vshieldaddress", "value": "192.0.2.1" "id": "vshieldusername", "value": "username" "id": "vshieldpassword", "value": "passw0rd" "id": "bigiqcallbackuser", "value": "username" "id": "bigiqcallbackpassword", "value": "passw0rd" "generation": 1 2-110

Central Management APIs Get health of a VMware cloud connector Gets health of a VMware cloud connector. /mgmt/cm/cloud/connectors/vmware/id/stats GET "entries": "health.summary": "value": 1, "description": "vshield is configured and ready to use" "generation": 3, Get all VMware cloud connector Gets all VMware cloud connectors. /mgmt/cm/cloud/connectors/vmware/ GET BIG-IQ API Reference Guide 2-111

Chapter 2 "items": [ "cloudreference": "link: "http://localhost/mgmt/cm/cloud/connectors/vmware" "displayname": "VMware vshield Manager", "connectorid": "unique-id", "name": "human-friendly-name", "description": "some friendly description", "devicereferences": [ "link": "http://localhost/mgmt/cm/cloud/managed-devices/guid" "tenantinternalnetworks": [ "subnetaddress": "10.10.0.0/24", "gatewayaddress": "10.10.0.1" "tenantexternalnetworks": [ "subnetaddress": "192.168.1.0/24", "gatewayaddress": "192.168.1.254" "managementnetworks": [ "subnetaddress": "172.27.0.0/16", "gatewayaddress": "172.27.22.254" "parameters": [ "id": "vshieldaddress", "value": "192.0.2.1" "id": "vshieldusername", "value": "username" "id": "vshieldpassword", "value": "passw0rd" "id": "bigiqcallbackuser", "value": "username" "id": "bigiqcallbackpassword", "value": "passw0rd" "generation": 1 Delete a VMware cloud connector Deletes a VMware cloud connector. /mgmt/cm/cloud/connectors/vmware/id DELETE 2-112

Central Management APIs HTTP/1.1 200 OK BIG-IQ API Reference Guide 2-113

Chapter 2 Cloud managed devices APIs These APIs add, delete, and view the list of managed devices. Devices are added and deleted in an asynchronous manner. Initial POSTs respond with a 202 ACCEPTED and the device state is set to PENDING. Eventually the device state changes to ACTIVE or POST_FAILED. DELETE is similar, and responds with 202 ACCEPTED if the device cannot be immediately deleted (state is changed to PENDING_DELETE). States Devices have a state field to indicate whether the device is ready for use or in some transitional state. State PENDING POST_FAILED ACTIVE PENDING_DELETE DELETED After the initial POST but before the device is ready for use; discovery task is in progress. Some error occurred during discovery, check error field for details. Device is ready for use. Device is currently being deleted and will be removed in the near future (set on delete or if you PATCH the device to the DELETED state). This state is only used when you do a you PATCH to delete a device or when you publish to subscribers when the device is finally deleted; it is never persisted. 2-114

Central Management APIs Get managed devices Gets the list of managed devices /cm/cloud/managed-devices GET N/A N/A BIG-IQ API Reference Guide 2-115

Chapter 2 "selflink" : "https://localhost/mgmt/cm/cloud/managed-devices", "kind" : "cm:cloud:managed-devices:manageddevicecollectionstate", "generation" : 4, "lastupdatemicros" : 1362699861357636, "items" : [ "clockskewsecondscount" : -65, "version" : "11.3.0", "defaultfirewallaction" : "accept", "lastupdatemicros" : 1362699785584266, "hostname" : "<hostname>", "build" : "3016.0", "restframeworkversion": "11.5.0-0.0.195", "state" : "ACTIVE", "selflink" : "https://localhost/mgmt/cm/cloud/managed-devices/670236b650064b61803bb0592e64aa19", "kind" : "cm:cloud:managed-devices:manageddevicestate", "generation" : 1, "edition" : "Hotfix HF2", "product" : "BIG-IP", "id" : "670236b650064b61803bb0592e64aa19", "address" : "172.27.95.22", "systemid" : "39DA5FD6-1974-F062-E843-8D6CBEBAF3F6" "clockskewsecondscount" : 13, "version" : "11.4.0", "defaultfirewallaction" : "accept", "lastupdatemicros" : 1362699395092820, "hostname" : "<hostname>", "build" : "354.0", "restframeworkversion": "11.5.0-0.0.195", "state" : "ACTIVE", "selflink" : "https://localhost/mgmt/cm/cloud/managed-devices/a3dadffe649f4d6dab4a8a834c6adff5", "kind" : "cm:cloud:managed-devices:manageddevicestate", "generation" : 1, "edition" : "Final", "product" : "BIG-IP", "id" : "a3dadffe649f4d6dab4a8a834c6adff5", "address" : "172.27.95.13", "systemid" : "4580C043-1974-3AFF-4F48-7F17AC105870" ] 2-116

Central Management APIs Field islocal version lastupdatemicros hostname selflink kind generation clockskewseconds id address product systemid True if this device is localhost. Product version. Last time this device state was updated. Host name of the devices. URI of this managed device object. Kind value. Generation of this state object. Clock skew between the managed device and the local device. ID of this device. Address of the device. Product code (typically, EM or BIG-IP). ID as reported by managed device. BIG-IQ API Reference Guide 2-117

Chapter 2 Add a managed device Adds a managed device. /mgmt/cm/cloud/managed-devices POST N/A "deviceaddress" : "10.10.0.5", "username" : "admin", "password" : "adminpassword", "automaticallyupdateframework" : "true" HTTP/1.1 202 ACCEPTED "selflink" : "https://localhost/mgmt/cm/cloud/managed-devices/a3dadffe649f4d6dab4a8a834c6adff5", "kind" : "cm:cloud:managed-devices:manageddevicestate", "generation" : 0, "lastupdatemicros" : 0, "address" : "172.27.95.13", "automaticallyupdateframework" : "true", "id" : "a3dadffe649f4d6dab4a8a834c6adff5", "state" : "PENDING" Device setup takes place asynchronously and GET requests can be used to POLL the state of discovery. Recover a device in the POST_FAILED state If the device POST fails, the state will be POST_FAILED) discovery can be restarted by doing a device PATCH with a new password and optionally a new user name. The device discovery will be restarted with the new parameters. /mgmt/cm/cloud/managed-devices/<device-id> PATCH 2-118

Central Management APIs N/A "state" : "ACTIVE", "username" : "admin", "password" : "adminpassword" HTTP/1.1 202 ACCEPTED "selflink" : "https://localhost/mgmt/cm/cloud/managed-devices/a3dadffe649f4d6dab4a8a834c6adff5", "kind" : "cm:cloud:managed-devices:manageddevicestate", "generation" : 0, "lastupdatemicros" : 0, "address" : "172.27.95.13", "id" : "a3dadffe649f4d6dab4a8a834c6adff5", "state" : "PENDING" Device setup takes place asynchronously and GETs can be used to POLL the state of discovery. Delete a managed device Deletes the specified managed device. /mgmt/cm/cloud/managed-devices/<device-id> DELETE N/A BIG-IQ API Reference Guide 2-119

Chapter 2 HTTP/1.1 202 ACCEPTED "clockskewsecondscount" : 13, "hostname" : "<hostname>", "state" : "PENDING_DELETE", "selflink" : "https://localhost/mgmt/cm/cloud/managed-devices/a3dadffe649f4d6dab4a8a834c6adff5", "kind" : "cm:cloud:managed-devices:manageddevicestate", "edition" : "Final", "adminuser" : "admin", "icontrolkeyfile" : "/config/bigiq/ssl.key/bigiq-a7790cec-4d58-4067-83eb-2344cbabe60c.key", "id" : "a3dadffe649f4d6dab4a8a834c6adff5", "address" : "172.27.95.13", "emserverip" : "172.27.95.54", "icontrolcertfile" : "/config/bigiq/ssl.crt/bigiq-a7790cec-4d58-4067-83eb-2344cbabe60c.crt", "version" : "11.4.0", "lastupdatemicros" : 1362699861357636, "build" : "354.0", "restframeworkversion": "11.5.0-0.0.195", "icontrolcertid" : "127.0.1.1", "generation" : 2, "systemid" : "4580C043-1974-3AFF-4F48-7F17AC105870", "product" : "BIG-IP" Note the PENDING_DELETE state. Eventually the device will be removed from the list (10-20 seconds). This allows internal cleanup to take place before removing the device. 2-120

Central Management APIs Cloud licensing APIs This read-only worker responds to GET requests with the cloud's license status. Get license status Gets the current status of the cloud license. /mgmt/cm/cloud/license GET N/A BIG-IQ API Reference Guide 2-121

Chapter 2 A successful response will look similar to one of these three. "islicensed":true, "licensingmessage":"cloud license active. ", "maximumnodecount":2147483647, "currentnodecount":0, "generation":0, "lastupdatemicros":0, "kind":"cm:cloud:license:cloudlicensestate", "selflink":"https://localhost/mgmt/cm/cloud/license" "islicensed":true, "licensingmessage":"cloud license active. 0 out of 1000 nodes being used. ", "maximumnodecount":1000, "currentnodecount":0, "generation":0, "lastupdatemicros":0, "kind":"cm:cloud:license:cloudlicensestate", "selflink":"https://localhost/mgmt/cm/cloud/license" "islicensed":false, "licensingmessage":"cloud license missing. ", "maximumnodecount":0, "currentnodecount":0, "generation":0, "lastupdatemicros":0, "kind":"cm:cloud:license:cloudlicensestate", "selflink":"https://localhost/mgmt/cm/cloud/license" Note the PENDING_DELETE state, eventually the device will be removed from the list (10-20s). This allows internal cleanup to take place before removing the device. 2-122

Central Management APIs EC2 nodes APIs Use these APIs to get, create, or delete EC2 nodes. Get EC2 node stats Gets statistics of a node that is managed in EC2. /cm/cloud/connectors/ec2/<connector-id>/nodes/<node-id>/stats GET N/A N/A BIG-IQ API Reference Guide 2-123

Chapter 2 HTTP/1.1 200 OK "entries" : "health.summary.80" : "value" : 0, "description" : "availability_state: AVAIL_BLUE", "lastupdatemicros" : 3509238509342 "health.stats.serverside.bytes-in" : "value" : 0, "description" : "SERVERSIDE: bytes-in", "lastupdatemicros" : 1235423502345 "health.stats.80.serverside.bytes-in" : "value" : 0, "description" : "SERVERSIDE: bytes-in" "generation" : 16, "lastupdatemicros" : 235239408659082346. "kind" : "cm:cloud:connectors:ec2:72d5df3b-5e89-4c22-a7f0-44770cd28e83:nodes:3cd97f31-2208-4c bd-acbd-73a5942fbb40:stats:restworkerstats", "selflink" : "https://localhost/mgmt/cm/cloud/connectors/ec2/72d5df3b-5e89-4c22-a7f0-44770cd28e83/no des/3cd97f31-2208-4cbd-acbd-73a5942fbb40/stats" 2-124

Central Management APIs Create node in EC2 Creates a node in EC2. /cm/cloud/connectors/ec2/<connector-id>/nodes POST N/A BIG-IQ API Reference Guide 2-125

Chapter 2 "properties" : [ "id" : "ImageId", "value" : "ami-abcd1234", "isrequired" : true "id" : "InstanceType", "value" : "m1.large", "isrequired" : false "id" : "DeviceMgmtUser", "value" : "admin" "isrequired": false, "description": "User account to use for managing this device - this is only relevant when node represents a managed device. If unspecified then it will default to admin", "id" : "DeviceMgmtPassword", "value" : "Str)ngP@ssw0rd", "isrequired": false, "description": "Password to use for managing this device - this is only relevant when node represents a managed device. If unspecified then it will be auto-generated for BIG-IQ Cloud provisioned BIG-IP devices and otherwise set to default admin password", "networkinterfaces" : [ "localaddress" : "172.27.62.95", "virtualaddress" : "1.1.1.1", "subnetaddress" : "172.27.62.0/24" "virtualaddress": "0.0.0.0", "subnetaddress" : "10.10.10.0/24" "subnetaddress" : "10.10.20.0/24" "provideronly" : true, "devicediscoveryinterface": 1 2-126

Central Management APIs HTTP/1.1 201 Created "items" : [ "nodeid" : "73120fcb-5be0-4ea5-a0ab-260019abf18e", "cloudconnectorreference" : "link" : "https://localhost/cm/cloud/connectors/ec2/4bcf6ac5-7e52-ada2-3fa26103dfdc" "properties" : [ "id" : "ImageId", "isrequired": true, "value" : "ami-abcd1234" "id" : "InstanceType", "isrequired": false, "value" : "m1.large" "id" : "InstanceId", "isrequired": false, "value" : "i-2693bd3d" "id" : "KeyName", "isrequired": false, "value" : "f5-bigiq-keypair-8b2a8663-f4c1-4b88-9a1c-63fe214d7273" "id" : "KeyPrivate", "isrequired": false, "value" : "-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEAnOkNn+y3A3j6RJg6Wp+pE+fmkE73eEn5akdhoe+n1oUrmESt7n9u5FRXvpiphn5p43hExeQZPSJg9OsLTWbj34k JaZ1mPYXSbkdKOYurhZhFXHhteu1VjdBDtKs8OBGG2AyFsqFMPRhcvCchDDCcpV90F+QkF1sfe2T9SAdJauCwX1LaPcyfG+cb9xOoWzLAvx MT/Stv9M15pkQXVlr4KM19fas2LyxfUXOjkCWOSp+FITYyTAW/G2Z6KpBzuckezm9d/5M75q6D2DmO3u2c9SKdwEZ4OWWQJ8VDk2+dwuJn4 gvuyjqlv3em/ddvwfvqb2+vesfyqypyzrbgaqgfpwidaqabaoibagapuruez904ntwi3vmfrk/bm4x94sncciicwee101nxv9aojdxjg92o95 WASca8WFAzq5hB6PFZyFAuVjvolefltb5QAKUUFKC6flyw25M+HZA8syrXeMVyLN8p0fnAEwii3r0Myz1f8DWXyfUizTEW/FYlbCXMDP7l2tw6zx VI9CWIBA3KJQzeP3H1FuRqwe3LYzsMl53MTGEBoyyCZEQEGgWke6zkEPBUVlNxr26J0oGp7NcRjd7d7GxTQTjsZj3PzUcdgLaRyL715pVoru EvMi/vuqcjnveCVOEMc2xHiGlc/VGb0ap/Qf9fFepo49T5MsTwFrvbCBKsNv7x9cECgYEA0MsC0RQ9yabEj9kPLwcLnsztC3pr5K88QIVVdU9263i vrrx+m4upbwtklgo9ml8kjhvuibiweovmnybihoy8ftnh4dbcrvwnkkizw2qi1krcimsrulmako0rolmzwiw9qifwzrp1disee8pkyvyrvyp98u 14vDAwgF5u54I95qECgYEAwGMP8bN/gYdOfndt5+uRBZRvTnuXAP5R+gG+GX6+tLwRB8/UimqT7K9Ic3XdyQ+ImZrKQiK2BpRXyipMdYTvRz EeWu8EyDwg3PyYZJ1uJag3qylzAQrOza8cKXn7o3iE0AKpdOG5z7MlDD3Tb6NcNdQi7GnpQX0fiSiIAo0wGd8CgYAH42Ob2pPrBm3usVitgiqiO UPLZzikTyqLlX4BDJuFke2xQBb2g1RqA3hT2uDO8qjHba61b7hfsOFlu8Z9wLyQXhQYn/Kgec5U7IFCrMiyJ+jpqdnljH25HdNEzRbFhabewpuw7A r8b+whcqi8ymeo70es2kxzd68faovugzgtgqkbgqcqwmyswicdy3hyoi2ddizbwq3rc1ngmm+js9m0h2rja0cdikp0l6xtpumsoofremse JdYDO1LrfnxBULTEtgFcixxyrgMQ/VSn961EIbV++HTaRGhFOvmkW/HWs+DhfPw0Zrb+/EOXqesa7L+DsSUbsIt/w8O6rfy3aMENaVB3BwKBgQ Czm4tkFf4oaHpmVpRxD5oyz9IkDw+hvqlhTK801/6xyEhJg5nNzp20TVpfPDV3XJ/1FlpRjq37J7FloI37YkBTvINQMTHMH10/lUsG2ws6UqA/1nCI y7r87qgkc1f0/plj8jk1d5slelmhkt6rfic8t0fezo8pq9dsf3kgt0xyha==-----end RSA PRIVATE KEY-----" "id" : "DeviceMgmtUser", "value" : "admin" "isrequired": false, "description": "User account to use for managing this device - this is only relevant when node represents a managed device. If unspecified then it will default to admin", "id" : "DeviceMgmtPassword", "value" : "Str)ngP@ssw0rd", "isrequired": false, "description": "Password to use for managing this device - this is only relevant when node represents a managed device. If unspecified then it will be auto-generated for BIG-IQ Cloud provisioned BIG-IP devices and otherwise set to default admin password", "ipaddress" : "10.10.10.199", "networkinterfaces" : [ "localaddress" : "172.27.62.95", "virtualaddress" : "1.1.1.1", "subnetaddress" : "172.27.62.0/24" "localaddress" : "10.10.10.199", "virtualaddress" : "3.3.3.3", "subnetaddress" : "10.10.10.0/24" "localaddress" : "10.10.20.23", "subnetaddress" : "10.10.20.0/24" "state" : "STARTING", "provider" : false, "services" : [ "devicediscoveryinterface": 1, "devicereference": "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" ] BIG-IQ API Reference Guide 2-127

Chapter 2 2-128

Central Management APIs Query for all EC2 nodes Gets all the nodes associated with a specific cloud connector. /cm/cloud/connectors/ec2/<connector-id>/nodes GET N/A N/A BIG-IQ API Reference Guide 2-129

Chapter 2 <span style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; font-size: x-small;"><span style="white-space: normal;">http/1.1 200 OK "items" : [ "nodeid" : "73120fcb-5be0-4ea5-a0ab-260019abf18e", "cloudconnectorreference" : "link" : "https://localhost/cm/cloud/connectors/ec2/4bcf6ac5-75e2-ada2-3fa26103dfdc" "properties" : [ "id" : "ImageId", "value" : "ami-abcd1234" "id" : "InstanceType", "value" : "m1.large" "id" : "InstanceId", "value" : "i-2693bd3d" "id" : "KeyName", "value" : "f5-bigiq-keypair-8b2a8663-f4c1-4b88-9a1c-63fe214d7273" "id" : "KeyPrivate", "value" : "-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEAnOkNn+y3A3j6RJg6Wp+pE+fmkE73eEn5akdhoe+n1oUrmESt7n9u5FRXvpiphn5p43hExeQZPSJg9OsL TWbj34kJaZ1mPYXSbkdKOYurhZhFXHhteu1VjdBDtKs8OBGG2AyFsqFMPRhcvCchDDCcpV90F+QkF1sfe2T9SAdJauCwX1LaPcyfG +cb9xoowzlavxmt/stv9m15pkqxvlr4km19fas2lyxfuxojkcwosp+fityytaw/g2z6kpbzuckezm9d/5m75q6d2dmo3u2c9skdwe Z4OWWQJ8VDk2+dwuJn4gVUYJQlV3EM/DdVWfvqb2+vEsfyqypyZRBGaqGfPwIDAQABAoIBAGaPurUez904NTWi3vmfRK/bM4x94S ncciicwee101nxv9aojdxjg92o95wasca8wfazq5hb6pfzyfauvjvolefltb5qakuufkc6flyw25m+hza8syrxemvyln8p0fnaewii3r 0Myz1f8DWXyfUizTEW/FYlbCXMDP7l2tw6zxVI9CWIBA3KJQzeP3H1FuRqwe3LYzsMl53MTGEBoyyCZEQEGgWke6zkEPBUVlNxr26 J0oGp7NcRjd7d7GxTQTjsZj3PzUcdgLaRyL715pVoruEvMi/vuqcjnveCVOEMc2xHiGlc/VGb0ap/Qf9fFepo49T5MsTwFrvbCBKsNv7x9c ECgYEA0MsC0RQ9yabEj9kPLwcLnsztC3pr5K88QIVVdU9263ivrrX+M4UPBwTKlGO9ML8KjhvuIBiWeovmNyBIHoY8ftNh4dBcrvwnkki Zw2qi1krCimsRuLMAKo0ROlmzWIw9qiFWzRp1disEe8PKyvYRVyP98U14vDAwgF5u54I95qECgYEAwGMP8bN/gYdOfndt5+uRBZRv TnuXAP5R+gG+GX6+tLwRB8/UimqT7K9Ic3XdyQ+ImZrKQiK2BpRXyipMdYTvRzEeWu8EyDwg3PyYZJ1uJag3qylzAQrOza8cKXn7o3i E0AKpdOG5z7MlDD3Tb6NcNdQi7GnpQX0fiSiIAo0wGd8CgYAH42Ob2pPrBm3usVitgiqiOUPLZzikTyqLlX4BDJuFke2xQBb2g1RqA3h T2uDO8qjHba61b7hfsOFlu8Z9wLyQXhQYn/Kgec5U7IFCrMiyJ+jpqdnljH25HdNEzRbFhabewpuw7Ar8B+wHcQI8YMeO70Es2KxzD68 FaovuGzGTgQKBgQCqWMysWiCDY3hYOI2DdizBwQ3Rc1NgmM+jS9m0H2rjA0cdIKP0L6xtPUMsoOfReMSeJdYDO1LrfnxBULTEtgF cixxyrgmq/vsn961eibv++htarghfovmkw/hws+dhfpw0zrb+/eoxqesa7l+dssubsit/w8o6rfy3amenavb3bwkbgqczm4tkff4oah pmvprxd5oyz9ikdw+hvqlhtk801/6xyehjg5nnzp20tvpfpdv3xj/1flprjq37j7floi37ykbtvinqmthmh10/lusg2ws6uqa/1nciy7r87 QGKc1F0/pLJ8jk1d5SLELMHkt6rfIc8T0fEzo8pQ9DSF3Kgt0XyhA==-----END RSA PRIVATE KEY-----" "state" : "RUNNING", "ipaddress" : "10.10.10.10", "networkinterfaces" : [ "localaddress" : "172.27.62.95", "virtualaddress" : "1.1.1.1", "subnetaddress" : "172.27.62.0/24"" "localaddress" : "10.10.10.10", "virtualaddress" : "3.3.3.3", "subnetaddress" : "10.10.10.0/24" "localaddress" : "10.10.20.20", "subnetaddress" : "10.10.20.0/24" "provider" : false, "services" : [ ] ] </span></span> 2-130

Central Management APIs networkinterfaces is an ordered list with the first position representing eth0, second position representing eth1, etcetera. Delete node in EC2 Deletes a node in EC2. /cm/cloud/connectors/ec2/<connector-id>/nodes/<node-id> DELETE N/A BIG-IQ API Reference Guide 2-131

Chapter 2 HTTP/1.1 200 OK "items" : [ "nodeid" : "73120fcb-5be0-4ea5-a0ab-260019abf18e", "cloudconnectorreference" : "https://localhost/cm/cloud/connectors/ec2/4bcf6ac5-7e52-ada2-3fa26103dfdc" "properties" : [ "id" : "ImageId", "value" : "ami-abcd1234" "id" : "InstanceType", "value" : "m1.small" "id" : "InstanceId", "value" : "i-2693bd3d" "state" : "DELETED", "ipaddress" : "10.10.10.10", "networkinterfaces" : [ "localaddress" : "172.27.62.95", "virtualaddress" : "1.1.1.1", "subnetaddress" : "172.27.62.0/24" "localaddress" : "10.10.10.10", "virtualaddress" : "3.3.3.3", "subnetaddress" : "10.10.10.0/24" "localaddress" : "10.10.20.20", "subnetaddress" : "10.10.20.0/24" "provider" : false, "services" : [ "serviceport" : "80", "servicereference" : "link" : "https://localhost/cm/cloud/tenants/soda2/services/iapp/soda2http" ] 2-132

Central Management APIs Deleting the Elastic Network Interfaces (ENIs) (Also referred to as NICs) when instances are terminated. Problem: Previously, when we terminate the instance, its ENIs are not deleted. There is a limited number of ENIs allowed. We create and assign the ENIs when an instance is created. Approach: 1. Deletes the ENIs when the instance is deleted. When an instance is deleted, we get a callback. We tried deleting the ENI here but we get an "in-use" error. This is because the instance goes through various state transitions and the ENI is still being in-use. We cannot detach the ENI here because the attachment ID is gone. 2. Mark the delete-on-termination flag in the ENI object during instance creation. We ran into specific issues: a. Set delete-on-termination when RunInstances creates ENIS: this works fine but creates problems with Elastic IP addresses b. Set delete-on-termination when RunInstances attaches existing ENIs: this is not supported by EC2 c. Set delete-on-termination after create ENIS but before calling RunInstances: is not supported since there is no attachment ID 3. Mark delete-on-termination right before TerminateInstances. This approach works. When terminateinstances() is called, BIG-IQ Cloud: a. Retrieves the list of NICs for the specified list of instances b. Marks delete-on-termination flag on each NIC c. Continues with terminating the instance Testing: To verify the NICs are actually deleted, we need to verify on EC2 the NICS are deleted. F5 wrote an EC2 test worker that allows the EC2 integration to call AWS indirectly to get a list of NICs. At the end of the integration test, we make this call and verify that there are no NICs in an "available" state, that is, left hanging around. Modify node secondary and virtual addresses in EC2 Modifies node secondary and virtual addresses in EC2. /cm/cloud/connectors/ec2/<connector-id>/nodes/<node-id> PATCH N/A BIG-IQ API Reference Guide 2-133

Chapter 2 "networkinterfaces" : [ "localaddress" : "172.27.62.95", "subnetaddress" : "172.27.62.0/24" "localaddress": "10.10.10.199", "virtualaddress": "3.3.3.3", "subnetaddress" : "10.10.10.0/24", "secondaryaddresses": [ "virtualaddress": "0.0.0.0" "virtualaddress": "2.2.2.2", "localaddress": "10.10.10.173" ] "subnetaddress" : "10.10.20.0/24" "provideronly" : true 2-134

Central Management APIs HTTP/1.1 201 Created "items" : [ "nodeid" : "73120fcb-5be0-4ea5-a0ab-260019abf18e", "cloudconnectorreference" : "link" : "https://localhost/cm/cloud/connectors/ec2/4bcf6ac5-7e52-ada2-3fa26103dfdc" "properties" : [ "id" : "ImageId", "isrequired": true, "value" : "ami-abcd1234" "id" : "InstanceType", "isrequired": false, "value" : "m1.large" "id" : "InstanceId", "isrequired": false, "value" : "i-2693bd3d" "id" : "KeyName", "isrequired": false, "value" : "f5-bigiq-keypair-8b2a8663-f4c1-4b88-9a1c-63fe214d7273" "id" : "KeyPrivate", "isrequired": false, "value" : "-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEAnOkNn+y3A3j6RJg6Wp+pE+fmkE73eEn5akdhoe+n1oUrmESt7n9u5FRXvpiphn5p43hExeQZPSJg9OsLTWbj34kJaZ1mPYXSbkd KOYurhZhFXHhteu1VjdBDtKs8OBGG2AyFsqFMPRhcvCchDDCcpV90F+QkF1sfe2T9SAdJauCwX1LaPcyfG+cb9xOoWzLAvxMT/Stv9M15pkQXVlr4KM19fas2 LyxfUXOjkCWOSp+FITYyTAW/G2Z6KpBzuckezm9d/5M75q6D2DmO3u2c9SKdwEZ4OWWQJ8VDk2+dwuJn4gVUYJQlV3EM/DdVWfvqb2+vEsfyqypyZRBGaq GfPwIDAQABAoIBAGaPurUez904NTWi3vmfRK/bM4x94SnCCIIcWEe101nXv9AOjDXJG92o95WASca8WFAzq5hB6PFZyFAuVjvolefltb5QAKUUFKC6flyw25M+ HZA8syrXeMVyLN8p0fnAEwii3r0Myz1f8DWXyfUizTEW/FYlbCXMDP7l2tw6zxVI9CWIBA3KJQzeP3H1FuRqwe3LYzsMl53MTGEBoyyCZEQEGgWke6zkEPBU VlNxr26J0oGp7NcRjd7d7GxTQTjsZj3PzUcdgLaRyL715pVoruEvMi/vuqcjnveCVOEMc2xHiGlc/VGb0ap/Qf9fFepo49T5MsTwFrvbCBKsNv7x9cECgYEA0MsC0R Q9yabEj9kPLwcLnsztC3pr5K88QIVVdU9263ivrrX+M4UPBwTKlGO9ML8KjhvuIBiWeovmNyBIHoY8ftNh4dBcrvwnkkiZw2qi1krCimsRuLMAKo0ROlmzWIw9qiF WzRp1disEe8PKyvYRVyP98U14vDAwgF5u54I95qECgYEAwGMP8bN/gYdOfndt5+uRBZRvTnuXAP5R+gG+GX6+tLwRB8/UimqT7K9Ic3XdyQ+ImZrKQiK2BpR XyipMdYTvRzEeWu8EyDwg3PyYZJ1uJag3qylzAQrOza8cKXn7o3iE0AKpdOG5z7MlDD3Tb6NcNdQi7GnpQX0fiSiIAo0wGd8CgYAH42Ob2pPrBm3usVitgiqiOU PLZzikTyqLlX4BDJuFke2xQBb2g1RqA3hT2uDO8qjHba61b7hfsOFlu8Z9wLyQXhQYn/Kgec5U7IFCrMiyJ+jpqdnljH25HdNEzRbFhabewpuw7Ar8B+wHcQI8YMe O70Es2KxzD68FaovuGzGTgQKBgQCqWMysWiCDY3hYOI2DdizBwQ3Rc1NgmM+jS9m0H2rjA0cdIKP0L6xtPUMsoOfReMSeJdYDO1LrfnxBULTEtgFcixxyrgM Q/VSn961EIbV++HTaRGhFOvmkW/HWs+DhfPw0Zrb+/EOXqesa7L+DsSUbsIt/w8O6rfy3aMENaVB3BwKBgQCzm4tkFf4oaHpmVpRxD5oyz9IkDw+hvqlhTK80 1/6xyEhJg5nNzp20TVpfPDV3XJ/1FlpRjq37J7FloI37YkBTvINQMTHMH10/lUsG2ws6UqA/1nCIy7r87QGKc1F0/pLJ8jk1d5SLELMHkt6rfIc8T0fEzo8pQ9DSF3Kgt 0XyhA==-----END RSA PRIVATE KEY-----" "id" : "DeviceMgmtUser", "value" : "admin" "isrequired": false, "description": "User account to use for managing this device - this is only relevant when node represents a managed device. If unspecified then it will default to admin", "id" : "DeviceMgmtPassword", "value" : "Str)ngP@ssw0rd", "isrequired": false, "description": "Password to use for managing this device - this is only relevant when node represents a managed device. If unspecified then it will be auto-generated for BIG-IQ provisioned BIG-IP device and otherwise set to default admin password", "ipaddress" : "10.10.10.199", "networkinterfaces" : [ "localaddress" : "172.27.62.95", "subnetaddress" : "172.27.62.0/24" "localaddress" : "10.10.10.199", "virtualaddress" : "3.3.3.3", "subnetaddress" : "10.10.10.0/24", "secondaryaddresses": [ "virtualaddress": "1.2.3.4", "localaddress": "10.10.10.66" "virtualaddress": "2.2.2.2", "localaddress": "10.10.10.173" ] "localaddress" : "10.10.20.23", "subnetaddress" : "10.10.20.0/24" "state" : "STARTING", "provider" : false, "services" : [ "devicediscoveryinterface": 1, "devicereference": "link": "https://localhost/mgmt/cm/cloud/managed-devices/guid1234-guid-1234-guid-1234guid1234" ] BIG-IQ API Reference Guide 2-135

Chapter 2 Add/remove of secondary addresses is supported. Add/remove of virtual addresses is supported. Static addressing is supported. virtualaddress means Elastic IP. Dynamic virtualaddress is requested by specifying "0.0.0.0". BIG-IP application virtual servers correspond to node secondary addresses. 2-136

Central Management APIs OpenStack nodes APIs Node properties Use these APIs to get, create, or delete OpenStack nodes. A node contains a set of parameters as part of its complete specification. Creating a node requires three parameters. Name NodeName The human-readable name for your node. Not necessarily unique. Flavor The name or ID (from OpenStack) of the flavor to create this node. ImageId The name or ID (from OpenStack) of the image to create this node. The following example illustrates a complete node specification. "properties":[ "id":"nodename", "value":"web-server" "id":"flavor", "value":"m1.small" "id":"imageid", "value":"ubuntu-12.02.web" ] You may see other properties on nodes when you examine them. They include: Additional properties Name NodeTemplateName BIG-IP For a node template, which corresponds to an OpenStack image. This is the name of the image. If this is present and is true, it is a node or node template BIG-IQ API Reference Guide 2-137

Chapter 2 Create a new node Create a new OpenStack node. /cm/cloud/connectors/openstack/<connector-id>/nodes/ POST N/A "properties":[ "id":"nodename", "value":"alain-test" "id":"flavor", "value":"m1.small" "id":"imageid", "value":"myfirstimage" "networkinterfaces": ["localaddress": "50.50.1.0/24" "cloudconnectorreference" : "link": "https://localhost/mgmt/cm/cloud/connectors/openstack/f43b4e0d-ec41-4283-b34c-317b26a71 a3d" See Node Properties (preceding) for details on the properties. The network interfaces is a list of subnets on which you wish to create your interfaces: they must correspond with existing subnets that you have access to in OpenStack The cloudconnectorreference is the OpenStack connector that you previously made. You can use its selflink here. Get node Gets an OpenStack node /cm/cloud/connectors/openstack/<connector-id>/nodes/<node-id> GET N/A None 2-138

Central Management APIs "selflink": "https://localhost/mgmt/cm/cloud/connectors/openstack/c7071a6c-9ace-49b8-99cd-fba08d1c7 cf1/nodes/3e780f79-6004-4abc-ba51-eb787b0ec226", "kind": "cm:cloud:nodes:node", "lastupdatemicros": 1382935267933312, "generation": 2, "nodeid": "3e780f79-6004-4abc-ba51-eb787b0ec226", "state": "RUNNING", "properties": [ "value": "cf829513-9b70-4714-9bf0-c18649193d44", "isrequired": false, "id": "ServerId" "value": "0dc3d041-3ec3-4255-83af-dc994d816649", "isrequired": false, "id": "ImageId" "value": "server1", "isrequired": false, "id": "NodeName" "ipaddress": "60.60.1.4", "networkinterfaces": [ "localaddress": "60.60.1.4" "services": [ "provideronly": false, "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/openstack/c7071a6c-9ace-49b8-99cd-fba08d1c7 cf1" BIG-IQ API Reference Guide 2-139

Chapter 2 Get all nodes Gets all OpenStack nodes. /cm/cloud/connectors/openstack/<connector-id>/nodes GET N/A N/A 2-140

Central Management APIs "items": [ "selflink": "https://localhost/mgmt/cm/cloud/connectors/openstack/c7071a6c-9ace-49b8-99cd-fba08d1c7 cf1/nodes/3e780f79-6004-4abc-ba51-eb787b0ec226", "kind": "cm:cloud:nodes:node", "lastupdatemicros": 1382935267933312, "generation": 2, "nodeid": "3e780f79-6004-4abc-ba51-eb787b0ec226", "state": "RUNNING", "properties": [ "value": "cf829513-9b70-4714-9bf0-c18649193d44", "isrequired": false, "id": "ServerId" "value": "0dc3d041-3ec3-4255-83af-dc994d816649", "isrequired": false, "id": "ImageId" "value": "server1", "isrequired": false, "id": "NodeName" "ipaddress": "60.60.1.4", "networkinterfaces": [ "localaddress": "60.60.1.4" "services": [ "provideronly": false, "cloudconnectorreference": "link": "https://localhost/mgmt/cm/cloud/connectors/openstack/c7071a6c-9ace-49b8-99cd-fba08d1c7 cf1" ] BIG-IQ API Reference Guide 2-141

Chapter 2 Get OpenStack Node Stats Gets the statistics for a specific OpenStack node. /cm/cloud/connectors/openstack/<connector-id>/nodes/<node-id>/stats GET N/A "entries": "health.stats.raw.tap28efd262-b0_rx_drop": "value": 0.0, "description": "tap28efd262-b0_rx_drop", "lastupdatemicros": 1382935258474090 "itemid": "value": 0.0, "description": "3e780f79-6004-4abc-ba51-eb787b0ec226", "lastupdatemicros": 1382935258165075 "health.stats.raw.cpu0_time": "value": 2.33392E12, "description": "cpu0_time", "lastupdatemicros": 1382935788154022... more stats These are the server diagnostics from OpenStack, unfiltered and raw. Make sure the Nova compute_extension:server_diagnostics policy allows non-administrator access, or these will not be present. 2-142

Central Management APIs Delete Node Deletes a node in OpenStack. /cm/cloud/connectors/openstack/<connector-id>/nodes/<node-id> DELETE N/A BIG-IQ API Reference Guide 2-143

Chapter 2 2-144

3 Shared APIs Shared APIs overview Group resolver view worker APIs File transfer worker APIs In statistics helper worker API REST worker availability APIs REST worker subscriber s list APIs Rest diagnostics worker APIs Multiple user coordinator APIs Device resolver APIs Group resolver APIs Device information API Statistics information and metadata API User authentication API Authentication token worker API Licensing APIs User authorization APIs Authorization roles APIs Authorization roles resource groups APIs Licensing activation APIs Registration key management APIs Licensing pools APIs

Shared APIs Shared APIs overview The APIs referred to as shared APIs are documented in this chapter. BIG-IQ API Reference Guide 3-1

Chapter 3 Group resolver view worker APIs The group resolver view worker APIs provide a list of all the workers under /shared, /tm, and /cm. On receiving the GET request, it obtains the worker directory listing from the group resolver worker and generates the response by filtering all the worker URIs registered under the requesting URI. List all the worker URIs under /shared Gets the listing of all the public workers listening under URI /shared. /shared GET N/A N/A 3-2

Shared APIs "items": [ "link": "https://localhost/mgmt/shared/analytics/event-aggregation-tasks" "link": "https://localhost/mgmt/shared/analytics/event-analysis-tasks" "link": "https://localhost/mgmt/shared/resolver/groups" "link": "https://localhost/mgmt/shared/resolver/device-groups" "link": "https://localhost/mgmt/shared/resolver/device-group-remover" "link": "https://localhost/mgmt/shared/diagnostics" "link": "https://localhost/mgmt/shared/inflate" "link": "https://localhost/mgmt/shared/coordinator" "link": "https://localhost/mgmt/shared/differencer" "link": "https://localhost/mgmt/shared/cache" "link": "https://localhost/mgmt/shared/echo" "link": "https://localhost/mgmt/shared/presentation" "link": "https://localhost/mgmt/shared/echo-query" "link": "https://localhost/mgmt/shared/package-deployments" "link": "https://localhost/mgmt/shared/framework-upgrades" "link": "https://localhost/mgmt/shared/multi-user-coordinator" "link": "https://localhost/mgmt/shared/rpm-tasks" "link": "https://localhost/mgmt/shared/sandboxes"... BIG-IQ API Reference Guide 3-3

Chapter 3 3-4

Shared APIs List all the worker URIs under /tm Gets the listing of all the public workers listening under URI /tm. /tm GET N/A N/A BIG-IQ API Reference Guide 3-5

Chapter 3 "items": [ "link": "https://localhost/mgmt/tm/cloud/services/iapp/myhtp/health" "link": "https://localhost/mgmt/tm/cloud/ltm/node-addresses" "link": "https://localhost/mgmt/tm/cloud/ltm/pool-members" "link": "https://localhost/mgmt/tm/cloud/ltm/pools" "link": "https://localhost/mgmt/tm/cloud/ltm/virtual-servers" "link": "https://localhost/mgmt/tm" "link": "https://localhost/mgmt/tm/shared/licensing/activation" "link": "https://localhost/mgmt/tm/shared/licensing/registration" "link": "https://localhost/mgmt/tm/cloud/templates/iapp" "link": "https://localhost/mgmt/tm/shared/sys/backup" "link": "https://localhost/mgmt/tm/shared/iapp/health-prefix-map" "link": "https://localhost/mgmt/tm/shared/iapp/blocks" "link": "https://localhost/mgmt/tm/shared/iapp/graphs" "link": "https://localhost/mgmt/tm/shared/iapp/template-loader" "link": "https://localhost/mgmt/tm/shared/iapp/graph-copier" "link": "https://localhost/mgmt/tm/mam/profile-access-misc-stats" "link": "https://localhost/mgmt/tm/mam/user-info" "link": "https://localhost/mgmt/tm/mam/user-device"... 3-6

Shared APIs List all the worker URIs under /cm Gets the listing of all the public workers listening under URI /cm. /cm GET N/A N/A BIG-IQ API Reference Guide 3-7

Chapter 3 "items": [ "link": "https://localhost/mgmt/cm/autodeploy/software-image-uploads" "link": "https://localhost/mgmt/cm/autodeploy/default-boot-volume" "link": "https://localhost/mgmt/cm/autodeploy/mgmt-dhcp" "link": "https://localhost/mgmt/cm/autodeploy/mgmt-mac" "link": "https://localhost/mgmt/cm/autodeploy/reboot-device" "link": "https://localhost/mgmt/cm/autodeploy/software-images" "link": "https://localhost/mgmt/cm/autodeploy/software-volume-install" "link": "https://localhost/mgmt/cm/autodeploy/config-install" "link": "https://localhost/mgmt/cm" "link": "https://localhost/mgmt/cm/mam/file-object-download" "generation": 0, "lastupdatemicros": 1390610324181246, "kind": "cm:restgroupresolverviewstate", "selflink": "https://localhost/mgmt/cm" 3-8

Shared APIs File transfer worker APIs The file transfer worker allows users to asynchronously upload and download files using a series of POST and GET requests. The file transfer uploads worker listens to URI /shared/file-transfer/uploads. The file transfer downloads worker listens to a set of URIs under /shared/file-transfer/downloads. There is one URI for each directory. Get file contents using downloads worker Optional Request Headers Gets file content for the file in /usr/local/rest/presentation. If the content-range header is not specified, it gives the entire file as a single chunk. Depending on the file type, it sets content-type on the response. /shared/file-transfer/downloads/myrpmfile.rpm GET N/A Content-range: 0-8191/65536 HTTP/1.1 200 OK Content-Length: 8192 Content-Range:0.8191/65536 Content-Type: application/octet-stream Response body with file contents Post file contents using downloads worker Upload the file content using series of POST operations (chunked upload). /shared/file-transfer/uploads/myrpmfile.rpm POST N/A BIG-IQ API Reference Guide 3-9

Chapter 3 Optional Request Headers Content-range: 0-8191/65536 Content-length: 8192 HTTP/1.1 200 OK "remainingbytecount":57344, "totalbytecount":65536, "chunkbytecount":65536, "localfilepath":"/var/config/rest/downloads/tmp/myrpmfile.rpm", "generation":0, "lastupdatemicros":1376507223799640 Cancel existing upload An active download can be cancelled if a DELETE is sent to the file name URI suffix (with no body). /shared/file-transfer/uploads/myrpmfile.rpm DELETE N/A Optional Request Headers HTTP/1.1 200 OK 3-10

Shared APIs In statistics helper worker API This API allows for an in-memory only collection of name-to-stat objects that can be used for health, worker state, and statistics to be viewed. The response contains data that does not live in the worker PODOs. Get worker statistics Gets current statistics. *parent worker URI*/stats GET N/A BIG-IQ API Reference Guide 3-11

Chapter 3 HTTP/1.1 200 OK "entries": "com.f5.rest.common.restworker.isfinegrainedcollection": "value": 1, "lastupdatemicros": 1390859145919856, "updatetype": "BASIC" "com.f5.rest.common.restworker.issynchronized": "value": 1, "lastupdatemicros": 1390859145919848, "updatetype": "BASIC" "com.f5.rest.common.restworker.ispersisted": "value": 1, "lastupdatemicros": 1390859145919840, "updatetype": "BASIC" "com.f5.rest.common.restworkerstate.lastupdatemicros": "value": 0, "lastupdatemicros": 1390859145919830, "updatetype": "BASIC" "com.f5.rest.common.restworker.isindexed": "value": 1, "lastupdatemicros": 1390859145919835, "updatetype": "BASIC" "com.f5.rest.common.restworker.isreplicated": "value": 1, "lastupdatemicros": 1390859145919844, "updatetype": "BASIC" "com.f5.rest.common.restworkerstate.generation": "value": 0, "lastupdatemicros": 1390859145919821, "updatetype": "BASIC" "com.f5.rest.common.restworker.iseagerlyconsistent": "value": 1, "lastupdatemicros": 1390859145919852, "updatetype": "BASIC" "generation": 8, "lastupdatemicros": 1390859145919857, "kind": "tm:shared:iapp:blocks:stats:restworkerstats", "selflink": "https://localhost/mgmt/tm/shared/iapp/blocks/stats" 3-12

Shared APIs Update worker statistics Adds or updates statistical entries. *parent worker URI*/stats POST N/A "stats": [ "name": "stat1", "value": 1.0, "description": "stat1 desc", "lastupdatemicros": 0, "updatetype": "BASIC", "statinforeference": "link": "http://localhost:49467/shared/stats-information/statinformationnamehere" "name": "stat2", "value": 2.0, "lastupdatemicros": 0, "updatetype": "BASIC" ] HTTP/1.1 200 OK Delete worker statistics Removes an entry from the statistics map. *parent worker URI*/stats DELETE BIG-IQ API Reference Guide 3-13

Chapter 3 N/A "statnames": [ "stat2", "stat1", "stat3" ] HTTP/1.1 200 OK REST worker availability APIs This API returns the health status of the specified REST worker. Get worker availability A worker responds to this API (<worker>/available) when it has completed the second phase of its start sequence, which means: If the worker had initial state in storage, state has been loaded/verified/optional cached. If the worker had dependencies on other workers, its dependencies are available. If <worker>/available returns 200, the worker is ready to process REST operations. Gets health status of the specified REST worker. worker/available GET N/A 3-14

Shared APIs HTTP/1.1 200 OK BIG-IQ API Reference Guide 3-15

Chapter 3 REST worker subscriber s list APIs This API returns the list of the subscribers to the specified REST worker/resource. Get worker availability Gets the list of the subscribers of the specified REST worker/resource. worker/subscriptions GET N/A HTTP/1.1 200 OK "subscribers":["http://localhost:8100/a1d69957c0ed4f40b6c86efbec9da03e","http://localhost:8 100/188795a31338465fa5d14379893aefd3" "generation":2, "lastupdatemicros":1382740096971020 3-16

Shared APIs Rest diagnostics worker APIs Use this API to access diagnostic content and statistics. You also can set the tracing and logging levels and shut down or restart the REST server. Get diagnostics Gets logs and stack traces. shared/diagnostics GET HTTP/1.1 200 OK "hostparameters": "isproductioninstance": true, "port": 8100, "storagedirectory": "/var/config/rest/storage", "configindexdirectory": "/var/config/rest/index" "operationtracinglevel": "OFF", "jvmfreememory": 8557872, "jvmtotalmemory": 37801984, "jvmmaxmemory": 1005518848, "jvmavailableprocessors": 2, "jvmthreadcount": 31, "severelogs": [ "warninglogs": [ "[WARNING][1][14 Jan 2014 19:49:54 UTC][RestServer][bindServerChannel] *** Server binding to all interfaces. Not secure! ***\n\n", "[WARNING][3][14 Jan 2014 19:49:54 UTC][RestWorkerHost][start] Allowing communication with the outside using HTTP using port 8100",... ******Note: Typical SIGNIFICANTLY truncated for brevity.***** BIG-IQ API Reference Guide 3-17

Chapter 3 Get device statistics diagnostics Gets current values of CPU system/user/idle percentage by core, memory (free and total), and mounted file system usage. shared/diagnostics/device-stats GET HTTP/1.1 200 OK "entries": "cpu.0_1.idle": "value": 472865372, "lastupdatemicros": 1389740929259170, "updatetype": "MOVING_AVERAGE" "cpu.0_0.usageratio": "value": 0.08, "lastupdatemicros": 1389740929258946, "updatetype": "MOVING_AVERAGE" "cpu.0_1.system": "value": 15160001, "lastupdatemicros": 1389740929259213, "updatetype": "MOVING_AVERAGE" "cpu.0_1.usageratio": "value": 0.06, "lastupdatemicros": 1389740929259152, "updatetype": "MOVING_AVERAGE" "cpu.0_0.system": "value": 16407179, "lastupdatemicros": 1389740929259122, "updatetype": "MOVING_AVERAGE" "cpu.0_0.user": "value": 38283315, "lastupdatemicros": 1389740929259137, "updatetype": "MOVING_AVERAGE" "cpu.0_0.idle": "value": 465279168, "lastupdatemicros": 1389740929259093, "updatetype": "MOVING_AVERAGE" "cpu.0_1.user": "value": 35048478, "lastupdatemicros": 1389740929259239, "updatetype": "MOVING_AVERAGE"... ******Note: Typical truncated for brevity.***** 3-18

Shared APIs BIG-IQ API Reference Guide 3-19

Chapter 3 Set the tracing and logging levels Sets the tracing level and the logging levels. If the tracing level is FINE, FINER, or FINEST, then operation tracing is enabled and operations are captured in the traces collection available through GET. FINER also collects request/response headers. FINEST also collects request/response bodies. Use these sparingly with narrowed scope using tracelimitperworker, uripathblacklist and uripathwhitelist. /shared/diagnostics PATCH "operationtracinglevel": "FINE" HTTP/1.1 200 OK "hostparameters": "isproductioninstance":false "operationtracinglevel":"fine", "jvmfreememory":0, "jvmtotalmemory":0, "jvmmaxmemory":0, "jvmavailableprocessors":0, "jvmthreadcount":0, "traces": "tracelimitperworker":1000, "generation":0, "lastupdatemicros":0 Set the URIs that will be traced: white list Sets the tracing level and the logging levels. If the tracing level is FINE, FINER, or FINEST, then operation tracing is enabled and operations are captured in the traces collection available through GET. FINER also collects request/response headers. FINEST also collects request/response bodies. Use these sparingly with narrowed scope using tracelimitperworker, uripathblacklist and uripathwhitelist. /shared/diagnostics 3-20

Shared APIs PATCH "operationtracinglevel": "FINER", "uripathwhitelist": [ "/", "/shared/echo" "tracelimitperworker":100 HTTP/1.1 200 OK "hostparameters": "isproductioninstance":false "uripathwhitelist": [ "/", "/shared/echo" "operationtracinglevel":"finer", "jvmfreememory":0, "jvmtotalmemory":0, "jvmmaxmemory":0, "jvmavailableprocessors":0, "jvmthreadcount":0, "traces": "tracelimitperworker":1000, "generation":0, "lastupdatemicros":0 Shutdown or restart REST server Shuts down REST server. If isrestartrequest is true, restart it also. /shared/diagnostics PATCH BIG-IQ API Reference Guide 3-21

Chapter 3 "isrestartrequest": "true" HTTP/1.1 200 OK "isrestartrequest" : true OR <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>bad Gateway!</title> <link rev="made" href="mailto:support@f5.com" /> <style type="text/css"><!--/*--><![cdata[/*><!--*/ body color: #000000; background-color: #FFFFFF; a:link color: #0000CC; p, address margin-left: 3em; span font-size: smaller; /*]]>*/--></style> <style type="text/css"><!--/*--><![cdata[/*><!--*/ * width: 400px; font-size: 100%; font-style: normal; html text-align: center; body background: #ffffff; text-align: left; font-family: sans-serif; font-size: 70%; color: #333333; a,span width: auto; h1,h2,h3 margin: 20px 0px 20px 0px; font-weight: bold; h1 padding: 5px; border: 1px solid #999999; background: #eeeeee; color: #000000; font-size: 125%; hr height: 1px; border: none; border-top: 1px solid #999999; img border: 0px; p width: 350px; margin: 15px 25px 15px 25px; line-height: 135%; /*]]>*/--></style> </head> <body> <h1>bad Gateway!</h1> <p> The proxy server received an invalid response from an upstream server. </p> <p> The proxy server could not handle the request <em><a href="/mgmt/shared/diagnostics">patch /mgmt/shared/diagnostics</a></em>.<p> Reason: <strong>error reading from remote server</strong></p> </p> <h2>error 502</h2> <address> <a href="/">172.27.90.203</a> <span>tue Jan 14 15:15:22 2014 </span> </address> </body> </html> 3-22

Shared APIs BIG-IQ API Reference Guide 3-23

Chapter 3 Multiple user coordinator APIs This API makes it possible to associate specific REST resources with a specific user. Get all user and resource associations Gets all of the associations between users and resources. /shared/multi-user-coordinator GET N/A 3-24

Shared APIs HTTP/1.1 200 OK "items": [ "name": "a highly coordinated user", "description": "Bo knows coordination", "resourcemasks" : [ "/mgmt/testcoordinator/specific-resource-538d", "/mgmt/testcoordinator/another-specific-resource-50e6/specific-resource-538d", "/mgmt/testcoordinator/fancy-resource-f74f/specific-resource-538d" "resourcegroupsreferences" : [ "link" : "https://localhost/mgmt/shared/authz/roles/resource-groups/a9c515af-ec4b-44d1-83c7-04b2b a4db346" "link" : "https://localhost/mgmt/shared/authz/roles/resource-groups/4bcd76a5-99f5-4698-ad9b-a4b0d 46d9abb" "lastupdatemicros" : 1383951971892325, "userreference" : "link" : "https://localhost/mgmt/shared/authz/users/someuser-2860" "createdatetime" : "2013-11-08T15:06:11.892-0800", "uuid" : "5bc1c80f-14cf-47de-b7fe-548c5a03177c", "editorrolereference" : "link" : "https://localhost/mgmt/shared/authz/roles/5bc1c80f-14cf-47de-b7fe-548c5a03177c" "selflink" : "https://localhost/mgmt/shared/multi-user-coordinator/5bc1c80f-14cf-47de-b7fe-548c5a03177c ", "kind" : "shared:multi-user-coordinator:multiusercoordinatorstate", "generation" : 1 "generation": 1, "kind": "shared:multi-user-coordinator:multiusercoordinatorcollection", "lastupdatemicros": 1380744550608405, "selflink": "https://localhost/mgmt/shared/multi-user-coordinator" BIG-IQ API Reference Guide 3-25

Chapter 3 Create a resource association Associates the specified resources with the specified role. /shared/multi-user-coordinator POST N/A Request Body "name": "a highly coordinated user", "description": "Bo knows coordination", "userreference": "link": "https://localhost/mgmt/shared/users/bojackson" "resourcemasks": [ "/mgmt/shared/scores/touchdown", "/mgmt/shared/scores/homerun" ] 3-26

Shared APIs HTTP/1.1 200 OK "uuid": "deedddb3-1453-4838-a3b3-0c000714ca16", "name": "a highly coordinated user", "description": "Bo knows coordination", "createdatetime": "2013-10-03T11:21:45.836-0700", "userreference": "link": "https://localhost/mgmt/shared/users/bojackson" "resourcemasks": [ "/mgmt/shared/scores/touchdown", "/mgmt/shared/scores/homerun" "resourcegroupsreferences" : [ "link" : "https://localhost/mgmt/shared/authz/roles/resource-groups/a9c515af-ec4b-44d1-83c7-04b2b a4db346" "link" : "https://localhost/mgmt/shared/authz/roles/resource-groups/4bcd76a5-99f5-4698-ad9b-a4b0d 46d9abb" "editorrolereference" : "link" : "https://localhost/mgmt/shared/authz/roles/5bc1c80f-14cf-47de-b7fe-548c5a03177c" "generation": 1, "lastupdatemicros": 1380744550400276, "kind": "shared:multi-user-coordinator:multiusercoordinatorstate", "selflink": "https://localhost/mgmt/shared/multi-user-coordinator/deedddb3-1453-4838-a3b3-0c000714ca 16" BIG-IQ API Reference Guide 3-27

Chapter 3 Remove a resource association Removes the association between resources and the role. /shared/multi-user-coordinator/uuid DELETE N/A 3-28

Shared APIs Device resolver APIs Device Resolver allows the discovery of other devices and assigning devices to groups. The device resolver is composed of two RestCollectionWorkers: /shared/resolver/device-groups /shared/resolver/device-groups/<group name>/devices Each of these URIs supports 11 different types of operations. A sampling of these operations is included below, but see the RCW specification for additional options. Get device resolver groups Gets all the device resolver groups. /shared/resolver/device-groups GET N/A HTTP/1.1 200 OK "items": [ "groupname": "<device_group_name>", "generation": 1, "lastupdatemicros": 1373038399920925, "kind": "shared:resolver:device-groups:devicegroupstate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<pre><pre><device_group_name></pre > </pre> " "generation": 1, "kind": "shared:resolver:device-groups:devicegroupcollectionstate", "lastupdatemicros": 1373038400995940, "selflink": "https://localhost/mgmt/shared/resolver/device-groups" BIG-IQ API Reference Guide 3-29

Chapter 3 Get a single group Gets details on a single group. /shared/resolver/device-groups/<device_group_name> GET N/A HTTP/1.1 200 OK "groupname": "<device_group_name>", "generation": 1, "lastupdatemicros": 1373038399920925, "kind": "shared:resolver:device-groups:devicegroupstate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>" 3-30

Shared APIs Get devices within a group Gets all devices within a group. /shared/resolver/device-groups/<device_group_name>/devices GET N/A BIG-IQ API Reference Guide 3-31

Chapter 3 HTTP/1.1 200 OK "items": [ "uuid": "5964f627-1303-4441-b5fc-dde14d4d6cfa", "deviceuri": "https://10.10.90.2:443", "state": "ACTIVE", "address": "10.10.90.2", "clockskewsecondscount": -7, "systemid": "FB390250-1974-B8D4-3FB8-F4E56318D8C2", "hostname": "<hostname>", "version": "11.5.0", "product": "BIG-IP", "edition": "Final", "build": "971.0", "restframeworkversion": "11.5.0-0.0.195", "properties": "supportsrulelogging": true, "supportsiruleaction": true, "supportsfwpolicy": true "icontrolkey": "<removed for brevity>", "icontrolcert": "<removed for brevity>", "icontrolcertid": "141.143.21.128", "groupname": "<device_group_name>", "generation": 3, "lastupdatemicros": 1373400707130029, "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/5964f627-1303-4441-b5 fc-dde14d4d6cfa" "uuid": "83dc1e7b-d4db-4945-89c8-ea7579a5bc53", "deviceuri": "https://10.10.90.3:443", "state": "ACTIVE", "address": "10.10.90.3", "clockskewsecondscount": 0, "systemid": "31F77528-1974-F13F-37D6-AACCB28FBC86", "hostname": "<hostname>", "version": "4.1.0", "product": "BIG-IQ", "edition": "Final", "build": "1741.0", "restframeworkversion": "11.5.0-0.0.195", "icontrolkey": "<removed for brevity>", "icontrolcert": "<removed for brevity>", "icontrolcertid": "141.143.21.128", "groupname": "<device_group_name>", "generation": 3, "lastupdatemicros": 1373400740132030, "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/83dc1e7b-d4db-4945-8 9c8-ea7579a5bc53" "generation": 6, "kind": "shared:resolver:device-groups:devicegroupdevicecollectionstate", "lastupdatemicros": 1373400740139920, "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices" <span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;"> </span> 3-32

Shared APIs Get a single device Gets a single device within a group. /shared/resolver/device-groups/<device_group_name>/devices/<uuid> GET N/A HTTP/1.1 200 OK "uuid": "5964f627-1303-4441-b5fc-dde14d4d6cfa", "deviceuri": "https://10.10.90.2:443", "state": "ACTIVE", "address": "10.10.90.2", "clockskewsecondscount": -7, "systemid": "FB390250-1974-B8D4-3FB8-F4E56318D8C2", "hostname": "<hostname>", "version": "11.5.0", "product": "BIG-IP", "edition": "Final", "build": "971.0", "restframeworkversion": "11.5.0-0.0.195", "properties": "supportsrulelogging": true, "supportsiruleaction": true, "supportsfwpolicy": true "icontrolkey": "<removed for brevity>", "icontrolcert": "<removed for brevity>", "icontrolcertid": "141.143.21.128", "groupname": "<device_group_name>", "generation": 3, "lastupdatemicros": 1373400707130029, "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/5964f627-1303-444 1-b5fc-dde14d4d6cfa" BIG-IQ API Reference Guide 3-33

Chapter 3 Get a single device s health statistics Gets a single device's health statistics health.available -- healthy if device can be contacted health.cpu -- healthy if device CPU activity does not exceed threshold value health.memory -- healthy if available storage does not fall below threshold value health.disk -- healthy if free space available on monitored file systems ("/", "/shared", "/var", "/var/log") does not fall below threshold value health.summary -- roll up of all device health statistics values. /shared/resolver/device-groups/<device_group_name>/devices/<uuid>/stats GET N/A 3-34

Shared APIs HTTP/1.1 200 OK "entries": "health.available": "value": 1, "description": "Device is available", "lastupdatemicros": 1378401113020955 "health.disk": "value": 1, "description": "Disk OK", "lastupdatemicros": 1378401113020876 "health.summary": "value": 1, "description": "Overall device health", "lastupdatemicros": 1378401113020970 "health.cpu": "value": 1, "description": "CPU OK", "lastupdatemicros": 1378401113020651 "health.memory": "value": 1, "description": "Memory OK", "lastupdatemicros": 1378401113020905 "generation": 7, "lastupdatemicros": 1378401113020974, "kind": "shared:resolver:device-groups:foobar:devices:stats:restworkerstats", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/foobar/devices/99f2682b-fc0a-49a6-b6cb-ed0fac096 a68/stats" BIG-IQ API Reference Guide 3-35

Chapter 3 Add a new group Adds a new group with group validator URI /shared/resolver/device-groups POST N/A HTTP/1.1 202 ACCEPT "groupname":"bigip-group", "devicesreference":"link":"https://localhost/mgmt/shared/resolver/device-groups/bigip-group1/devices", "validatoruri":"/shared/resolver/groups/bigip-validator", "generation":1, "lastupdatemicros":1377712602589410, "kind":"shared:resolver:device-groups:devicegroupstate", "selflink":"https://localhost/mgmt/shared/resolver/device-groups/bigip-group1", "automanagelocalhost":true, "description":"ha Peers Group" validatoruri must be validator worker URI designed according to device resolver group validator api. Add a new device Adds a new device, response is a PENDING device, which eventually is successfully discovered (ACTIVE) or discovery fails (POST_FAILED). /shared/resolver/device-groups/<device_group_name>/devices POST N/A 3-36

Shared APIs "address":"172.27.95.22", "username" : "admin", "password" : "<password>", "properties" : "prop" : "value" "automaticallyupdateframework": "true" HTTP/1.1 202 ACCEPT "uuid":"ef3cdbd4-d524-43b6-a3f3-70c16529762d", "deviceuri":"https://10.10.90.2:443", "state":"pending", "address":"10.10.90.2", "groupname":"<device_group_name>", "generation":1,"lastupdatemicros":0, "kind":"shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink":"https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/ef3cdbd4-d 524-43b6-a3f3-70c16529762d" BIG-IQ API Reference Guide 3-37

Chapter 3 Rediscover a POST_FAILED device If a discovery has failed, then a rediscovery can be attempted by PATCHing the device with a new password. Username, address, and automaticallyupdateframework are optional arguments. /shared/resolver/device-groups/<device_group_name>/devices/<uuid> POST N/A "automaticallyupdateframework": "true", "password" : "<password>", "uuid" : "22742c98-b806-46dc-b788-adc21168dad3", "stat HTTP/1.1 202 ACCEPT "uuid":"ef3cdbd4-d524-43b6-a3f3-70c16529762d", "deviceuri":"https://10.10.90.2:443", "state":"pending", "address":"10.10.90.2", "groupname":"<device_group_name>", "generation":1,"lastupdatemicros":0, "kind":"shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink":"https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/ef3cdbd4-d 524-43b6-a3f3-70c16529762d" <span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;"> </span> Delete a device Deletes a device, or remove from a group. Returns the device that was deleted/removed from the group. If the device is referenced in multiple groups, it will be removed from each group. If this reference is the last then the device will be removed and undiscovered. In which case the device state will become PENDING_DELETE and eventually the device is removed. /shared/resolver/device-groups/<device_group_name>/devices DELETE 3-38

Shared APIs N/A HTTP/1.1 200 OK "uuid": "5964f627-1303-4441-b5fc-dde14d4d6cfa", "deviceuri": "https://10.10.90.2:443", "state": "PENDING_DELETE", "address": "10.10.90.2", "clockskewsecondscount": -7, "systemid": "FB390250-1974-B8D4-3FB8-F4E56318D8C2", "hostname": "<hostname>", "version": "11.5.0", "product": "BIG-IP", "edition": "Final", "build": "971.0", "properties": "supportsrulelogging": true, "supportsiruleaction": true, "supportsfwpolicy": true "icontrolkey": "<removed for brevity>", "icontrolcert": "<removed for brevity>", "icontrolcertid": "141.143.21.128", "groupname": "<device_group_name>", "generation": 3, "lastupdatemicros": 1373400707130029, "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/5964f627-1303-4441 -b5fc-dde14d4d6cfa" BIG-IQ API Reference Guide 3-39

Chapter 3 Add an existing device to a group Puts a previously discovered device into another group. /shared/resolver/device-groups/<device_group_name>/devices POST N/A "uuid" : "d86e7246-4d85-460f-a102-c003b97c99e3", "deviceuri" : "https://10.10.90.2:443" HTTP/1.1 200 OK <pre> "uuid": "5964f627-1303-4441-b5fc-dde14d4d6cfa", "deviceuri": "https://10.10.90.2:443", "state": "ACTIVE", "address": "10.10.90.2", "clockskewsecondscount": -7, "systemid": "FB390250-1974-B8D4-3FB8-F4E56318D8C2", "hostname": "<hostname>", "version": "11.5.0", "product": "BIG-IP", "edition": "Final", "build": "971.0", "restframeworkversion": "11.5.0-0.0.195", "properties": "supportsrulelogging": true, "supportsiruleaction": true, "supportsfwpolicy": true "icontrolkey": "<removed for brevity>", "icontrolcert": "<removed for brevity>", "icontrolcertid": "141.143.21.128", "groupname": "<device_group_name>", "generation": 3, "lastupdatemicros": 1373400707130029, "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/5964f627-1303-4441 -b5fc-dde14d4d6cfa" </pre> 3-40

Shared APIs Modifying device properties Each device has a properties attribute that can be modified through PATCHes. Properties are simple key/value pairs. Any properties specified in the body are added to the device properties. Any blank properties will be removed. /shared/resolver/device-groups/<device_group_name>/devices/<uuid> PATCH N/A "properties" : "my-property":"change-value" HTTP/1.1 200 OK <pre> "uuid": "5964f627-1303-4441-b5fc-dde14d4d6cfa", "deviceuri": "https://10.10.90.2:443", "state": "ACTIVE", "address": "10.10.90.2", "clockskewsecondscount": -7, "systemid": "FB390250-1974-B8D4-3FB8-F4E56318D8C2", "hostname": "<hostname>", "version": "11.5.0", "product": "BIG-IP", "edition": "Final", "build": "971.0", "restframeworkversion": "11.5.0-0.0.195",</pre> <pre> "properties":"my-property":"change-value"</pre> <pre> "icontrolkey": "<removed for brevity>", "icontrolcert": "<removed for brevity>", "icontrolcertid": "141.143.21.128", "groupname": "<device_group_name>", "generation": 3, "lastupdatemicros": 1373400707130029, "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate", "selflink": "https://localhost/mgmt/shared/resolver/device-groups/<device_group_name>/devices/5964f627-1303-4441 -b5fc-dde14d4d6cfa" </pre> BIG-IQ API Reference Guide 3-41

Chapter 3 Group resolver APIs The goals of the REST Group resolver are to serve as: an abstraction for collections of REST endpoints a way to group REST endpoints using a hierarchical name and a collection of opaque tags an event model for discovering membership changes in a group A group name is a semi opaque identifier following the URI path convention. A group name must be a valid URI path. An absolute REST URI can only appear once per group, but can exist under multiple group names. To simplify enumeration and naming, group names should re-use the components of worker public URI paths. Each group can have an associated locality, specified as a query parameter when requesting groups and available in the group entry PODO. The Group name scheme is: <URI path segments>/locality where: uri path - URI path segments either shared by REST resources in the group, or specific to the group name locality - an optional opaque name (or tag) for a network locality. All resources within a locality can directly address each other using absolute URIs Note The public URI naming scheme enforces a top level path that indicates whether the group or worker is ADC- or BIG-IQ system-specific. If the worker is ADC-specific, the top level path is /cm. If the worker is BIG-IQ system-specific, the top level path is /tm. Get resolver groups Returns list of groups. /shared/resolver/groups GET N/A "items":["groupname":"/mgmt/cm/cloud/devices/templates","references":["link":"https://localh ost/mgmt/cm/cloud/devices/templates/iapp"] "generation": 1, "lastupdatemicros": 1356987935471319 HTTP/1.1 202 ACCEPTED 3-42

Shared APIs Device Resolver /shared/resolver/devices Query resolver groups Queries for a specific group entry and optional expands contents of each URI in group. /shared/resolver/groups GET $filter=groupname eq /mgmt/cm/cloud/devices/templates $expand=references HTTP/1.1 200 OK "groupname":"/mgmt/cm/cloud/devices/templates","references":["link":"https://localhost/mgm t/cm/cloud/devices/templates/iapp"] DELETE requires a body Device Resolver /shared/resolver/devices Create resolver groups Adds a new item to the group map. If a group does not exist with this name, it is created. Otherwise, the items in the POST request body are added to the existing group list. Workers can insert other workers into resolver groups. For example, a BIG-IQ node can populate groups per locality since it has awareness of application deployment across data centers. /shared/resolver/groups POST "items":["groupname":"/mgmt/cm/cloud/devices/templates","references":["link":"https://local host/mgmt/cm/cloud/devices/templates/iapp"]] BIG-IQ API Reference Guide 3-43

Chapter 3 HTTP/1.1 200 OK DELETE requires a body Device Resolver /shared/resolver/devices Delete resolver group Removes an entire group, or an entry from a specific group. /shared/resolver/groups DELETE "items":["groupname":"/mgmt/cm/cloud/devices/templates","references":["link":"https://localh ost/mgmt/cm/cloud/devices/templates/iapp"]] HTTP/1.1 200 OK DELETE requires a body Device Resolver /shared/resolver/devices 3-44

Shared APIs Device information API This worker provides an API to get basic device properties for discovery. The properties are set at the beginning during startup of the worker. Get device information Retrieves device properties for a particular device. /shared/identified-devices/config/device-info GET BIG-IQ API Reference Guide 3-45

Chapter 3 "basemac": "00:50:56:01:3D:AA", "hostmac": "00:50:56:01:3D:AA", "time": 1386713127807, "haluuid": "423150f1-6d12-0a00-cb7b-cb2f1130bc5d", "managementaddress": "172.27.92.206", "physicalmemory": 4096, "platformmarketingname": "BIG-IP Virtual Edition", "platform": "Z100", "chassisserialnumber": "423150f1-6d12-0a00-cb2f1130bc5d", "cpu": "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz", "slots": [ "volume": "HD1.1", "product": "BIG-IP", "version": "11.5.0", "build": "0.0.1690", "isactive": false "volume": "HD1.2", "product": "BIG-IP", "version": "11.5.0", "build": "0.0.1783", "isactive": true "license": "licenseenddatetime": "2014-01-09T00:00:00-08:00", "registrationkey": "B3420-69816-74214-89379-0258987", "activemodules": [ "GTM, VE H314706-5919940 IPV6 Gateway Ram Cache STP DNS Express GTM, DNS LB, MAX Routing Bundle, VE DNS Rate Fallback, Unlimited DNS Licensed Objects, Unlimited DNS Rate Limit, Unlimited QPS GTM Rate Fallback, (UNLIMITED) GTM Licensed Objects, Unlimited GTM Rate, Unlimited", "GTM-DNS, RL, BIG-IP (v11.4 & later) X057674-3997563 DNS Rate Fallback, 50 DNS Licensed Objects, 0 DNS Rate Limit, 50 QPS GTM Licensed Objects, 0 GTM Rate, 8 GTM Rate Fallback, 8 SSL, Max TPS, VE", "LTM, 5 Gbps, VE O283768-5600359 IPV6 Gateway Rate Shaping Ram Cache 50 Mbps Compression SSL, 500 TPS Per Core APM, Limited Recycle, VE Anti-Virus Checks Base Endpoint Security Checks Firewall Checks Machine Certificate Checks Network Access Protected Workspace Secure Virtual Keyboard APM, Web Application App Tunnel Remote Desktop Routing Bundle, VE DNS Rate Fallback, Unlimited DNS Licensed Objects, Unlimited DNS Rate Limit, Unlimited QPS GTM Licensed Objects, Unlimited SSL, Max TPS, VE" "generation": 0, "lastupdatemicros": 0 "interfaces": [ "1.3", "1.2", "1.1", "mgmt" "machineid": "23996006-b061-41fc-9716-a0bd2cefe6e1", "address": "192.168.2.206", "hostname": "<hostname>", "version": "11.5.0", "product": "BIG-IP", "edition": "Final", "build": "0.0.1783", "restframeworkversion": "11.5.0-0.0.195", "isclustered": false, "isvirtual": true, "generation": 0, "lastupdatemicros": 0, "kind": "shared:resolver:device-groups:deviceinfostate", "selflink": "https://localhost/mgmt/shared/identified-devices/config/device-info" 3-46

Shared APIs BIG-IQ API Reference Guide 3-47

Chapter 3 Statistics information and metadata API This API is for descriptive information/metadata about statistics that are collected throughout the system. All statistics present in /stats and -stats helpers should be described here. 3-48

Shared APIs Create a statistics information item Creates a statistics information item. /shared/stats-information POST Request Body "name": "shared:somekind:thestate-throughput", "displayname": "Throughput in Mbps", "category": [ "cat1", "cat2" "unit": "Megabits", "timeunit": "second" "name": "shared:somekind:thestate-throughput", "displayname": "Throughput in Mbps", "category": [ "cat1", "cat2" "unit": "Megabits", "timeunit": "second", "generation": 1, "lastupdatemicros": 1391796948251052, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/bits-in" HTTP/1.1 400 Bad Request There are two forms of the name: kind-stat or stat. Stats Example Stats /stats -stats BIG-IQ API Reference Guide 3-49

Chapter 3 Retrieve all statistics information items Retrieves the entire collection of statistics information/metadata items. /shared/stats-information GET Request Body 3-50

Shared APIs "items": [ "name": "shared:somekind:thestate-throughput", "displayname": "Throughput in Mbps", "category": [ "cat1", "cat2" "unit": "Megabits", "timeunit": "second", "generation": 1, "lastupdatemicros": 1391796948251052, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/bits-in" "name": "cur_conns", "displayname": "Current Connection Count", "category": [ "ltm" "unit": "connections", "generation": 1, "lastupdatemicros": 1391796948128318, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/cur_conns" "name": "max_conns", "displayname": "Maximum Connection Count", "category": [ "ltm" "unit": "connections", "generation": 1, "lastupdatemicros": 1391796948103932, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/max_conns" "name": "pkts_in", "displayname": "Incoming Packet Count", "category": [ "ltm" "unit": "packets", "generation": 1, "lastupdatemicros": 1391796948149342, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/pkts_in" "name": "pkts_out", "displayname": "Outgoing Packet Count", "category": [ "ltm" "unit": "packets", "generation": 1, "lastupdatemicros": 1391796948060403, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/pkts_out" "name": "tot_conns", "displayname": "Total Connection Count", "category": [ "ltm" "unit": "connections", "generation": 1, "lastupdatemicros": 1391796948178730, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/tot_conns" "generation": 7, "kind": "shared:stats-information:statinformationcollectionstate", "lastupdatemicros": 1391796948252170, "selflink": "https://localhost/mgmt/shared/stats-information" BIG-IQ API Reference Guide 3-51

Chapter 3 HTTP/1.1 400 Bad Request There are two forms of the name: kind-stat or stat. Stats Example Stats /stats -stats 3-52

Shared APIs Change a portion of a statistics information item Changes a portion of a statistics information item. /shared/stats-information/shared:somekind:thestate-throughput PATCH Request Body "displayname": "Throughput in Megabits per second" "name": "shared:somekind:thestate-throughput", "displayname": "Throughput in Megabits per second", "category": [ "cat1", "cat2" "unit": "Megabits", "timeunit": "second", "generation": 1, "lastupdatemicros": 1391796948251052, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/bits-in" HTTP/1.1 400 Bad Request There are two forms of the name: kind-stat or stat. Stats Example Stats /stats -stats Replace a statistics information item Replaces a statistics information item. /shared/stats-information/shared:somekind:thestate-throughput PUT BIG-IQ API Reference Guide 3-53

Chapter 3 Request Body "name": "shared:somekind:thestate-throughput", "displayname": "Throughput in Mbps - changed", "category": [ "cat1", "cat2", "cat3" "unit": "Megabits - changed"", "timeunit": "second - changed"" "name": "shared:somekind:thestate-throughput", "displayname": "Throughput in Mbps - changed", "category": [ "cat1", "cat2", "cat3" "unit": "Megabits - changed"", "timeunit": "second - changed"" "generation": 3, "lastupdatemicros": 1391796948251052, "kind": "shared:stats-information:statinformationstate", "selflink": "https://localhost/mgmt/shared/stats-information/bits-in" HTTP/1.1 400 Bad Request There are two forms of the name: kind-stat or stat. Stats Example Stats /stats -stats Delete a statistics information item Deletes a statistics information item. /shared/stats-information/shared:somekind:thestate-throughput DELETE Request Body 3-54

Shared APIs HTTP/1.1 400 Bad Request There are two forms of the name: kind-stat or stat. Stats Example Stats /stats -stats BIG-IQ API Reference Guide 3-55

Chapter 3 Licensing worker APIs The licensing worker provides the ability to read the current state of the license on the local system. The license information is refreshed once per minute, or upon calling GET. Get license Retrieves the current license for the local system. /tm/shared/licensing/registration GET N/A 3-56

Shared APIs (for BIG-IQ Cloud systems) <span style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; font-size: x-small;"><span style="white-space: normal;"> "vendor":"f5 Networks, Inc.", "licenseddatetime":"2013-02-15t00:00:00-08:00", "licensedversion":"4.0.0", "evaluationstartdatetime":"2013-02-14t00:00:00-08:00", "evaluationenddatetime":"2013-03-18t00:00:00-07:00", "licenseenddatetime":"2013-03-18t00:00:00-07:00", "licensestartdatetime":"2013-02-14t00:00:00-08:00", "registrationkey":"h6161-517281-279-2902194-6570753", "dossier":"0178873672bd135e9b0d479a84f7fe1acc1286c57cd91225fa98d12e1fa2e1a70d0a16233226e5a1058fb7 19973c4e79c8e7cb8437c8c0dafde5b2001b34505510f9a50f84ee60f8097ff8124d21aa5ca220e154d584cadff4d0a9 e541fe61c675bbf0ccd0f384f377c7183968ace9ccba89450426913d848b4ddea98e0a99b321042c8d8f95607384757 e3e5b7bac63981216ebd683e961eb86a45ec150cf2bccd548ec69eb3f49990f887901d8a2cc3964842e29d47823998 84289f5b7f3838e7313070837204ab81b71af8b87c58b7f5f9c790c77d276ce535cea89", "authorization":"49efa6bfd2dfd08abc87c3aaacdca9cb4a8afe58ee1f992ef8aedeb05478a9ecb21fe664a28b9985a15 b437b0eee9633a8d71d9fbab2d064b28797709c9df376eb215079538569927d3f03712bf89b6b6524ccd0322e7dd68 5af7630b888bfb6ef9caf0452980c508779e4d8dc8333a11eeded2b3866e2d500415cf268eb2e0d2423e7e899eca7f3 b73ff75b01bad8c108856a7477b46ebbe4e2046efa5a989afcc3eee2f24c6c474d9a5feacacea9f476e416f4ad201190 2d604b6bc0b1f8e71aa7f745d2d12985bc21ce1705c5ccf163604e237930041a0a467f75b7a053edb25c6c2db016b77 bbb146e872f114a718e9ff6361802a7ee6b379c7dd55715fb", "usage":"f5 Internal Product Development", "platformid":"z100", "authvers":"5b", "servicecheckdatetime":"2013-02-15t00:00:00-08:00", "servicestatus":"as of 2013-02-15 this system has an active service contract.", "exclusiveplatform":[ "Z100", "Z100H", "Z100K", "Z100x" "activemodules":[ "BIG-IQ, AFM, VE, 50 Devices U545700-6846297 BIG-IQ, Cloud, VE, Maximum Nodes BIG-IQ, Maximum Devices" "optionalmodules":[ "BIG-IQ, Additional AFM Devices", "BIG-IQ, Cloud, VE, 1000 Nodes", "BIG-IQ, Cloud, VE, 10000 Nodes", "BIG-IQ, Cloud, VE, 5000 Nodes" "featureflags":[ "featurename":"biq_firewall_devices", "featurevalue":"50" "featurename":"perf_ve_throughput_mbps", "featurevalue":"unlimited" "featurename":"mod_biq", "featurevalue":"enabled" "featurename":"biq_num_devices", "featurevalue":"unlimited" "featurename":"biq_cloud_objects", "featurevalue":"unlimited" "expiresindays":"25.6", "expiresindaysmessage":"license expires in 25 days, 13 hours.", "generation":0, "lastupdatemicros":0 </span></span> BIG-IQ API Reference Guide 3-57

Chapter 3 (for BIG-IP systems) <span style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; font-size: x-small;"><span style="white-space: normal;"> "vendor":"f5 Networks, Inc.", "licenseddatetime":"2013-06-07t00:00:00-07:00", "licensedversion":"11.5.0", "licenseenddatetime":"2013-07-08t00:00:00-07:00", "licensestartdatetime":"2013-06-06t00:00:00-07:00", "registrationkey":"l1205-10152-17427-58387-6382365", "dossier":"01d049925ce16451e8deae5f569aebce7a1286c57cd91225fa98d12e1fa2e1a70d0a165dd158f63ee01068198b041 b778a28558437c8c0dafde5b2001b34505510f9a50f84ee60f8097ff8124d21aa5ca220e154d584cadff4d0a9e541fe61c675bbf0 ccd0f384f377c7183968ace9ccba89450426913d848b4ddea98e0a99b321042c8d8f95607384757e3e5b7bac63981216ebd683 e961eb86f8955670c6028144f78f7596314da2ce884dbff318aed0a8ba3ecc10feb8a2a64889f5b7f3838e7313070837204ab81b 71af8b87c58b7f5f9c790c77d276ce535cea89", "authorization":"12da27c26c1bbaa41ba745ecda5b27b47abf4b6bc42b54fa3f513f0de34ccb5ce50d7c62948607266c71e47f89 da886878c51f6ae5d627259cc935ccdd1452bd6b9a3be521abffad36971d70b77684656de6039b4d0c1593e7e1bf47992b0d2e 786d0a65f79397d36a38469d4f9326b81b49bbda2defff8b4057771d3755aaf3844318dee4a2a835efe0d8d46f12480867fa8200 a5df43531c37671e18754f8ca38f0c23e7a2e229eda8973721e3e96909c26529ef722ea83ec2525d40ef23d0b65121c6c048b4 7f24b61d269831207db63930cd6222d383977132d7b67cb703d2c38c80f096f9d2a8fc8159689ef662394ae61e67ccb0088b4e d8498acd1e32", "usage":"f5 Internal Product Development", "platformid":"z100", "authvers":"5b", "servicecheckdatetime":"2013-06-07t00:00:00-07:00", "servicestatus":"as of 2013-06-07 there is no active service contract. This may inhibit your ability to upgrade your software.", "exclusiveplatform":[ "Z100", "Z100H", "Z100K", "Z100x" "activemodules":[ "GTM, VE D503307-6850487 IPV6 Gateway Ram Cache STP DNS Express GTM, DNS LB, MAX Routing Bundle, VE DNS Rate Fallback, Unlimited DNS Licensed Objects, Unlimited DNS Rate Limit, Unlimited QPS GTM Rate Fallback, (UNLIMITED) GTM Licensed Objects, Unlimited GTM Rate, Unlimited", "GTM-DNS, RL, BIG-IP (v11.4 & later) O641561-7344283 DNS Rate Fallback, 50 DNS Licensed Objects, 0 DNS Rate Limit, 50 QPS GTM Rate Fallback, 25 GTM Licensed Objects, 0 GTM Rate, 25", "PERF TEST ONLY-VE UNLIMITED (DEV ONLY) T437210-0050429 IPV6 Gateway Rate Shaping Ram Cache MSM Client Authentication WBA SSL, Unlimited APM, Limited Compression, Unlimited ASM, VE PSM, VE WBA, VE Recycle, VE AFM, VE WOM, VE 500 Mbps Compression Anti-Virus Checks Base Endpoint Security Checks Firewall Checks Machine Certificate Checks Network Access Protected Workspace Secure Virtual Keyboard APM, Web Application App Tunnel Remote Desktop Max Compression, VE SSL, Max TPS, VE AAM, Upgrade from WAM, (v11.4 & later) Routing Bundle, VE DNS Rate Fallback, Unlimited DNS Licensed Objects, Unlimited DNS Rate Limit, Unlimited QPS" "optionalmodules":[ "Acceleration Manager, BIG-IP", "APM, Base, VE", "APM, Max CCU, VE", "App Mode (TMSH Only, No Root/Bash)", "DNS and GTM (1K QPS), VE", "DNS and GTM (5K QPS), VE", "DNS and GTM (Unlimited), VE", "DNS Services", "DNSSEC", "EA Features", "External Interface and Network HSM", "IPI Subscription, 1Yr, VE", "IPI Subscription, 3Yr, VE", "Routing Bundle, VE", "SDN Services", "SSL, Forward Proxy" "featureflags":[ "featurename":"perf_ssl_mbps", "featurevalue":"4000"...truncated for brevity...... "expiresindays":"28.5", "expiresindaysmessage":"license expires in 28 days, 11 hours.", "generation":0, "lastupdatemicros":0, "kind":"tm:shared:licensing:registration:licensestate", "selflink":"https://localhost/mgmt/tm/shared/licensing/registration" </span></span> 3-58

Shared APIs In case of error the request will fail, and the client provided RestRequestCompletion.failed() method will be invoked, which contains the request as well as an exception. The exception contains information about the following failure cases: - locating and loading of license file has failed - parsing license failed Licenses are read-only, and only accessible to users who have the role of BIG-IP administrator. None Install license The licensing worker provides the ability to install a license on the local system. Installs the specified license on the local BIG-IP system. /tm/shared/licensing/registration PUT "licensetext" : "<LICENSE_TEXT>" BIG-IQ API Reference Guide 3-59

Chapter 3 (for BIG-IP systems) <pre> "vendor":"f5 Networks, Inc.", "licenseddatetime":"2013-02-15t00:00:00-08:00", "licensedversion":"4.0.0", "evaluationstartdatetime":"2013-02-14t00:00:00-08:00", "evaluationenddatetime":"2013-03-18t00:00:00-07:00", "licenseenddatetime":"2013-03-18t00:00:00-07:00", "licensestartdatetime":"2013-02-14t00:00:00-08:00", "registrationkey":"h6161-517281-279-2902194-6570753", "dossier":"0178873672bd135e9b0d479a84f7fe1acc1286c57cd91225fa98d12e1fa2e1a70d0a16233226e5a1058fb71 9973c4e79c8e7cb8437c8c0dafde5b2001b34505510f9a50f84ee60f8097ff8124d21aa5ca220e154d584cadff4d0a9e5 41fe61c675bbf0ccd0f384f377c7183968ace9ccba89450426913d848b4ddea98e0a99b321042c8d8f95607384757e3e 5b7bac63981216ebd683e961eb86a45ec150cf2bccd548ec69eb3f49990f887901d8a2cc3964842e29d478239988428 9f5b7f3838e7313070837204ab81b71af8b87c58b7f5f9c790c77d276ce535cea89", "authorization":"49efa6bfd2dfd08abc87c3aaacdca9cb4a8afe58ee1f992ef8aedeb05478a9ecb21fe664a28b9985a15b 437b0eee9633a8d71d9fbab2d064b28797709c9df376eb215079538569927d3f03712bf89b6b6524ccd0322e7dd685a f7630b888bfb6ef9caf0452980c508779e4d8dc8333a11eeded2b3866e2d500415cf268eb2e0d2423e7e899eca7f3b73 ff75b01bad8c108856a7477b46ebbe4e2046efa5a989afcc3eee2f24c6c474d9a5feacacea9f476e416f4ad2011902d60 4b6bc0b1f8e71aa7f745d2d12985bc21ce1705c5ccf163604e237930041a0a467f75b7a053edb25c6c2db016b77bbb1 46e872f114a718e9ff6361802a7ee6b379c7dd55715fb", "usage":"f5 Internal Product Development", "platformid":"z100", "authvers":"5b", "servicecheckdatetime":"2013-02-15t00:00:00-08:00", "servicestatus":"as of 2013-02-15 this system has an active service contract.", "exclusiveplatform":[ "Z100", "Z100H", "Z100K", "Z100x" "activemodules":[ "BIG-IQ, AFM, VE, 50 Devices U545700-6846297 BIG-IQ, Cloud, VE, Maximum Nodes BIG-IQ, Maximum Devices" "optionalmodules":[ "BIG-IQ, Additional AFM Devices", "BIG-IQ, Cloud, VE, 1000 Nodes", "BIG-IQ, Cloud, VE, 10000 Nodes", "BIG-IQ, Cloud, VE, 5000 Nodes" "featureflags":[ "featurename":"biq_firewall_devices", "featurevalue":"50" "featurename":"perf_ve_throughput_mbps", "featurevalue":"unlimited" "featurename":"mod_biq", "featurevalue":"enabled" "featurename":"biq_num_devices", "featurevalue":"unlimited" "featurename":"biq_cloud_objects", "featurevalue":"unlimited" "expiresindays":"25.6", "expiresindaysmessage":"license expires in 25 days, 13 hours.", "generation":0, "lastupdatemicros":0 3-60

Shared APIs (for BIG-IQ Cloud systems) <pre> "vendor":"f5 Networks, Inc.", "licenseddatetime":"2013-02-15t00:00:00-08:00", "licensedversion":"4.0.0", "evaluationstartdatetime":"2013-02-14t00:00:00-08:00", "evaluationenddatetime":"2013-03-18t00:00:00-07:00", "licenseenddatetime":"2013-03-18t00:00:00-07:00", "licensestartdatetime":"2013-02-14t00:00:00-08:00", "registrationkey":"h6161-517281-279-2902194-6570753", "dossier":"0178873672bd135e9b0d479a84f7fe1acc1286c57cd91225fa98d12e1fa2e1a70d0a16233226e5a1058fb719973c4e79c 8e7cb8437c8c0dafde5b2001b34505510f9a50f84ee60f8097ff8124d21aa5ca220e154d584cadff4d0a9e541fe61c675bbf0ccd0f38 4f377c7183968ace9ccba89450426913d848b4ddea98e0a99b321042c8d8f95607384757e3e5b7bac63981216ebd683e961eb86 a45ec150cf2bccd548ec69eb3f49990f887901d8a2cc3964842e29d4782399884289f5b7f3838e7313070837204ab81b71af8b87c5 8b7f5f9c790c77d276ce535cea89", "authorization":"49efa6bfd2dfd08abc87c3aaacdca9cb4a8afe58ee1f992ef8aedeb05478a9ecb21fe664a28b9985a15b437b0eee9 633a8d71d9fbab2d064b28797709c9df376eb215079538569927d3f03712bf89b6b6524ccd0322e7dd685af7630b888bfb6ef9caf0 452980c508779e4d8dc8333a11eeded2b3866e2d500415cf268eb2e0d2423e7e899eca7f3b73ff75b01bad8c108856a7477b46eb be4e2046efa5a989afcc3eee2f24c6c474d9a5feacacea9f476e416f4ad2011902d604b6bc0b1f8e71aa7f745d2d12985bc21ce1705 c5ccf163604e237930041a0a467f75b7a053edb25c6c2db016b77bbb146e872f114a718e9ff6361802a7ee6b379c7dd55715fb", "usage":"f5 Internal Product Development", "platformid":"z100", "authvers":"5b", "servicecheckdatetime":"2013-02-15t00:00:00-08:00", "servicestatus":"as of 2013-02-15 this system has an active service contract.", "exclusiveplatform":[ "Z100", "Z100H", "Z100K", "Z100x" "activemodules":[ "BIG-IQ, AFM, VE, 50 Devices U545700-6846297 BIG-IQ, Cloud, VE, Maximum Nodes BIG-IQ, Maximum Devices" "optionalmodules":[ "BIG-IQ, Additional AFM Devices", "BIG-IQ, Cloud, VE, 1000 Nodes", "BIG-IQ, Cloud, VE, 10000 Nodes", "BIG-IQ, Cloud, VE, 5000 Nodes" "featureflags":[ "featurename":"biq_firewall_devices", "featurevalue":"50" "featurename":"perf_ve_throughput_mbps", "featurevalue":"unlimited" "featurename":"mod_biq", "featurevalue":"enabled" "featurename":"biq_num_devices", "featurevalue":"unlimited" "featurename":"biq_cloud_objects", "featurevalue":"unlimited" "expiresindays":"25.6", "expiresindaysmessage":"license expires in 25 days, 13 hours.", "generation":0, "lastupdatemicros":0 </pre> BIG-IQ API Reference Guide 3-61

Chapter 3 In case of error the request fails, and the client provided RestRequestCompletion.failed() is invoked, which contains the request as well as an exception. The exception contains information about the following failure cases: - license validation failed - installation of license has failed Licenses are read-only. None Revoke license Removes a license from the local BIG-IP system. /tm/shared/licensing/registration DELETE N/A In case of error, the request will fail, and the client provided RestRequestCompletion.failed() will be invoked, which contains the request as well as an exception. Licenses are read-only. None User authentication API The user authentication API allows clients to authenticate a username and password combination. The user can also obtain a token by specifying needstoken = True. This token can be used in the HTTP header instead of a username and password for repeated requests. 3-62

Shared APIs Verify authentication Validate the username and password combination. /mgmt/shared/authn/login POST N/A "username": "player1", "password": "player1spassword", "needstoken":true HTTP/1.1 200 OK "username": "player1", "password": "player1password", "needstoken": true, "token": "uuid": "b76d8a50-3153-4f6d-bf71-7499146ce619", "name": "06941EAC72A8BC4EE068F9C2F9DF9CB1A3E07BFE", "token": "06941EAC72A8BC4EE068F9C2F9DF9CB1A3E07BFE", "user": "link": "https://localhost/mgmt/shared/authz/users/admin" "timeout": 1200, "starttime": "2014-01-17T17:08:24.711-0800", "address": "192.168.42.95", "partition": "[All]", "generation": 1, "lastupdatemicros": 1390007304709701, "expirationmicros": 1390008504711000, "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/b76d8a50-3153-4f6d-bf71-7499146ce619" "generation": 0, "lastupdatemicros": 0 The parameter needstoken is completely optional and should only be specified if the client wishes to use the token for repeated requests. Stats Example Stats /stats -stats BIG-IQ API Reference Guide 3-63

Chapter 3 Authentication token worker API The authentication token worker manages authentication tokens (cookies) that allow password-less interaction with the REST framework. The authentication tokens are issued for a specific life-time. They are not limited to the default 20 minute life-span of the Apache PAM module authentication mechanism. Create an authentication token Creates an authentication token. /mgmt/shared/authz/tokens POST N/A "user": "link": "https://localhost/mgmt/shared/authz/users/admin" "timeout": 1200, "address": "172.27.155.131", "uuid": "962434dd-febe-475c-b268-a8f6ed057e67", "name": "962434DDFEBE475CB268A8F6ED057E67962434DD", "user": "link": "https://localhost/mgmt/shared/authz/users/admin" "timeout": 1200, "starttime": "2013-12-09T09:50:00.415-0800", "address": "172.27.155.131", "partition": "[All]", "generation": 1, "lastupdatemicros": 1386611400415088, "expirationmicros": 1386612600415000, "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/962434dd-febe-475c-b268-a8f6ed057e67" https://172.27.96.95/mgmt/shared/authz/tokens 3-64

Shared APIs Get all auth-tokens Gets all the authentication tokens. /mgmt/shared/authz/tokens GET N/A "items": [ "uuid": "962434dd-febe-475c-b268-a8f6ed057e67", "name": "962434DDFEBE475CB268A8F6ED057E67962434DD", "user": "link": "https://localhost/mgmt/shared/authz/users/admin" "timeout": 1200, "starttime": "2013-12-09T09:50:00.415-0800", "address": "172.27.155.131", "partition": "[All]", "generation": 1, "lastupdatemicros": 1386611400415088, "expirationmicros": 1386612600415000, "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/962434dd-febe-475c-b268-a8f6ed057e67" "generation": 1, "kind": "shared:authz:tokens:authtokencollectionstate", "lastupdatemicros": 1386611400604093, "selflink": "https://localhost/mgmt/shared/authz/tokens" https://172.27.96.95/mgmt/shared/authz/tokens Get auth-tokens based on UUID Gets an the authentication token based on UUID. /mgmt/shared/authz/tokens/uuid GET BIG-IQ API Reference Guide 3-65

Chapter 3 None None "uuid": "962434dd-febe-475c-b268-a8f6ed057e67", "name": "962434DDFEBE475CB268A8F6ED057E67962434DD", "user": "link": "https://localhost/mgmt/shared/authz/users/admin" "timeout": 1200, "starttime": "2013-12-09T09:50:00.415-0800", "address": "172.27.155.131", "partition": "[All]", "generation": 1, "lastupdatemicros": 1386611400415088, "expirationmicros": 1386612600415000, "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/962434dd-febe-475c-b268-a8f6ed057e67" https://172.27.96.95/mgmt/shared/authz/tokens 3-66

Shared APIs Delete all auth-tokens Deletes all the authentication tokens. /mgmt/shared/authz/tokens DELETE None None "result": "EQUAL", "itemsadded": [ "percollectionitemsadded": "itemsdeleted": [ "percollectionitemsdeleted": "itemschanged": [ "itemschangedfrom": [ "percollectionitemschanged": "generation": 0, "lastupdatemicros": 0 https://172.27.96.95/mgmt/shared/authz/tokens Delete auth-tokens based on UUID Deletes an authentication token based on UUID. /mgmt/shared/authz/tokens DELETE None "uuid": "962434dd-febe-475c-b268-a8f6ed057e67", "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/962434dd-febe-475c-b268-a8f6ed057e67" BIG-IQ API Reference Guide 3-67

Chapter 3 "uuid": "962434dd-febe-475c-b268-a8f6ed057e67", "name": "962434DDFEBE475CB268A8F6ED057E67962434DD", "timeout": 0, "generation": 0, "lastupdatemicros": 0, "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/962434dd-febe-475c-b268-a8f6ed057e67" https://172.27.96.95/mgmt/shared/authz/tokens Delete auth-tokens based on state (POJO) Deletes an authentication token based on an AuthTokenItemState. /mgmt/shared/authz/tokens.uuid DELETE None None "uuid": "962434dd-febe-475c-b268-a8f6ed057e67", "name": "D7FDEFA5E8B584F4AB4D305BCF0736F05052E382", "user": "link": "https://localhost/mgmt/shared/authz/users/admin" "timeout": 1200, "starttime": "2013-12-10T10:52:09.799-0800", "address": "172.27.155.131", "partition": "[All]", "generation": 1, "lastupdatemicros": 1386701529797298, "expirationmicros": 1386702729799000, "kind": "shared:authz:tokens:authtokenitemstate", "selflink": "https://localhost/mgmt/shared/authz/tokens/962434dd-febe-475c-b268-a8f6ed057e67" https://172.27.96.95/mgmt/shared/authz/tokens 3-68

Shared APIs BIG-IQ API Reference Guide 3-69

Chapter 3 User authorization APIs The User Authorization API allows administrators to manage users on the system, including adding, removing, updating, and retrieving user information. Get all users Get the complete set of users on the local system. /mgmt/shared/authz/users GET N/A 3-70

Shared APIs HTTP/1.1 200 OK "items": [ "name": "admin", "displayname": "Admin User", "encryptedpassword": "...", "generation": 1, "lastupdatemicros": 1362451546863498, "kind": "shared:authz:users:usersworkerstate", "selflink": "https://localhost/mgmt/shared/authz/users/admin" "name": "my_user", "displayname": "my user display name", "encryptedpassword": "...", "generation": 1, "lastupdatemicros": 1362610154454070, "kind": "shared:authz:users:usersworkerstate", "selflink": "https://localhost/mgmt/shared/authz/users/my_user" "name": "root", "displayname": "root", "generation": 1, "lastupdatemicros": 1362451546271443, "kind": "shared:authz:users:usersworkerstate", "selflink": "https://localhost/mgmt/shared/authz/users/root" "generation": 3, "kind": "shared:authz:users:userscollectionstate", "lastupdatemicros": 1362610154526103, "selflink": "https://localhost/mgmt/shared/authz/users" BIG-IQ API Reference Guide 3-71

Chapter 3 Get single user Get the description of a single local user. /mgmt/shared/authz/users/[username] GET N/A HTTP/1.1 200 OK "name": "administrator", "displayname": "Administrator Account", "encryptedpassword": "..." The response contains the encrypted (hashed) value of the user's password, even if the user was created by specifying an unencrypted password. 3-72

Shared APIs Create user Creates a new user on the system. /mgmt/shared/authz/users POST N/A "name": "administrator", "password": "root", "displayname": "Administrator Account" HTTP/1.1 200 OK By default, a user will have no access to any resources on a system. The user must be added to system roles. Update user Updates a user on the system. /mgmt/shared/authz/users/[username] PUT N/A "name":"my_user", "displayname":"my new display name", "password":"mynewpassword", "generation":1 HTTP/1.1 200 OK "name": "my_user", "displayname": "my new display name", "encryptedpassword": "...", "generation": 2, "lastupdatemicros": 1362610154454070, "kind": "shared:authz:users:usersworkerstate", "selflink": "https://localhost/mgmt/shared/authz/users/my_user" BIG-IQ API Reference Guide 3-73

Chapter 3 At this time, the name field is required and cannot be updated. The password and the displayname field are optional, and will not be changed if left blank. Delete user Deletes a user from the system. /mgmt/shared/authz/user/[username] DELETE N/A HTTP/1.1 200 OK 3-74

Shared APIs Authorization roles APIs This API can be used to manage roles and the users within the roles. Each role has a name and a set of users that are assigned to the role. Each role also has a set of URIs to which the role can be granted access, based on the access type (that is, read, write, delete, all). There is one built-in role, the administrator, which can be given access to every resource on the local system. GET on the roles collection returns the expanded role items. Get all roles Retrieves the roles that have been configured on the local system. /mgmt/shared/authz/roles GET N/A BIG-IQ API Reference Guide 3-75

Chapter 3 HTTP/1.1 200 OK "items": [ "name": "Administrator", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/root" "link": "https://localhost/mgmt/shared/authz/users/admin" "resources": [ "resourcemask": "*", "restmethod": "GET" "resourcemask": "*", "restmethod": "POST" "resourcemask": "*", "restmethod": "PUT" "resourcemask": "*", "restmethod": "DELETE" "resourcemask": "*", "restmethod": "PATCH" "generation": 2, "lastupdatemicros": 1362704364381779, "kind": "shared:authz:roles:rolesworkerstate", "selflink": "https://localhost/mgmt/shared/authz/roles/administrator" "name": "my_users_admin_role", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/my_admin1" "link": "https://localhost/mgmt/shared/authz/users/my_admin2" "resources": [ "resourcemask": "*", "restmethod": "GET" "resourcemask": "*", "restmethod": "POST" "resourcemask": "*", "restmethod": "PUT" "resourcemask": "*", "restmethod": "DELETE" "resourcemask": "*", "restmethod": "PATCH" "resourcegroupreferences":[ "link":"https://localhost/mgmt/shared/authz/roles/resource-groups/1" "generation": 1, "lastupdatemicros": 1362704682321712, "kind": "shared:authz:roles:rolesworkerstate", "selflink": "https://localhost/mgmt/shared/authz/roles/my_users_admin_role" "generation": 2, "kind": "shared:authz:roles:rolescollectionstate", "lastupdatemicros": 1362704682423848, "selflink": "https://localhost/mgmt/shared/authz/roles" 3-76

Shared APIs Get role Retrieves the roles that have been configured on the local system. /mgmt/shared/authz/roles/[rolename] GET N/A BIG-IQ API Reference Guide 3-77

Chapter 3 HTTP/1.1 200 OK "name": "my_users_admin_role", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/my_admin1" "link": "https://localhost/mgmt/shared/authz/users/my_admin2" "resources": [ "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "GET" "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "PUT" "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "POST" "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "DELETE" "generation": 1, "lastupdatemicros": 1362704682321712, "kind": "shared:authz:roles:rolesworkerstate", "selflink": "https://localhost/mgmt/shared/authz/roles/my_users_admin_role" 3-78

Shared APIs Create new role Creates a new role on the system. /mgmt/shared/authz/roles POST N/A "name": "Administrator", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/root" "link": "https://localhost/mgmt/shared/authz/users/admin" "resources": [ "resourcemask": "*", "restmethod": "GET" "resourcemask": "*", "restmethod": "POST" "resourcemask": "*", "restmethod": "PUT" "resourcemask": "*", "restmethod": "DELETE" "resourcemask": "*", "restmethod": "PATCH" "generation": 2, "lastupdatemicros": 1362704364381779, "kind": "shared:authz:roles:rolesworkerstate", "selflink": "https://localhost/mgmt/shared/authz/roles/administrator" BIG-IQ API Reference Guide 3-79

Chapter 3 HTTP/1.1 200 OK "name": "my_users_admin_role", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/my_admin1" "link": "https://localhost/mgmt/shared/authz/users/my_admin2" "resources": [ "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "GET" "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "PUT" "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "POST" "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "DELETE" "generation": 1, "lastupdatemicros": 1362704682321712, "kind": "shared:authz:roles:rolesworkerstate", "selflink": "https://localhost/mgmt/shared/authz/roles/my_users_admin_role" 3-80

Shared APIs Update a role Updates an existing role on the system. /mgmt/shared/authz/roles/<role_name> PUT N/A "name": "my_users_admin_role", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/a_different_admin" "resources": [ "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "GET" "generation": 1 HTTP/1.1 200 OK "name": "my_users_admin_role", "userreferences": [ "link": "https://localhost/mgmt/shared/authz/users/a_different_admin" "resources": [ "resourcemask": "mgmt/shared/authz/users/*", "restmethod": "GET" "generation": 2, "lastupdatemicros": 0 BIG-IQ API Reference Guide 3-81

Chapter 3 Delete role Removes the specified role. /mgmt/shared/authz/roles/<rolename> DELETE N/A HTTP/1.1 200 OK 3-82

Shared APIs Authorization roles resource groups APIs Get all resource groups This API makes it possible to create groups of resources to be associated with a role. Gets all of the groups of resources. /shared/authz/roles/resource-groups GET N/A BIG-IQ API Reference Guide 3-83

Chapter 3 HTTP/1.1 200 OK "items": [ "id": "35859a24-606c-4970-bf63-dd1c194f2ac2", "name": "user editor", "resources": [ "resourcemask": "/mgmt/shared/authz/users", "restmethod": "POST" "resourcemask": "/mgmt/shared/authz/users", "restmethod": "DELETE" "resourcemask": "/mgmt/shared/authz/users", "restmethod": "PUT" "generation": 2, "lastupdatemicros": 1381356047765642, "kind": "shared:authz:roles:resource-groups:roleresourcegroupstate", "selflink": "https://localhost/mgmt/shared/authz/resource-groups/35859a24-606c-4970-bf63-dd1c194f2a c2" "generation": 2, "kind": "shared:authz:roles:resource-groups:roleresourcegroupcollection", "lastupdatemicros": 1381356048053318, "selflink": "https://localhost/mgmt/shared/authz/resource-groups" 3-84

Shared APIs Create a role resource group Creates a group of role resources. /shared/authz/roles/resource-groups POST N/A Request Body "name": "user creator", "resources": [ "resourcemask": "/mgmt/shared/authz/users", "restmethod": "POST" ] HTTP/1.1 200 OK "id": "35859a24-606c-4970-bf63-dd1c194f2ac2", "name": "user creator", "resources": [ "resourcemask": "/mgmt/shared/authz/users", "restmethod": "POST" "generation": 1, "lastupdatemicros": 1381355838013720, "kind": "shared:authz:roles:resource-groups:roleresourcegroupstate", "selflink": "https://localhost/mgmt/shared/authz/resource-groups/35859a24-606c-4970-bf63-dd1c194f2a c2" BIG-IQ API Reference Guide 3-85

Chapter 3 Modify a role resource group Changes a group of role resources. /shared/authz/roles/resource-groups PUT N/A Request Body "id": "35859a24-606c-4970-bf63-dd1c194f2ac2", "name": "user editor", "resources": [ "resourcemask": "/mgmt/shared/authz/users", "restmethod": "POST" "resourcemask": "/mgmt/shared/authz/users", "restmethod": "DELETE" "resourcemask": "/mgmt/shared/authz/users", "restmethod": "PUT" "generation": 1 3-86

Shared APIs HTTP/1.1 200 OK "id": "35859a24-606c-4970-bf63-dd1c194f2ac2", "name": "user editor", "resources": [ "resourcemask": "/mgmt/shared/authz/users", "restmethod": "POST" "resourcemask": "/mgmt/shared/authz/users", "restmethod": "DELETE" "resourcemask": "/mgmt/shared/authz/users", "restmethod": "PUT" "generation": 2, "lastupdatemicros": 1381356047765642, "kind": "shared:authz:roles:resource-groups:roleresourcegroupstate", "selflink": "https://localhost/mgmt/shared/authz/resource-groups/35859a24-606c-4970-bf63-dd1c194f2a c2" BIG-IQ API Reference Guide 3-87

Chapter 3 Remove a group of resources Removes the group of resources. /shared/authz/roles/resource-groups/[uuid] DELETE N/A Request Body Licensing activation APIs These APIs are used to activate F5 licenses by interacting with the F5 license activation server. It can also install the activated license on the local device. There are two work flows for the licensing activation API; one for automatic activation and the other for manual activation. In this context, automatic refers to scenarios in which the BIG-IQ system has Internet access to the F5 license activation server. The manual workflow relies on less direct access (a thumb drive, for example). 3-88

Shared APIs Automatic activation The API workflow for automatic activation uses the following sequence. 1. Post an automatic base key and add-on keys (or if using as a proxy, post the base key and a dossier). 2. Check for automatic activation status and get EULA. 3. Post EULA text. 4. Check for automatic activation status and get license. 5. Install license. Note When you use the automatic method to re-activate a license, you do not perform steps 2 or 3. Post an automatic base key and add-on keys Data Parameters This is the first step in requesting an automatic license request. The first time you send this verb and data parameter combination, you either get a EULA to acknowledge, or an error. /tm/shared/licensing/activation POST "baseregkey" : "XXXXX-XXXXX-XXXXX-XXXX-XXXXXXX", "addonkeys" : [ "XXXXXXX-XXXXXXX", "YYYYYYYY-YYYYYYY" "isautomaticactivation": "true" OR "baseregkey" : "XXXXX-XXXXX-XXXXX-XXXX-XXXXXXX", "dossier" : "<DOSSIER_TEXT_FROM_MANAGED_DEVICE>", "isautomaticactivation": "true" Request Body Response 1: HTTP/1.1 200 OK "status" : "LICENSING_ACTIVATION_IN_PROGRESS" BIG-IQ API Reference Guide 3-89

Chapter 3 This call returns the EULA if the EULA needs to be accepted before licensing. License /tm/shared/licensing/registration Check for automatic activation status and get EULA Checks for the status of an automatic activation request. If you have not yet posted the EULA acceptance, you will get the EULA acceptance text. /tm/shared/licensing/activation GET Data Parameters Request Body 3-90

Shared APIs Response 1: HTTP/1.1 200 OK "status" : "LICENSING_ACTIVATION_IN_PROGRESS", --------------------------------------------------- Response 2: HTTP/1.1 200 OK "status" : "LICENSING_COMPLETE", "licensetext" : "<LICENSE_TEXT>" --------------------------------------------------- Response 3: HTTP/1.1 200 OK "status" : "LICENSING_FAILED", "errortext":"..." --------------------------------------------------- Response 4: HTTP/1.1 200 OK "status" : "NEED_EULA_ACCEPT", "eulatext" : "<EULA_TEXT>" This call returns the EULA if the EULA needs to be accepted before licensing. License /tm/shared/licensing/registration BIG-IQ API Reference Guide 3-91

Chapter 3 Post EULA text Once you receive the EULA text to acknowledge, include the text in the data parameter to trigger the license activation. This sends acceptance of the EULA that was returned in response to the activation request. /tm/shared/licensing/activation POST "baseregkey" : "XXXXX-XXXXX-XXXXX-XXXX-XXXXXXX", "addonkeys" : [ "XXXXXXX-XXXXXXX", "YYYYYYYY-YYYYYYY" "eulatext" : "<EULA_TEXT>", "isautomaticactivation": "true" Request Body HTTP/1.1 200 OK "status" : "LICENSING_ACTIVATION_IN_PROGRESS" Check for automatic activation status and get license After you have accepted the EULA, request activation status and get a license. /tm/shared/licensing/activation POST Request Body 3-92

Shared APIs Response 1: HTTP/1.1 200 OK "status" : "LICENSING_ACTIVATION_IN_PROGRESS", --------------------------------------------------- Response 2: HTTP/1.1 200 OK "status" : "LICENSING_COMPLETE", "licensetext" : "<LICENSE_TEXT>" --------------------------------------------------- Response 4: HTTP/1.1 200 OK "status" : "LICENSING_FAILED", "errortext":"..." This call returns the EULA if the EULA needs to be accepted before licensing. License /tm/shared/licensing/registration BIG-IQ API Reference Guide 3-93

Chapter 3 Install license Installs the license obtained from the activate server web page. /tm/shared/licensing/activation PUT "licensetext" : "<LICENSE_TEXT>" Request Body HTTP/1.1 200 OK LicenseState object Manual activation method The API workflow for manual activation uses the following sequence. 1. Post manual base key and add-on keys. 2. Check for status and get dossier. 3. Install license. 3-94

Shared APIs Post manual base key and add-on keys Use this verb and data parameter combination to request a manual license activation. You will receive a dossier to send to the licensing activate server. /tm/shared/licensing/activation POST "baseregkey" : "XXXXX-XXXXX-XXXXX-XXXX-XXXXXXX", "addonkeys" : [ "XXXXXXX-XXXXXXX", "YYYYYYYY-YYYYYYY" "automaticactivation": "false" Request Body HTTP/1.1 200 OK "status" : "LICENSING_ACTIVATION_IN_PROGRESS" Check for status and get dossier Generates and sends a dossier to the licensing server, which results in a license activation if all conditions are met. /tm/shared/licensing/activation GET Request Body BIG-IQ API Reference Guide 3-95

Chapter 3 Response 1: HTTP/1.1 200 OK "status" : "LICENSING_ACTIVATION_IN_PROGRESS", --------------------------------------------------- Response 2: HTTP/1.1 200 OK "status" : "DOSSIER_GENERATION_FAILED", "errortext":"..." --------------------------------------------------- Response 3: HTTP/1.1 200 OK "status" : "DOSSIER_GENERATED", "dossier" : "<DOSSIER>" Does not involve any contact with the F5 licensing server. License /tm/shared/licensing/registration 3-96

Shared APIs Install license Install the license obtained from the activate server web page. /tm/shared/licensing/activation PUT "licensetext" : "<LICENSE_TEXT>" Request Body HTTP/1.1 200 OK LicenseState object Registration key management APIs These APIs provide a means for storing registration keys for provisioning BIG-IP devices. With these APIs, you can create, delete, and modify registration keys. Query registration keys Gets all of the registration keys. /cm/shared/licensing/registrations GET Param 1 Name Status Values For getting only the keys available for activation NEED_EULA_ACCEPTANCE, AVAILABLE, ASSIGNED BIG-IQ API Reference Guide 3-97

Chapter 3 HTTP/1.1 201 OK "items": [ "id": "76c43691-db88-4994-97ea-21eea10b45c9", "registrationkey": "IWQXC-PGBAMF-VQJ-JUZXXHK-HRVWEJN", "eulatext": "<pre-accepted eula text>", "unlimited": false, "status": "AVAILABLE", "generation": 1, "lastupdatemicros": 1373318414849275, "kind": "cm:shared:licensing:registrations:registrationkeystate", "selflink": "https://localhost/mgmt/cm/shared/licensing/registrations/76c43691-db88-4994-97ea-21eea 10b45c9" "generation": 6, "kind": "cm:shared:licensing:registrations:registrationkeycollectionstate", "lastupdatemicros": 1373318414851995, "selflink": "https://localhost/mgmt/cm/shared/licensing/registrations" 3-98

Shared APIs Create a registration key record Creates a new registration key with the provided values. /cm/shared/licensing/registrations POST registrationkey : "IWQXC-PGBAMF-VQJ-JUZXXHK-HRVWEJN", unlimited : "false", status : "NEED_EULA_ACCEPTANCE" HTTP/1.1 200 OK "id": "6950275b-eceb-4214-8dce-ada7d6cf9ae2", "registrationkey": "IWQXC-PGBAMF-VQJ-JUZXXHK-HRVWEJN", "unlimited": false, "status": "NEED_EULA_ACCEPTANCE", "generation": 1, "lastupdatemicros": 1373317907791230, "kind": "cm:shared:licensing:registrations:registrationkeystate", "selflink": "https://localhost/mgmt/cm/shared/licensing/registrations/6950275b-eceb-4214-8dce-ada7d 6cf9ae2" If the key is not unlimited, then the status should be set to assigned after the first activation. Add User-Accepted EULA text Adds EULA text to a record that can be used when activating the key. This modifies the key record to show that it has been activated for a device. /cm/shared/licensing/registrations/id PATCH BIG-IQ API Reference Guide 3-99

Chapter 3 "eulatext" : "<pre-accepted eula text>", "status" : "AVAILABLE" HTTP/1.1 200 OK "id": "6950275b-eceb-4214-8dce-ada7d6cf9ae2", "registrationkey": "IWQXC-PGBAMF-VQJ-JUZXXHK-HRVWEJN", "eulatext" : "<pre-accepted eula text>" "unlimited": false, "status": "AVAILABLE", "generation": 2, "lastupdatemicros": 1373317907791230, "kind": "cm:shared:licensing:registrations:registrationkeystate", "selflink": "https://localhost/mgmt/cm/shared/licensing/registrations/6950275b-eceb-4214-8dce-ada7d6 cf9ae2" 3-100

Shared APIs Assign a key to a device Links an existing key to a new device by modifying the key record to show it has been activated for a device. /cm/shared/licensing/registrations/id PATCH "devices": [ "link": "https://localhost/mgmt/cm/cloud/device-group/4356236b-eceb-4214-8dce-ada7d6cf9ae2" "status": "ASSIGNED" HTTP/1.1 200 OK "id": "6950275b-eceb-4214-8dce-ada7d6cf9ae2", "registrationkey": "IWQXC-PGBAMF-VQJ-JUZXXHK-HRVWEJN", "devices": [ "link": "https://localhost/mgmt/cm/cloud/device-group/4356236b-eceb-4214-8dce-ada7d6cf9ae2" "eulatext" : "<pre-accepted eula text>" "unlimited": false, "status": "ASSIGNED", "generation": 3, "lastupdatemicros": 1373317907791230, "kind": "cm:shared:licensing:registrations:registrationkeystate", "selflink": "https://localhost/mgmt/cm/shared/licensing/registrations/6950275b-eceb-4214-8dce-ada7d 6cf9ae2" If the key is not unlimited, then status should be set to assigned after the first activation. BIG-IQ API Reference Guide 3-101

Chapter 3 Delete a registration key record Deletes a key. /cm/shared/licensing/registrations/id DELETE HTTP/1.1 200 OK Licensing pools APIs The licensing pool APIs are used to manage pools licenses. These APIs can be used to add, delete, and update license pool keys, and activate, update, or deactivate licenses for devices and groups of devices. There is an automatic method and a manual activation method. The automatic method requires the ability to contact the F5 licensing server. There are four steps in this process, Steps 1 and 4 are the same for both methods. Create a license pool Creates a license pool, this is the first step in the sequence. /cm/shared/licensing/pools POST N/A "name" : "pool name", "baseregkey" : "ABC-XYZ", "addonkeys":["def-uvw" method:"automatic" 3-102

Shared APIs HTTP/1.1 201 Created "name" : "pool name", "baseregkey" : "ABC-XYZ", "addonkeys":["def-uvw" method:"automatic", "uuid":"123", "selflink":"https://localhost/mgmt/cm/shared/licensing/pools/123" addonkeys is optional, method field can be AUTOMATIC or MANUAL, defaults to AUTOMATIC. Get the EULA (automatic method) This is step two when you use the automatic method. Gets the EULA, so it can be accepted. /cm/shared/licensing/pools/<uuid> GET N/A N/A HTTP/1.1 201 Created "name" : "pool name", "baseregkey" : "ABC-XYZ", "addonkeys":["def-uvw" "method":"automatic", "eulatext":"...", "uuid":"123", "selflink":"https://localhost/mgmt/cm/shared/licensing/pools/123" The EULA might not appear immediately, but you can poll or subscribe for changes. BIG-IQ API Reference Guide 3-103

Chapter 3 Get the dossier (manual method) This is step two when you use the manual method. Gets the dossier. /cm/shared/licensing/pools/<uuid> GET N/A N/A HTTP/1.1 201 Created "name" : "pool name", "baseregkey" : "ABC-XYZ", "addonkeys":["def-uvw" "method":"manual", "dossier":"...", "uuid":"123", "selflink":"https://localhost/mgmt/cm/shared/licensing/pools/123" The dossier might not appear immediately, but you can poll or subscribe for changes. Submit the dossier through the normal manual license activation method at activate.f5.com. 3-104

Shared APIs Accept the EULA (automatic method) This is step three when you use the automatic method. Agree to the EULA, proceed with the licensing activation. /cm/shared/licensing/pools/<uuid> PATCH N/A "eulatext": "...", "state":"accepted_eula" HTTP/1.1 201 Created The eulatext must match the text provided by the worker in the previous step. If a EULA has been previously accepted for this license, you might not need to accept the EULA. BIG-IQ API Reference Guide 3-105

Chapter 3 Patch the license text (manual method) This is step three in the manual activation sequence. Copy the license text from activate.f5.com and submit it here. /cm/shared/licensing/pools/<uuid> PATCH N/A "licensetext": "..." HTTP/1.1 200 Accepted The licensetext must match exactly what is provided from activate.f5.com, if an inaccurate licensetext is given, pool device activations might fail. Poll to check the status of the pool license with a GET (described above) to verify that the pool is LICENSED. 3-106

Shared APIs Activate a device This is step four in both activation sequences. Adds a device to the license pool and activates it. /cm/shared/licensing/pools/<uuid>/members POST N/A "devicereference":"link":"https://localhost/mgmt/..." HTTP/1.1 200 Created "devicereference":"link":"https://localhost/mgmt/..." "uuid":"222", "selflink":"https://localhost/mgmt/cm/shared/licensing/pools/123/members/222" BIG-IQ API Reference Guide 3-107

Chapter 3 Re-activate a pool license to add keys or update service check date Re-activates a pool license to include additional add-on keys or update expiration/service check dates. /cm/shared/licensing/pools/<uuid> PATCH N/A "state":"relicense" HTTP/1.1 200 "devicereference":"link":"https://localhost/mgmt/..." "uuid":"333", "selflink":"https://localhost/mgmt/cm/shared/licensing/pools/123/members/333", "state":"install" Re-activate a device or retry license install Reactivates an expired license or retry a failed installation. /cm/shared/licensing/pools/<uuid>/members/<member uuid> PATCH N/A "state":"install" HTTP/1.1 200 "devicereference":"link":"https://localhost/mgmt/..." "uuid":"333", "selflink":"https://localhost/mgmt/cm/shared/licensing/pools/123/members/333", "state":"install" 3-108

Shared APIs Deactivate a device or device group Removes a device or device group from the license pool and deactivate the licenses associated with those devices. /cm/shared/licensing/pools/<uuid>/members/<member uuid> DELETE N/A N/A HTTP/1.1 200 OK BIG-IQ API Reference Guide 3-109

Chapter 3 Deactivate a license pool Removes a device pool. /cm/shared/licensing/pools/<pool uuid> DELETE N/A N/A HTTP/1.1 200 OK 3-110