Files
nova-specs/specs/liberty/implemented/show-reserved-status-in-os-fixed-ips-api.rst
Michael Still 30d5bacb19 Mark liberty specs as implemented
This review syncs the state of launchpad with the spec repo for
things implemented up to liberty-3. There are no changes to the
specs, just things being moved around.

Change-Id: I930d33532b268b6e933c8be06a0569c20fd09586
2015-09-30 10:17:33 +10:00

217 lines
5.2 KiB
ReStructuredText
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Show 'reserved' status in os-fixed-ips API
==========================================
https://blueprints.launchpad.net/nova/+spec/show-reserved-status-in-os-fixed-ips-api
Show the 'reserved' status on a FixedIP object in the os-fixed-ips API
extension. The extension allows one to reserve and unreserve a fixed IP but the
show method does not report the current status.
Problem description
===================
The os-fixed-ips API extension currently allows one to set the 'reserved'
field on a FixedIP object in the database but the show method does not return
the current value so if you want to write an application to reserve/unreserve
fixed IPs today, you have to keep track of this information externally or get
it from the database yourself.
Use Cases
---------
As a cloud administrator, I want to reserve/unreserve fixed IPs but I need to
know the current reserved status on a given fixed IP before I can act on it.
Project Priority
----------------
None
Proposed change
===============
Add a new API microversion to the os-fixed-ips API extension such that if the
version on the API GET request satisfies the minimum version required, include
the 'reserved' status in the fixed_ip response data.
Alternatives
------------
We could add this information to the 'nova-manage fixed list' output but the
nova-manage CLI is mostly deprecated for things that should be done through the
Nova API service.
Data model impact
-----------------
None
REST API impact
---------------
The proposed change just updates the GET response data in the os-fixed-ips
API extension to include the 'reserved' boolean field if the request has a
minimum supported version.
* Specification for the method
* Shows information for a specified fixed IP address.
* Method type: GET
* Normal http response code(s): 200
* Expected error http response code(s):
* 400: If the address on the request is invalid.
* 404: If the address on the request does not match a FixedIP entry in the
database.
* ``/v2.1/{tenant_id}/os-fixed-ips/{fixed_ip}``
* Parameters which can be passed via the url: The fixed IP address
* JSON schema definition for the response data:
::
get_fixed_ip = {
'status_code': [200],
'response_body': {
'type': 'object',
'properties': {
'fixed_ip': {
'type': 'object',
'properties': {
'address': {
'type': 'string',
'format': 'ip-address'
},
'cidr': {'type': 'string'},
'host': {'type': 'string'},
'hostname': {'type': 'string'},
'reserved': {'type': 'boolean'}
},
'required': ['address', 'cidr', 'host',
'hostname', 'reserved']
}
},
'required': ['fixed_ip']
}
}
* Example use case:
Request:
GET --header "X-OpenStack-Nova-API-Version: 2.4" \
http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-fixed-ips/\
192.168.1.1
Response:
::
{
"fixed_ip": {
"address": "192.168.1.1",
"cidr": "192.168.1.0/24",
"host": "host",
"hostname": "openstack",
"reserved": false
}
}
* There should not be any impacts to policy.json files for this change.
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
* The v2.1 python-novaclient fixed-ip-get command could be updated to show the
'reserved' status in it's output if 'fixed_ip' dict response has the
'reserved' key in it.
Performance Impact
------------------
None
Other deployer impact
---------------------
None; if a deployer is using the required minimum version of the API to get
the 'reserved' data they can begin using it, otherwise they won't see a change.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Matt Riedemann <mriedem@us.ibm.com>
Work Items
----------
* Add a new microversion and change nova/api/openstack/plugins/v3/fixed_ips.py
to use it to determine if the 'reserved' attribute on the FixedIP object
should be returned.
Dependencies
============
None
Testing
=======
* Unit tests and possibly API samples functional tests in the nova tree.
* There are currently not any compute API microversions tested in Tempest
beyond v2.1. We could add support for testing the new version in Tempest
but so far the API is already at least at v2.3 without changes to Tempest.
Documentation Impact
====================
The nova/api/openstack/rest_api_version_history.rst document will be updated.
References
==========
* Originally reported as a bug: https://bugs.launchpad.net/nova/+bug/1249526
* Old ML thread for the bug:
http://lists.openstack.org/pipermail/openstack-dev/2013-November/019506.html
* Proof of concept code change: https://review.openstack.org/#/c/168966/