Difference between revisions of "MelangeAPIBase"
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | = | + | = General API Information = |
− | + | The Melange API is implemented using a RESTful web service interface. | |
* All GET /resources accepts 'limit' and 'marker' params. If these params are not passed default limit is applied. | * All GET /resources accepts 'limit' and 'marker' params. If these params are not passed default limit is applied. | ||
− | + | * If POST or PUT on a resource doesn't send mandatory params, API returns '400 Bad Request' response. | |
− | |||
− | * If POST or PUT on a resource doesn't send mandatory params, API returns 400 Bad | ||
− | - | + | = Request/Response Types = |
− | + | * The Melange API supports both the JSON and XML data serialization formats. | |
− | + | * The request format is specified using the Content-Type header and is required for operations that have a request body. | |
+ | * The response format can be specified in requests using either the Accept header or adding an .xml or .json extension to the request URI. | ||
+ | * If no response format is specified, JSON is the default. | ||
+ | * If conflicting formats are specified using both an Accept header and a query extension, the query extension takes precedence. | ||
− | + | == Versions == | |
+ | * Lists all versions of the API | ||
− | + | Method : GET | |
+ | URL : / | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
− | + | == Extensions == | |
+ | The Melange API is extensible. The API Extensions allow introducing new features in the API without requiring a version change and allows vendor specific niche functionality. The API extensions work similar to nova extensions. | ||
− | + | * Lists all extensions of the API | |
− | + | Method : GET | |
− | + | URL : /extensions | |
− | Method : GET URL : / | + | Params : None |
+ | Response Code : Success - 200 OK | ||
− | + | * Get details all extensions of the API | |
− | + | Method : GET | |
+ | URL : /extensions/alias | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
− | + | === NOTE: === | |
+ | All the urls below are prefixed by "/v0.1". | ||
− | + | == Global IP Blocks == | |
+ | * Lists all ip blocks | ||
− | + | Method : GET | |
+ | URL : /ipam/ip_blocks | ||
+ | Params : type ('public' or 'private') | ||
+ | Response Code : Success - 200 OK | ||
− | + | * List all subnets of an ip block | |
− | Response Code : Success - | + | Method : GET |
+ | URL : /ipam/ip_blocks/{ip_block_id}/subnets | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Get details of an ip block by given id | |
− | Params : None | + | Method : GET |
+ | URL : /ipam/ip_blocks/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Create an ip block | |
− | Response Code : Success - | + | Method : POST |
+ | URL : /ipam/ip_blocks | ||
+ | Params : 'type': 'public' or 'private' [Mandatory] | ||
+ | 'cidr': [[IpV4]] or [[IpV6]] cidr [Mandatory] | ||
+ | 'network_id' : Can be a uuid, any string accepted | ||
+ | 'policy_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 201 Created | ||
− | * | + | * Create a subnet in an ip block |
− | Method : | + | Method : POST |
+ | URL : /ipam/ip_blocks/{ip_block_id}/subnets | ||
+ | Params : 'cidr': [[IpV4]] or [[IpV6]] cidr [Mandatory] | ||
+ | 'network_id' : Can be a uuid, any string accepted | ||
+ | 'policy_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Update details of an ip block by given id | |
− | + | Method : PUT | |
+ | URL : /ipam/ip_blocks/:(id) | ||
+ | Params : 'network_id' : Can be a uuid, any string accepted | ||
+ | 'policy_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Delete an ip block by given id | |
− | + | Method : DELETE | |
+ | URL : /ipam/ip_blocks/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | == Tenant's IP Blocks == | |
− | == | + | * Lists all ip blocks of a tenant |
− | |||
− | Params : | + | Method : GET |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks | ||
+ | Params : type ('public' or 'private') | ||
+ | Response Code : Success - 200 OK | ||
− | + | * List all subnets of a tenant's ip block | |
− | Response Code : Success - 200 OK | + | Method : GET |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/subnets | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Get details of an tenant's ip block | |
− | Params : | + | Method : GET |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | * ' | + | * Create a tenant's ip block |
− | + | Method : POST | |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks | ||
+ | Params : 'type': 'public' or 'private' [Mandatory] | ||
+ | 'cidr': [[IpV4]] or [[IpV6]] cidr [Mandatory] | ||
+ | 'network_id' : Can be a uuid, any string accepted | ||
+ | 'policy_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 201 Created | ||
− | + | * Create a subnet in a tenant's ip block | |
− | Method : | + | Method : POST |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/subnets | ||
+ | Params : 'cidr': [[IpV4]] or [[IpV6]] cidr [Mandatory] | ||
+ | 'network_id' : Can be a uuid, any string accepted | ||
+ | 'policy_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Update details of a tenant's ip block by given id | |
− | + | Method : PUT | |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/:(id) | ||
+ | Params : 'network_id' : Can be a uuid, any string accepted | ||
+ | 'policy_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | * Delete a tenant's ip block by given id | |
− | + | Method : DELETE | |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock doesn't exist] | ||
− | + | == [[IpAddress]] from Global IP Blocks == | |
+ | * List all ip addresses in the ip block. | ||
− | Params : None | + | Method : GET |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found (When [[IpBlock]] for given ip_block_id is not found) | ||
− | + | * Get details of an ip address. | |
− | Response Code : Success - 200 OK | + | Method : GET |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address} | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for given ip_block_id is not found, or IpAddress for given address is not found] | ||
− | * | + | * Allocate an [[IpAddress]] from a block. |
− | + | Method : POST | |
− | + | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses | |
− | + | Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. | |
− | Method : | + | 'port_id' : Can be a uuid, any string accepted |
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When IpBlock for given ip_block_id is not found] | ||
+ | 422 Unprocessable Entity [If any new ip_address can not be allocated from IpBlock] | ||
+ | 409 Conflict [If the given address is already allocated] | ||
− | + | * Deallocate an [[IpAddress]] | |
− | + | Method : DELETE | |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address} | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for given ip_block_id is not found, or IpAddress for given address is not found] | ||
− | + | * Restore a deallocated address. | |
− | + | Method : PUT | |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/restore | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for given ip_block_id is not found or IpAddress for given address is not found] | ||
− | == | + | == [[IpAddress]] from Tenant's IP Blocks == |
− | |||
− | + | * Get details of an ip address in a tenant's ip block. | |
− | + | Method : GET | |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address} | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When either IpBlock for given ip_block_id and tenant_id is not found, or IpAddress for given address is not found] | ||
− | + | * List all ip addresses in a tenant's ip block. | |
− | + | Method : GET | |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for given ip_block_id and tenant_id is not found] | ||
− | + | * Allocate an [[IpAddress]] from a tenant's block. | |
− | |||
− | + | Method : POST | |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses | ||
+ | Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. | ||
+ | 'port_id' : Can be a uuid, any string accepted | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When IpBlock for given ip_block_id and tenant_id is not found] | ||
+ | 422 Unprocessable Entity [If any new ip_address can not be allocated from IpBlock] | ||
+ | 409 Conflict [If the given address is already allocated] | ||
− | * | + | * Deallocate an [[IpAddress]] from a tenant's block. |
− | Response Code : Success - | + | Method : DELETE |
+ | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address} | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When ip_block for given id and tenant_id is not found] | ||
− | * | + | * Restore a deallocated address from a tenant's block. |
− | |||
− | + | Method : PUT | |
− | Method : | + | URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address}/restore |
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for given id and tenant_id is not found or IpAddress for given address is not found] | ||
− | + | == IP allocations in a Network == | |
+ | These API create an ipv4 and ipv6 address for given interface(port). | ||
− | + | * Allocate an [[IpAddress]] from a global network. | |
− | Response Code : Success - | + | Method : POST |
+ | URL : /ipam/networks/{network_id}/ports/{port_id}/ip_allocations | ||
+ | Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 422 Unprocessable Entity [If ip address can not be allocated from Network] | ||
+ | 409 Conflict [If the given address is already allocated] | ||
− | * | + | * Allocate an [[IpAddress]] from a tenant's network. |
− | + | Method : POST | |
− | Method : | + | URL : /ipam/tenants/{tenant_id}/networks/{network_id}/ports/{port_id}/ip_allocations |
+ | Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 422 Unprocessable Entity [If ip address can not be allocated from tenant's Network] | ||
+ | 409 Conflict [If the given address is already allocated] | ||
− | + | == Natting API == | |
− | + | * List all inside globals for a local ip_address | |
− | Response Code : Success - 200 OK | + | Method : GET |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals | ||
+ | Params : None | ||
+ | Description : Return the inside global ip_addresses for the local ip_address of the ip_block. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found] | ||
− | * | + | * List all inside locals for a global ip_address |
− | -- | + | Method : GET |
− | + | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals | |
− | + | Params : None | |
+ | Description : Return the inside local ip_addresses for the global ip_address of the ip_block. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found] | ||
− | + | * Add Inside Global IPs to a local IP | |
− | Params : | + | Method : POST |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals | ||
+ | Params : {'ip_addresses':'[ { "ip_block_id" : "some_global_ip_block_id", "ip_address" : "some_global_ip_address" } ... {} } | ||
+ | Description : Finds local [[IpAddress]] from given ip_block_id and address and creates [[IpAddresses]] passed in params as its inside global. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 400 Bad Request [When the values of ip_block_id and ip_address are missing in the params] | ||
− | + | * Add Inside Local IPs to a global IP | |
− | Response Code : Success - 200 OK | + | Method : POST |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals | ||
+ | Params : {'ip_addresses':'[ { "ip_block_id" : "some_local_ip_block_id", "ip_address" : "some_local_ip_address" } ... {} } | ||
+ | Description : Finds global [[IpAddress]] from given ip_block_id and address and adds [[IpAddresses]] passed in params as its inside local. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 400 Bad Request [When the values of ip_block_id and ip_address are missing in the params] | ||
− | * | + | * Delete a specific inside global for a local ip_address |
− | + | Method : DELETE | |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals/{address} | ||
+ | Params : None | ||
+ | Description : Finds the inside ip_address from given ip_block_id and address, and remove its inside global ip_address whose address is same as given address. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found] | ||
− | + | * Delete a specific inside local for a global ip_address | |
− | Params : None | + | Method : DELETE |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals/{address} | ||
+ | Params : None | ||
+ | Description : Finds the global ip_address from given ip_block_id and address, and remove its inside local ip_address whose address is same as given address. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found] | ||
− | + | * Delete all inside globals for a local ip_address | |
− | Response Code : Success - 200 OK | + | Method : DELETE |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals | ||
+ | Params : None | ||
+ | Description : Finds the inside ip_address from given ip_block_id and address, and remove all its inside global ip_addresses. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found] | ||
− | * | + | * Delete all inside locals for a global ip_address |
− | + | Method : DELETE | |
+ | URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals | ||
+ | Params : None | ||
+ | Description : Finds the global ip_address from given ip_block_id and address, and remove all its inside local ip_addresses. | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress for global ip_address are not found] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Global Policies == | == Global Policies == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * Lists all global policies | |
− | Params : None | + | Method : GET |
+ | URL : /ipam/policies | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
− | + | * Get details of a global policy | |
− | Response Code : Success - 200 OK | + | Method : GET |
+ | URL : /ipam/policies/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | * | + | * Create a global policy |
− | Method : | + | Method : POST |
+ | URL : /ipam/policies | ||
+ | Params : 'name': string [Mandatory] | ||
+ | 'description' : string | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 422 [[UnProcessable]] Entity [When name is None] | ||
− | + | * Update details of a global policy | |
− | + | Method : PUT | |
+ | URL : /ipam/policies/:(id) | ||
+ | Params : 'name', 'description' | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Delete a global policy | |
− | + | Method : DELETE | |
+ | URL : /ipam/policies/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | |||
== Global Policy Unusable Ip Ranges == | == Global Policy Unusable Ip Ranges == | ||
− | |||
− | |||
− | |||
− | + | * List all unusable ip ranges of a global policy | |
− | Response Code : Success - 200 OK | + | Method : GET |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_ranges | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Get details of a global policy's unusable ip range | |
− | Params : | + | Method : GET |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_ranges/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Range doesn't exist] | ||
− | * | + | * Create a unusable ip range in global policy |
− | + | Method : POST | |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_ranges | ||
+ | Params : 'offset': integer [Mandatory, Can be +ve or -ve integer] | ||
+ | 'length' : integer [Mandatory, Should be +ve integer] | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Update details of a global policy's unusable ip range | |
− | Method : | + | Method : PUT |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_ranges/:(id) | ||
+ | Params : 'offset', 'length' | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Range doesn't exist] | ||
− | + | * Delete a global policy's unusable ip range | |
− | + | Method : DELETE | |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_ranges/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Range doesn't exist] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Global Policy Unusable Ip Octets == | == Global Policy Unusable Ip Octets == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * List all unusable ip octets of a global policy | |
− | Params : | + | Method : GET |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_octets | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Get details of a global policy's unusable ip octet | |
− | Response Code : Success - | + | Method : GET |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_octets/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Octet doesn't exist] | ||
− | + | * Create a unusable ip octet in global policy | |
− | Params : | + | Method : POST |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_octets | ||
+ | Params : 'octet': integer [Mandatory, Should be 0-255] | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Delete a global policy's unusable ip octet | |
− | Response Code : Success - 200 OK | + | Method : DELETE |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_octets/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Octet doesn't exist] | ||
− | * | + | * Update details of a global policy's unusable ip octet |
− | Method : | + | Method : PUT |
+ | URL : /ipam/policies/{policy_id}/unusable_ip_octets/:(id) | ||
+ | Params : 'octet' | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Octet doesn't exist] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Tenant Policies == | == Tenant Policies == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * List all tenant's policies | |
− | Method : | + | Method : GET |
+ | URL : /ipam/tenants/{tenant_id}/policies | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
− | + | * Get details of a tenant's policy | |
− | + | Method : GET | |
+ | URL : /ipam/tenants/{tenant_id}/policies/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Create a tenant's policy | |
− | + | Method : POST | |
+ | URL : /ipam/tenants/{tenant_id}/policies | ||
+ | Params : 'name': string [Mandatory] | ||
+ | 'description' : string | ||
+ | Response Code : Success - 201 Created | ||
− | + | * Update details of a tenant's policy | |
− | + | Method : PUT | |
+ | URL : /ipam/tenants/{tenant_id}/policies/:(id) | ||
+ | Params : 'name', 'description' | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Delete a tenant's policy | |
− | + | Method : DELETE | |
+ | URL : /ipam/tenants/{tenant_id}/policies/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Tenant Policy Unusable Ip Ranges == | == Tenant Policy Unusable Ip Ranges == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * List all unusable ip ranges of a tenant's policy | |
− | Params : None | + | Method : GET |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Get details of a tenant's policy's unusable ip range | |
− | Response Code : Success - 200 OK | + | Method : GET |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Range doesn't exist] | ||
− | * | + | * Create a unusable ip range in tenant's policy |
− | Method : | + | Method : POST |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges | ||
+ | Params : 'offset': integer [Mandatory, Can be +ve or -ve integer] | ||
+ | 'length' : integer [Mandatory, Should be +ve integer] | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Update details of a tenant's policy's unusable ip range | |
− | + | Method : PUT | |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id) | ||
+ | Params : 'offset', 'length' | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Range doesn't exist] | ||
− | + | * Delete a tenant's policy's unusable ip range | |
− | + | Method : DELETE | |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Range doesn't exist] | ||
− | |||
== Tenant Policy Unusable Ip Octets == | == Tenant Policy Unusable Ip Octets == | ||
− | + | * List all unusable ip octets of a tenant's policy | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Method : GET | |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Get details of a tenant's policy's unusable ip octet | |
− | + | Method : GET | |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id) | ||
+ | Params : None | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Octet doesn't exist] | ||
− | + | * Create a unusable ip octet in tenant's policy | |
− | Params : 'octet' | + | Method : POST |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets | ||
+ | Params : 'octet': integer [Mandatory, Should be 0-255] | ||
+ | Response Code : Success - 201 Created | ||
+ | Error - 404 Not Found [When Policy doesn't exist] | ||
− | + | * Update details of a tenant's policy's unusable ip octet. | |
− | Response Code : Success - 200 OK | + | Method : PUT |
+ | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id) | ||
+ | Params : 'octet' | ||
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Octet doesn't exist] | ||
− | * | + | * Delete a tenant's policy's unusable ip octet |
− | -- | + | Method : DELETE |
− | + | URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id) | |
− | + | Params : None | |
+ | Response Code : Success - 200 OK | ||
+ | Error - 404 Not Found [When Policy or Ip Octet doesn't exist] | ||
− | + | = To Be Done: = | |
− | + | * Authentication and Authorization using keystone identity service. | |
− | * Add | + | * Add 'next' links in paginated list resources. |
+ | * Add 'self' and 'bookmark' links in resource details. | ||
+ | * Versions atom feed | ||
+ | * Versioning by mime type |
Revision as of 17:40, 27 July 2011
General API Information
The Melange API is implemented using a RESTful web service interface.
- All GET /resources accepts 'limit' and 'marker' params. If these params are not passed default limit is applied.
- If POST or PUT on a resource doesn't send mandatory params, API returns '400 Bad Request' response.
Request/Response Types
- The Melange API supports both the JSON and XML data serialization formats.
- The request format is specified using the Content-Type header and is required for operations that have a request body.
- The response format can be specified in requests using either the Accept header or adding an .xml or .json extension to the request URI.
- If no response format is specified, JSON is the default.
- If conflicting formats are specified using both an Accept header and a query extension, the query extension takes precedence.
Versions
- Lists all versions of the API
Method : GET URL : / Params : None Response Code : Success - 200 OK
Extensions
The Melange API is extensible. The API Extensions allow introducing new features in the API without requiring a version change and allows vendor specific niche functionality. The API extensions work similar to nova extensions.
- Lists all extensions of the API
Method : GET URL : /extensions Params : None Response Code : Success - 200 OK
- Get details all extensions of the API
Method : GET URL : /extensions/alias Params : None Response Code : Success - 200 OK
NOTE:
All the urls below are prefixed by "/v0.1".
Global IP Blocks
- Lists all ip blocks
Method : GET URL : /ipam/ip_blocks Params : type ('public' or 'private') Response Code : Success - 200 OK
- List all subnets of an ip block
Method : GET URL : /ipam/ip_blocks/{ip_block_id}/subnets Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
- Get details of an ip block by given id
Method : GET URL : /ipam/ip_blocks/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
- Create an ip block
Method : POST URL : /ipam/ip_blocks Params : 'type': 'public' or 'private' [Mandatory] 'cidr': IpV4 or IpV6 cidr [Mandatory] 'network_id' : Can be a uuid, any string accepted 'policy_id' : Can be a uuid, any string accepted Response Code : Success - 201 Created
- Create a subnet in an ip block
Method : POST URL : /ipam/ip_blocks/{ip_block_id}/subnets Params : 'cidr': IpV4 or IpV6 cidr [Mandatory] 'network_id' : Can be a uuid, any string accepted 'policy_id' : Can be a uuid, any string accepted Response Code : Success - 201 Created Error - 404 Not Found [When IpBlock doesn't exist]
- Update details of an ip block by given id
Method : PUT URL : /ipam/ip_blocks/:(id) Params : 'network_id' : Can be a uuid, any string accepted 'policy_id' : Can be a uuid, any string accepted Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
- Delete an ip block by given id
Method : DELETE URL : /ipam/ip_blocks/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
Tenant's IP Blocks
- Lists all ip blocks of a tenant
Method : GET URL : /ipam/tenants/{tenant_id}/ip_blocks Params : type ('public' or 'private') Response Code : Success - 200 OK
- List all subnets of a tenant's ip block
Method : GET URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/subnets Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
- Get details of an tenant's ip block
Method : GET URL : /ipam/tenants/{tenant_id}/ip_blocks/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
- Create a tenant's ip block
Method : POST URL : /ipam/tenants/{tenant_id}/ip_blocks Params : 'type': 'public' or 'private' [Mandatory] 'cidr': IpV4 or IpV6 cidr [Mandatory] 'network_id' : Can be a uuid, any string accepted 'policy_id' : Can be a uuid, any string accepted Response Code : Success - 201 Created
- Create a subnet in a tenant's ip block
Method : POST URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/subnets Params : 'cidr': IpV4 or IpV6 cidr [Mandatory] 'network_id' : Can be a uuid, any string accepted 'policy_id' : Can be a uuid, any string accepted Response Code : Success - 201 Created Error - 404 Not Found [When IpBlock doesn't exist]
- Update details of a tenant's ip block by given id
Method : PUT URL : /ipam/tenants/{tenant_id}/ip_blocks/:(id) Params : 'network_id' : Can be a uuid, any string accepted 'policy_id' : Can be a uuid, any string accepted Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
- Delete a tenant's ip block by given id
Method : DELETE URL : /ipam/tenants/{tenant_id}/ip_blocks/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock doesn't exist]
IpAddress from Global IP Blocks
- List all ip addresses in the ip block.
Method : GET URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses Params : None Response Code : Success - 200 OK Error - 404 Not Found (When IpBlock for given ip_block_id is not found)
- Get details of an ip address.
Method : GET URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address} Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for given ip_block_id is not found, or IpAddress for given address is not found]
- Allocate an IpAddress from a block.
Method : POST URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. 'port_id' : Can be a uuid, any string accepted Response Code : Success - 201 Created Error - 404 Not Found [When IpBlock for given ip_block_id is not found] 422 Unprocessable Entity [If any new ip_address can not be allocated from IpBlock] 409 Conflict [If the given address is already allocated]
- Deallocate an IpAddress
Method : DELETE URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address} Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for given ip_block_id is not found, or IpAddress for given address is not found]
- Restore a deallocated address.
Method : PUT URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/restore Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for given ip_block_id is not found or IpAddress for given address is not found]
IpAddress from Tenant's IP Blocks
- Get details of an ip address in a tenant's ip block.
Method : GET URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address} Params : None Response Code : Success - 200 OK Error - 404 Not Found [When either IpBlock for given ip_block_id and tenant_id is not found, or IpAddress for given address is not found]
- List all ip addresses in a tenant's ip block.
Method : GET URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for given ip_block_id and tenant_id is not found]
- Allocate an IpAddress from a tenant's block.
Method : POST URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. 'port_id' : Can be a uuid, any string accepted Response Code : Success - 201 Created Error - 404 Not Found [When IpBlock for given ip_block_id and tenant_id is not found] 422 Unprocessable Entity [If any new ip_address can not be allocated from IpBlock] 409 Conflict [If the given address is already allocated]
- Deallocate an IpAddress from a tenant's block.
Method : DELETE URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address} Params : None Response Code : Success - 200 OK Error - 404 Not Found [When ip_block for given id and tenant_id is not found]
- Restore a deallocated address from a tenant's block.
Method : PUT URL : /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address}/restore Params : None Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for given id and tenant_id is not found or IpAddress for given address is not found]
IP allocations in a Network
These API create an ipv4 and ipv6 address for given interface(port).
- Allocate an IpAddress from a global network.
Method : POST URL : /ipam/networks/{network_id}/ports/{port_id}/ip_allocations Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. Response Code : Success - 201 Created Error - 422 Unprocessable Entity [If ip address can not be allocated from Network] 409 Conflict [If the given address is already allocated]
- Allocate an IpAddress from a tenant's network.
Method : POST URL : /ipam/tenants/{tenant_id}/networks/{network_id}/ports/{port_id}/ip_allocations Params : 'address' : This address is used for allocation. If this is not provided, next available address will be allocated. Response Code : Success - 201 Created Error - 422 Unprocessable Entity [If ip address can not be allocated from tenant's Network] 409 Conflict [If the given address is already allocated]
Natting API
- List all inside globals for a local ip_address
Method : GET URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals Params : None Description : Return the inside global ip_addresses for the local ip_address of the ip_block. Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found]
- List all inside locals for a global ip_address
Method : GET URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals Params : None Description : Return the inside local ip_addresses for the global ip_address of the ip_block. Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found]
- Add Inside Global IPs to a local IP
Method : POST URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals Params : {'ip_addresses':'[ { "ip_block_id" : "some_global_ip_block_id", "ip_address" : "some_global_ip_address" } ... {} } Description : Finds local IpAddress from given ip_block_id and address and creates IpAddresses passed in params as its inside global. Response Code : Success - 200 OK Error - 400 Bad Request [When the values of ip_block_id and ip_address are missing in the params]
- Add Inside Local IPs to a global IP
Method : POST URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals Params : {'ip_addresses':'[ { "ip_block_id" : "some_local_ip_block_id", "ip_address" : "some_local_ip_address" } ... {} } Description : Finds global IpAddress from given ip_block_id and address and adds IpAddresses passed in params as its inside local. Response Code : Success - 200 OK Error - 400 Bad Request [When the values of ip_block_id and ip_address are missing in the params]
- Delete a specific inside global for a local ip_address
Method : DELETE URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals/{address} Params : None Description : Finds the inside ip_address from given ip_block_id and address, and remove its inside global ip_address whose address is same as given address. Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found]
- Delete a specific inside local for a global ip_address
Method : DELETE URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals/{address} Params : None Description : Finds the global ip_address from given ip_block_id and address, and remove its inside local ip_address whose address is same as given address. Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found]
- Delete all inside globals for a local ip_address
Method : DELETE URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals Params : None Description : Finds the inside ip_address from given ip_block_id and address, and remove all its inside global ip_addresses. Response Code : Success - 200 OK
Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress by given address is not found]
- Delete all inside locals for a global ip_address
Method : DELETE URL : /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals Params : None Description : Finds the global ip_address from given ip_block_id and address, and remove all its inside local ip_addresses. Response Code : Success - 200 OK Error - 404 Not Found [When IpBlock for ip_block_id or IpAddress for global ip_address are not found]
Global Policies
- Lists all global policies
Method : GET URL : /ipam/policies Params : None Response Code : Success - 200 OK
- Get details of a global policy
Method : GET URL : /ipam/policies/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Create a global policy
Method : POST URL : /ipam/policies Params : 'name': string [Mandatory] 'description' : string Response Code : Success - 201 Created Error - 422 UnProcessable Entity [When name is None]
- Update details of a global policy
Method : PUT URL : /ipam/policies/:(id) Params : 'name', 'description' Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Delete a global policy
Method : DELETE URL : /ipam/policies/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
Global Policy Unusable Ip Ranges
- List all unusable ip ranges of a global policy
Method : GET URL : /ipam/policies/{policy_id}/unusable_ip_ranges Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Get details of a global policy's unusable ip range
Method : GET URL : /ipam/policies/{policy_id}/unusable_ip_ranges/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Range doesn't exist]
- Create a unusable ip range in global policy
Method : POST URL : /ipam/policies/{policy_id}/unusable_ip_ranges Params : 'offset': integer [Mandatory, Can be +ve or -ve integer] 'length' : integer [Mandatory, Should be +ve integer] Response Code : Success - 201 Created Error - 404 Not Found [When Policy doesn't exist]
- Update details of a global policy's unusable ip range
Method : PUT URL : /ipam/policies/{policy_id}/unusable_ip_ranges/:(id) Params : 'offset', 'length' Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Range doesn't exist]
- Delete a global policy's unusable ip range
Method : DELETE URL : /ipam/policies/{policy_id}/unusable_ip_ranges/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Range doesn't exist]
Global Policy Unusable Ip Octets
- List all unusable ip octets of a global policy
Method : GET URL : /ipam/policies/{policy_id}/unusable_ip_octets Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Get details of a global policy's unusable ip octet
Method : GET URL : /ipam/policies/{policy_id}/unusable_ip_octets/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Octet doesn't exist]
- Create a unusable ip octet in global policy
Method : POST URL : /ipam/policies/{policy_id}/unusable_ip_octets Params : 'octet': integer [Mandatory, Should be 0-255] Response Code : Success - 201 Created Error - 404 Not Found [When Policy doesn't exist]
- Delete a global policy's unusable ip octet
Method : DELETE URL : /ipam/policies/{policy_id}/unusable_ip_octets/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Octet doesn't exist]
- Update details of a global policy's unusable ip octet
Method : PUT URL : /ipam/policies/{policy_id}/unusable_ip_octets/:(id) Params : 'octet' Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Octet doesn't exist]
Tenant Policies
- List all tenant's policies
Method : GET URL : /ipam/tenants/{tenant_id}/policies Params : None Response Code : Success - 200 OK
- Get details of a tenant's policy
Method : GET URL : /ipam/tenants/{tenant_id}/policies/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Create a tenant's policy
Method : POST URL : /ipam/tenants/{tenant_id}/policies Params : 'name': string [Mandatory] 'description' : string Response Code : Success - 201 Created
- Update details of a tenant's policy
Method : PUT URL : /ipam/tenants/{tenant_id}/policies/:(id) Params : 'name', 'description' Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Delete a tenant's policy
Method : DELETE URL : /ipam/tenants/{tenant_id}/policies/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
Tenant Policy Unusable Ip Ranges
- List all unusable ip ranges of a tenant's policy
Method : GET URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges Params : None Response Code : Success - 200 OK
Error - 404 Not Found [When Policy doesn't exist]
- Get details of a tenant's policy's unusable ip range
Method : GET URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Range doesn't exist]
- Create a unusable ip range in tenant's policy
Method : POST URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges Params : 'offset': integer [Mandatory, Can be +ve or -ve integer] 'length' : integer [Mandatory, Should be +ve integer] Response Code : Success - 201 Created Error - 404 Not Found [When Policy doesn't exist]
- Update details of a tenant's policy's unusable ip range
Method : PUT URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id) Params : 'offset', 'length' Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Range doesn't exist]
- Delete a tenant's policy's unusable ip range
Method : DELETE URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Range doesn't exist]
Tenant Policy Unusable Ip Octets
- List all unusable ip octets of a tenant's policy
Method : GET URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy doesn't exist]
- Get details of a tenant's policy's unusable ip octet
Method : GET URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Octet doesn't exist]
- Create a unusable ip octet in tenant's policy
Method : POST URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets Params : 'octet': integer [Mandatory, Should be 0-255] Response Code : Success - 201 Created Error - 404 Not Found [When Policy doesn't exist]
- Update details of a tenant's policy's unusable ip octet.
Method : PUT URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id) Params : 'octet' Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Octet doesn't exist]
- Delete a tenant's policy's unusable ip octet
Method : DELETE URL : /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id) Params : None Response Code : Success - 200 OK Error - 404 Not Found [When Policy or Ip Octet doesn't exist]
To Be Done:
- Authentication and Authorization using keystone identity service.
- Add 'next' links in paginated list resources.
- Add 'self' and 'bookmark' links in resource details.
- Versions atom feed
- Versioning by mime type