diff --git a/doc/source/contributor/webapi-version-history.rst b/doc/source/contributor/webapi-version-history.rst index 3d7953128e..4038a524d1 100644 --- a/doc/source/contributor/webapi-version-history.rst +++ b/doc/source/contributor/webapi-version-history.rst @@ -2,272 +2,308 @@ REST API Version History ======================== -**1.34** (Pike) +1.34 (Pike, 9.0.0) +------------------ + +Adds a ``physical_network`` field to the port object. All ports in a +portgroup must have the same value in their ``physical_network`` field. + +1.33 (Pike, 9.0.0) +------------------ + +Added ``storage_interface`` field to the node object to allow getting and +setting the interface. + +Added ``default_storage_interface`` and ``enabled_storage_interfaces`` +fields to the driver object to show the information. - Adds a ``physical_network`` field to the port object. All ports in a - portgroup must have the same value in their ``physical_network`` field. +1.32 (Pike, 9.0.0) +------------------ -**1.33** (Pike) +Added new endpoints for remote volume configuration: - Added ``storage_interface`` field to the node object to allow getting and - setting the interface. - Also added ``default_storage_interface`` and ``enabled_storage_interfaces`` - fields to the driver object to show the information. +* GET /v1/volume as a root for volume resources +* GET /v1/volume/connectors for listing volume connectors +* POST /v1/volume/connectors for creating a volume connector +* GET /v1/volume/connectors/ for showing a volume connector +* PATCH /v1/volume/connectors/ for updating a volume connector +* DELETE /v1/volume/connectors/ for deleting a volume connector +* GET /v1/volume/targets for listing volume targets +* POST /v1/volume/targets for creating a volume target +* GET /v1/volume/targets/ for showing a volume target +* PATCH /v1/volume/targets/ for updating a volume target +* DELETE /v1/volume/targets/ for deleting a volume target -**1.32** (Pike) +Volume resources also can be listed as sub resources of nodes: - Added new endpoints for remote volume configuration: +* GET /v1/nodes//volume +* GET /v1/nodes//volume/connectors +* GET /v1/nodes//volume/targets - * GET /v1/volume as a root for volume resources - * GET /v1/volume/connectors for listing volume connectors - * POST /v1/volume/connectors for creating a volume connector - * GET /v1/volume/connectors/ for showing a volume connector - * PATCH /v1/volume/connectors/ for updating a volume connector - * DELETE /v1/volume/connectors/ for deleting a volume connector - * GET /v1/volume/targets for listing volume targets - * POST /v1/volume/targets for creating a volume target - * GET /v1/volume/targets/ for showing a volume target - * PATCH /v1/volume/targets/ for updating a volume target - * DELETE /v1/volume/targets/ for deleting a volume target +1.31 (Ocata, 7.0.0) +------------------- - Volume resources also can be listed as sub resources of nodes: +Added the following fields to the node object, to allow getting and +setting interfaces for a dynamic driver: - * GET /v1/nodes//volume - * GET /v1/nodes//volume/connectors - * GET /v1/nodes//volume/targets +* boot_interface +* console_interface +* deploy_interface +* inspect_interface +* management_interface +* power_interface +* raid_interface +* vendor_interface -**1.31** (Ocata) +1.30 (Ocata, 7.0.0) +------------------- - Added the following fields to the node object, to allow getting and - setting interfaces for a dynamic driver: +Added dynamic driver APIs: - * boot_interface - * console_interface - * deploy_interface - * inspect_interface - * management_interface - * power_interface - * raid_interface - * vendor_interface +* GET /v1/drivers now accepts a ``type`` parameter (optional, one of + ``classic`` or ``dynamic``), to limit the result to only classic drivers + or dynamic drivers (hardware types). Without this parameter, both + classic and dynamic drivers are returned. -**1.30** (Ocata) +* GET /v1/drivers now accepts a ``detail`` parameter (optional, one of + ``True`` or ``False``), to show all fields for a driver. Defaults to + ``False``. - Added dynamic driver APIs. +* GET /v1/drivers now returns an additional ``type`` field to show if the + driver is classic or dynamic. - * GET /v1/drivers now accepts a ``type`` parameter (optional, one of - ``classic`` or ``dynamic``), to limit the result to only classic drivers - or dynamic drivers (hardware types). Without this parameter, both - classic and dynamic drivers are returned. +* GET /v1/drivers/ now returns an additional ``type`` field to show + if the driver is classic or dynamic. - * GET /v1/drivers now accepts a ``detail`` parameter (optional, one of - ``True`` or ``False``), to show all fields for a driver. Defaults to - ``False``. +* GET /v1/drivers/ now returns additional fields that are null for + classic drivers, and set as following for dynamic drivers: - * GET /v1/drivers now returns an additional ``type`` field to show if the - driver is classic or dynamic. + * The value of the default__interface is the entrypoint + name of the calculated default interface for that type: - * GET /v1/drivers/ now returns an additional ``type`` field to show - if the driver is classic or dynamic. + * default_boot_interface + * default_console_interface + * default_deploy_interface + * default_inspect_interface + * default_management_interface + * default_network_interface + * default_power_interface + * default_raid_interface + * default_vendor_interface - * GET /v1/drivers/ now returns additional fields that are null for - classic drivers, and set as following for dynamic drivers: + * The value of the enabled__interfaces is a list of + entrypoint names of the enabled interfaces for that type: - * The value of the default__interface is the entrypoint - name of the calculated default interface for that type: + * enabled_boot_interfaces + * enabled_console_interfaces + * enabled_deploy_interfaces + * enabled_inspect_interfaces + * enabled_management_interfaces + * enabled_network_interfaces + * enabled_power_interfaces + * enabled_raid_interfaces + * enabled_vendor_interfaces - * default_boot_interface - * default_console_interface - * default_deploy_interface - * default_inspect_interface - * default_management_interface - * default_network_interface - * default_power_interface - * default_raid_interface - * default_vendor_interface +1.29 (Ocata, 7.0.0) +------------------- - * The value of the enabled__interfaces is a list of - entrypoint names of the enabled interfaces for that type: +Add a new management API to support inject NMI, +'PUT /v1/nodes/(node_ident)/management/inject_nmi'. - * enabled_boot_interfaces - * enabled_console_interfaces - * enabled_deploy_interfaces - * enabled_inspect_interfaces - * enabled_management_interfaces - * enabled_network_interfaces - * enabled_power_interfaces - * enabled_raid_interfaces - * enabled_vendor_interfaces +1.28 (Ocata, 7.0.0) +------------------- -**1.29** (Ocata) +Add '/v1/nodes//vifs' endpoint for attach, detach and list of VIFs. - Add a new management API to support inject NMI, - 'PUT /v1/nodes/(node_ident)/management/inject_nmi'. +1.27 (Ocata, 7.0.0) +------------------- -**1.28** (Ocata) +Add ``soft rebooting`` and ``soft power off`` as possible values +for the ``target`` field of the power state change payload, and +also add ``timeout`` field to it. - Add '/v1/nodes//vifs' endpoint for attach, detach and list of VIFs. +1.26 (Ocata, 7.0.0) +------------------- -**1.27** (Ocata) +Add portgroup ``mode`` and ``properties`` fields. - Add ``soft rebooting`` and ``soft power off`` as possible values - for the ``target`` field of the power state change payload, and - also add ``timeout`` field to it. +1.25 (Ocata, 7.0.0) +------------------- -**1.26** (Ocata) +Add possibility to unset chassis_uuid from a node. - Add portgroup ``mode`` and ``properties`` fields. +1.24 (Ocata, 7.0.0) +------------------- -**1.25** (Ocata) +Added new endpoints '/v1/nodes//portgroups' and '/v1/portgroups//ports'. +Added new field ``port.portgroup_uuid``. - Add possibility to unset chassis_uuid from a node. +1.23 (Ocata, 7.0.0) +------------------- -**1.24** (Ocata) +Added '/v1/portgroups/ endpoint. - Added new endpoints '/v1/nodes//portgroups' and '/v1/portgroups//ports'. - Added new field ``port.portgroup_uuid``. +1.22 (Newton, 6.1.0) +-------------------- -**1.23** (Ocata) +Added endpoints for deployment ramdisks. - Added '/v1/portgroups/ endpoint. +1.21 (Newton, 6.1.0) +-------------------- -**1.22** (Newton, 6.1.0) +Add node ``resource_class`` field. - Added endpoints for deployment ramdisks. +1.20 (Newton, 6.1.0) +-------------------- -**1.21** (Newton, 6.1.0) +Add node ``network_interface`` field. - Add node ``resource_class`` field. +1.19 (Newton, 6.1.0) +-------------------- -**1.20** (Newton, 6.1.0) +Add ``local_link_connection`` and ``pxe_enabled`` fields to the port object. - Add node ``network_interface`` field. +1.18 (Newton, 6.1.0) +-------------------- -**1.19** (Newton, 6.1.0) +Add ``internal_info`` readonly field to the port object, that will be used +by ironic to store internal port-related information. - Add ``local_link_connection`` and ``pxe_enabled`` fields to the port object. +1.17 (Newton, 6.0.0) +-------------------- -**1.18** (Newton, 6.1.0) +Addition of provision_state verb ``adopt`` which allows an operator +to move a node from ``manageable`` state to ``active`` state without +performing a deployment operation on the node. This is intended for +nodes that have already been deployed by external means. - Add ``internal_info`` readonly field to the port object, that will be used - by ironic to store internal port-related information. +1.16 (Mitaka, 5.0.0) +-------------------- -**1.17** (Newton, 6.0.0) +Add ability to filter nodes by driver. - Addition of provision_state verb ``adopt`` which allows an operator - to move a node from ``manageable`` state to ``active`` state without - performing a deployment operation on the node. This is intended for - nodes that have already been deployed by external means. +1.15 (Mitaka, 5.0.0) +-------------------- -**1.16** (Mitaka, 5.0.0) +Add ability to do manual cleaning when a node is in the manageable +provision state via PUT v1/nodes//states/provision, +target:clean, clean_steps:[...]. - Add ability to filter nodes by driver. +1.14 (Liberty, 4.2.0) +--------------------- -**1.15** (Mitaka, 5.0.0) +Make the following endpoints discoverable via Ironic API: - Add ability to do manual cleaning when a node is in the manageable - provision state via PUT v1/nodes//states/provision, - target:clean, clean_steps:[...]. +* '/v1/nodes//states' +* '/v1/drivers//properties' -**1.14** (Liberty, 4.2.0) +1.13 (Liberty, 4.2.0) +--------------------- - Make the following endpoints discoverable via Ironic API: +Add a new verb ``abort`` to the API used to abort nodes in +``CLEANWAIT`` state. - * '/v1/nodes//states' - * '/v1/drivers//properties' +1.12 (Liberty, 4.2.0) +--------------------- -**1.13** (Liberty, 4.2.0) +This API version adds the following abilities: - Add a new verb ``abort`` to the API used to abort nodes in - ``CLEANWAIT`` state. +* Get/set ``node.target_raid_config`` and to get + ``node.raid_config``. +* Retrieve the logical disk properties for the driver. -**1.12** (Liberty, 4.2.0) +1.11 (Liberty, 4.0.0, breaking change) +-------------------------------------- - This API version adds the following abilities: +Newly registered nodes begin in the ``enroll`` provision state by default, +instead of ``available``. To get them to the ``available`` state, +the ``manage`` action must first be run to verify basic hardware control. +On success the node moves to ``manageable`` provision state. Then the +``provide`` action must be run. Automated cleaning of the node is done and +the node is made ``available``. - * Get/set ``node.target_raid_config`` and to get - ``node.raid_config``. - * Retrieve the logical disk properties for the driver. +1.10 (Liberty, 4.0.0) +--------------------- -**1.11** (Liberty, 4.0.0, breaking change) +Logical node names support all RFC 3986 unreserved characters. +Previously only valid fully qualified domain names could be used. - Newly registered nodes begin in the ``enroll`` provision state by default, - instead of ``available``. To get them to the ``available`` state, - the ``manage`` action must first be run to verify basic hardware control. - On success the node moves to ``manageable`` provision state. Then the - ``provide`` action must be run. Automated cleaning of the node is done and - the node is made ``available``. +1.9 (Liberty, 4.0.0) +-------------------- -**1.10** (Liberty, 4.0.0) +Add ability to filter nodes by provision state. - Logical node names support all RFC 3986 unreserved characters. - Previously only valid fully qualified domain names could be used. +1.8 (Liberty, 4.0.0) +-------------------- -**1.9** (Liberty, 4.0.0) +Add ability to return a subset of resource fields. - Add ability to filter nodes by provision state. +1.7 (Liberty, 4.0.0) +-------------------- -**1.8** (Liberty, 4.0.0) +Add node ``clean_step`` field. - Add ability to return a subset of resource fields. +1.6 (Kilo) +---------- -**1.7** (Liberty, 4.0.0) +Add :ref:`inspection` process: introduce ``inspecting`` and ``inspectfail`` +provision states, and ``inspect`` action that can be used when a node is in +``manageable`` provision state. - Add node ``clean_step`` field. +1.5 (Kilo) +---------- -**1.6** (Kilo) +Add logical node names that can be used to address a node in addition to +the node UUID. Name is expected to be a valid `fully qualified domain +name`_ in this version of API. - Add :ref:`inspection` process: introduce ``inspecting`` and ``inspectfail`` - provision states, and ``inspect`` action that can be used when a node is in - ``manageable`` provision state. +1.4 (Kilo) +---------- -**1.5** (Kilo) +Add ``manageable`` state and ``manage`` transition, which can be used to +move a node to ``manageable`` state from ``available``. +The node cannot be deployed in ``manageable`` state. +This change is mostly a preparation for future inspection work +and introduction of ``enroll`` provision state. - Add logical node names that can be used to address a node in addition to - the node UUID. Name is expected to be a valid `fully qualified domain - name`_ in this version of API. +1.3 (Kilo) +---------- -**1.4** (Kilo) +Add node ``driver_internal_info`` field. - Add ``manageable`` state and ``manage`` transition, which can be used to - move a node to ``manageable`` state from ``available``. - The node cannot be deployed in ``manageable`` state. - This change is mostly a preparation for future inspection work - and introduction of ``enroll`` provision state. +1.2 (Kilo, breaking change) +--------------------------- -**1.3** (Kilo) +Renamed NOSTATE (``None`` in Python, ``null`` in JSON) node state to +``available``. This is needed to reduce confusion around ``None`` state, +especially when future additions to the state machine land. - Add node ``driver_internal_info`` field. +1.1 (Kilo) +---------- -**1.2** (Kilo, breaking change) +This was the initial version when API versioning was introduced. +Includes the following changes from Kilo release cycle: - Renamed NOSTATE (``None`` in Python, ``null`` in JSON) node state to - ``available``. This is needed to reduce confusion around ``None`` state, - especially when future additions to the state machine land. +* Add node ``maintenance_reason`` field and an API endpoint to + set/unset the node maintenance mode. -**1.1** (Kilo) +* Add sync and async support for vendor passthru methods. - This was the initial version when API versioning was introduced. - Includes the following changes from Kilo release cycle: +* Vendor passthru endpoints support different HTTP methods, not only + ``POST``. - * Add node ``maintenance_reason`` field and an API endpoint to - set/unset the node maintenance mode. +* Make vendor methods discoverable via the Ironic API. - * Add sync and async support for vendor passthru methods. +* Add logic to store the config drive passed by Nova. - * Vendor passthru endpoints support different HTTP methods, not only - ``POST``. +This has been the minimum supported version since versioning was +introduced. - * Make vendor methods discoverable via the Ironic API. +1.0 (Juno) +---------- - * Add logic to store the config drive passed by Nova. - - This has been the minimum supported version since versioning was - introduced. - -**1.0** (Juno) - - This version denotes Juno API and was never explicitly supported, as API - versioning was not implemented in Juno, and **1.1** became the minimum - supported version in Kilo. +This version denotes Juno API and was never explicitly supported, as API +versioning was not implemented in Juno, and 1.1 became the minimum +supported version in Kilo. .. _fully qualified domain name: https://en.wikipedia.org/wiki/Fully_qualified_domain_name