92 lines
3.8 KiB
Plaintext
92 lines
3.8 KiB
Plaintext
#%RAML 0.8
|
|
title: Nova extensions for Neutron Shared IPs API
|
|
version: v2.0
|
|
baseUri: https://{novaUri}/{version}/
|
|
mediaType: application/json
|
|
traits:
|
|
- secured:
|
|
headers:
|
|
X-Auth-Token:
|
|
description: Token for request's tenant
|
|
required: true
|
|
type: string
|
|
/servers/{serverId}/ip_associations:
|
|
displayName: Nova IP Associations
|
|
description: A collection of IP associations
|
|
is: [ secured ]
|
|
get:
|
|
description: |
|
|
List all IPs associated to this instance
|
|
Invokes and parses (with tenant_id as header): GET http://{neutronUri}/{neutronVersion}/ip_addresses?device_id={serverId}&service=compute
|
|
responses:
|
|
200:
|
|
description: ok
|
|
body:
|
|
application/json:
|
|
example: |
|
|
{"ip_associations": [{"id": "1", "address": "10.1.1.1"}, {"id": "2", "address": "10.1.1.2"}]}
|
|
404:
|
|
description: server not found
|
|
/{ipAddressId}:
|
|
description: |
|
|
A specific IP association, a member of the IP association collection
|
|
This id is the same as neutron's ip_address's id
|
|
get:
|
|
description: |
|
|
Shows an IP association
|
|
Invokes and parses (with tenant_id as header):
|
|
* GET http://{neutronUri}/{neutronVersion}/ip_addresses/{ipAddressId}
|
|
responses:
|
|
200:
|
|
description: ok
|
|
body:
|
|
application/json:
|
|
example: |
|
|
{"ip_association": {"id": "1", "address": "10.1.1.1"}}
|
|
404:
|
|
description: IP association not found
|
|
put:
|
|
description: |
|
|
Create IP address association (idempotent PUT)
|
|
Invokes and parses:
|
|
* GET http://{neutronUri}/{neutronVersion}/ip_addresses/{ipAddressId}/ports?device_id={serverId} (with tenant_id as header)
|
|
* PUT http://{neutronUri}/{neutronVersion}/ip_addresses/{ipAddressId}/ports/{portId} with {"service": "compute"}
|
|
body:
|
|
application/json:
|
|
example: |
|
|
{"ip_association": {}}
|
|
responses:
|
|
201:
|
|
description: created
|
|
400:
|
|
description: |
|
|
Bad input
|
|
* ip_address_id association already exists
|
|
* ambiguous request: more than one port is related to device_id/ip_address_id
|
|
404:
|
|
description: |
|
|
not found
|
|
* server not found
|
|
* ip_address_id is not found, e.g. neutron call returns 404
|
|
500:
|
|
description: |
|
|
something went horribly wrong, e.g. neutron call returns 5xx
|
|
delete:
|
|
description: |
|
|
Delete IP address association
|
|
Invokes and parses:
|
|
* GET http://{neutronUri}/{neutronVersion}/ip_addresses/{ipAddressId}/ports?device_id={serverId} (with tenant_id as header)
|
|
* PUT http://{neutronUri}/{neutronVersion}/ip_addresses/{ipAddressId}/ports/{portId} with {"service": "none"}
|
|
responses:
|
|
204:
|
|
description: successfully deleted
|
|
404:
|
|
description: |
|
|
not found
|
|
* server not found
|
|
* ip_address_id is not found, e.g. neutron call returns 404
|
|
post:
|
|
responses:
|
|
501:
|
|
description: not implemented
|