Starting with the Kilo release ironic supports versioning of API. Version is defined as a string of 2 integers separated by a dot: X.Y. Here X is a major version, always equal to 1 at the moment of writing, Y is a minor version. Server minor version is increased every time the API behavior is changed (note Exceptions from Versioning). Nova versioning documentation has a nice guide on when to bump an API version.
Server indicates its minimum and maximum supported API versions in the X-OpenStack-Ironic-API-Minimum-Version and X-OpenStack-Ironic-API-Maximum-Version headers respectively, returned with every response. Client may request a specific API version by providing X-OpenStack-Ironic-API-Version header with request.
If no version is requested by the client, minimum supported version - 1.1, is assumed. The client is only exposed to those API features that are supported in the requested (explicitly or implicitly) API version (again note Exceptions from Versioning, they are not covered by this rule).
We recommend clients requiring stable API to always request a specific version of API. However, a special value latest can be requested instead, which always requests the newest supported API version.
1.15
Add ability to do manual cleaning when a node is in the manageable provision state via PUT v1/nodes/<identifier>/states/provision, target:clean, clean_steps:[...].
1.14
Make the following endpoints discoverable via Ironic API: * ‘/v1/nodes/<UUID or logical name>/states’ * ‘/v1/drivers/<driver name>/properties’
1.13
Add a new verb abort to the API used to abort nodes in CLEANWAIT state.
1.12
This API version adds the following abilities:
- Get/set node.target_raid_config and to get node.raid_config.
- Retrieve the logical disk properties for the driver.
1.11 (breaking change)
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.10
Logical node names support all RFC 3986 unreserved characters. Previously only valid fully qualified domain names could be used.
1.9
Add ability to filter nodes by provision state.
1.8
Add ability to return a subset of resource fields.
1.7
Add node clean_step field.
1.6
Add Hardware Inspection process: introduce inspecting and inspectfail provision states, and inspect action that can be used when a node is in manageable provision state.
1.5
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.4
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 managable state. This change is mostly a preparation for future inspection work and introduction of enroll provision state.
1.3
Add node driver_internal_info field.
1.2 (breaking change)
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.
1.1
This was the initial version when API versioning was introduced. Includes the following changes from Kilo release cycle:
- Add node maintenance_reason field and an API endpoint to set/unset the node maintenance mode.
- Add sync and async support for vendor passthru methods.
- Vendor passthru endpoints support different HTTP methods, not only POST.
- Make vendor methods discoverable via the Ironic API.
- Add logic to store the config drive passed by Nova.
This has been the minimum supported version since versioning was introduced.
1.0
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.
The following API-visible things are not covered by the API versioning:
Retrieve a list of chassis.
Parameters: |
|
---|---|
Return type: |
Retrieve information about the given chassis.
Parameters: |
|
---|---|
Return type: |
Create a new chassis.
Parameters: |
|
---|---|
Return type: |
Delete a chassis.
Parameters: |
|
---|
Update an existing chassis.
Parameters: |
|
---|---|
Return type: |
Retrieve a list of chassis with detail.
Parameters: |
|
---|---|
Return type: |
API representation of a collection of chassis.
Data samples:
{
"chassis": [
{
"description": "Sample chassis",
"links": [
{
"href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89",
"rel": "self"
},
{
"href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89",
"rel": "bookmark"
}
],
"uuid": "eaaca217-e7d8-47b4-bb41-3f99f20eed89"
}
]
}
Type: | list(Chassis) |
---|
A list containing chassis objects
API representation of a chassis.
This class enforces type checking and value constraints, and converts between the internal object model and the API representation of a chassis.
Data samples:
{
"created_at": "2000-01-01T12:00:00",
"description": "Sample chassis",
"extra": {},
"links": [
{
"href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89",
"rel": "self"
},
{
"href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89",
"rel": "bookmark"
}
],
"nodes": [
{
"href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89/nodes",
"rel": "self"
},
{
"href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89/nodes",
"rel": "bookmark"
}
],
"updated_at": "2000-01-01T12:00:00",
"uuid": "eaaca217-e7d8-47b4-bb41-3f99f20eed89"
}
Type: | unicode |
---|
The description of the chassis
Type: | dict(unicode: json) |
---|
The metadata of the chassis
Type: | list(Link) |
---|
A list containing a self link and associated chassis links
Type: | list(Link) |
---|
Links to the collection of nodes contained in this chassis
Type: | uuid |
---|
The UUID of the chassis
Retrieve a list of drivers.
Return type: | DriverList |
---|
Retrieve a single driver. :type driver_name: unicode
Return type: | Driver |
---|
Retrieve property information of the given driver.
Parameters: |
|
---|---|
Returns: | dictionary with <property name>:<property description> entries. |
Raises: | DriverNotFound (HTTP 404) if the driver name is invalid or the driver cannot be loaded. |
Return type: | unicode |
Returns the logical disk properties for the driver.
Parameters: |
|
---|---|
Returns: | A dictionary containing the properties that can be mentioned for logical disks and a textual description for them. |
Raises: | UnsupportedDriverExtension if the driver doesn’t support RAID configuration. |
Raises: | NotAcceptable, if requested version of the API is less than 1.12. |
Raises: | DriverNotFound, if driver is not loaded on any of the conductors. |
Return type: | json |
Retrieve information about vendor methods of the given driver.
Parameters: |
|
---|---|
Returns: | dictionary with <vendor method name>:<method metadata> entries. |
Raises: | DriverNotFound if the driver name is invalid or the driver cannot be loaded. |
Return type: | unicode |
API representation of a list of drivers.
Data samples:
{
"drivers": [
{
"hosts": [
"fake-host"
],
"name": "sample-driver"
}
]
}
Type: | list(Driver) |
---|
A list containing drivers objects
API representation of a driver.
Data samples:
{
"hosts": [
"fake-host"
],
"name": "sample-driver"
}
Type: | list(unicode) |
---|
A list of active conductors that support this driver
Type: | list(Link) |
---|
A list containing self and bookmark links
Type: | unicode |
---|
The name of the driver
Type: | list(Link) |
---|
A list containing links to driver properties
Retrieve a list of nodes.
Parameters: |
|
---|---|
Return type: |
Retrieve information about the given node.
Parameters: |
|
---|---|
Return type: |
Create a new node.
Parameters: |
|
---|---|
Return type: |
Delete a node.
Parameters: |
|
---|
Update an existing node.
Parameters: |
|
---|---|
Return type: |
Retrieve a list of nodes with detail.
Parameters: |
|
---|---|
Return type: |
Validate the driver interfaces, using the node’s UUID or name.
Note that the ‘node_uuid’ interface is deprecated in favour of the ‘node’ interface
Parameters: |
|
---|---|
Return type: | unicode |
Put the node in maintenance mode.
Parameters: |
|
---|
Remove the node from maintenance mode.
Parameters: |
|
---|
Get the current boot device for a node.
Parameters: |
|
||||
---|---|---|---|---|---|
Returns: | a json object containing:
|
||||
Return type: | unicode |
Set the boot device for a node.
Set the boot device to use on next reboot of the node.
Parameters: |
|
---|
Get a list of the supported boot devices.
Parameters: |
|
---|---|
Returns: | A json object with the list of supported boot devices. |
Return type: | unicode |
List the states of the node.
Parameters: |
|
---|---|
Return type: |
Set the power state of the node.
Parameters: |
|
---|---|
Raises: | ClientSideError (HTTP 409) if a power operation is already in progress. |
Raises: | InvalidStateRequested (HTTP 400) if the requested target state is not valid or if the node is in CLEANING state. |
Asynchronous trigger the provisioning of the node.
This will set the target provision state of the node, and a background task will begin which actually applies the state change. This call will return a 202 (Accepted) indicating the request was accepted and is in progress; the client should continue to GET the status of this node to observe the status of the requested action.
Parameters: |
|
---|---|
Raises: | NodeLocked (HTTP 409) if the node is currently locked. |
Raises: | ClientSideError (HTTP 409) if the node is already being provisioned. |
Raises: | InvalidParameterValue (HTTP 400), if validation of clean_steps or power driver interface fails. |
Raises: | InvalidStateRequested (HTTP 400) if the requested transition is not possible from the current state. |
Raises: | NodeInMaintenance (HTTP 400), if operation cannot be performed because the node is in maintenance mode. |
Raises: | NoFreeConductorWorker (HTTP 503) if no workers are available. |
Raises: | NotAcceptable (HTTP 406) if the API version specified does not allow the requested state transition. |
Set the target raid config of the node.
Parameters: |
|
---|---|
Raises: | UnsupportedDriverExtension, if the node’s driver doesn’t support RAID configuration. |
Raises: | InvalidParameterValue, if validation of target raid config fails. |
Raises: | NotAcceptable, if requested version of the API is less than 1.12. |
Get connection information about the console.
Parameters: |
|
---|---|
Return type: |
Start and stop the node console.
Parameters: |
|
---|
Retrieve information about vendor methods of the given node.
Parameters: |
|
---|---|
Returns: | dictionary with <vendor method name>:<method metadata> entries. |
Raises: | NodeNotFound if the node is not found. |
Return type: | unicode |
API representation of the console information for a node.
Data samples:
{
"console_enabled": true,
"console_info": {
"type": "shellinabox",
"url": "http://<hostname>:4201"
}
}
Type: | boolean |
---|
The console state: if the console is enabled or not.
Type: | dict(unicode: json) |
---|
The console information. It typically includes the url to access the console and the type of the application that hosts the console.
API representation of a bare metal node.
This class enforces type checking and value constraints, and converts between the internal object model and the API representation of a node.
Data samples:
{
"chassis_uuid": "edcad704-b2da-41d5-96d9-afd580ecfa12",
"clean_step": {},
"console_enabled": false,
"created_at": "2000-01-01T12:00:00",
"driver": "fake",
"driver_info": {},
"driver_internal_info": {},
"extra": {},
"inspection_finished_at": null,
"inspection_started_at": "2000-01-01T12:00:00",
"instance_info": {},
"instance_uuid": "dcf1fbc5-93fc-4596-9395-b80572f6267b",
"last_error": null,
"links": [
{
"href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"rel": "self"
},
{
"href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"rel": "bookmark"
}
],
"maintenance": false,
"maintenance_reason": null,
"name": "database16-dc02",
"ports": [
{
"href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports",
"rel": "self"
},
{
"href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports",
"rel": "bookmark"
}
],
"power_state": "power on",
"properties": {
"cpus": "1",
"local_gb": "10",
"memory_mb": "1024"
},
"provision_state": "active",
"provision_updated_at": "2000-01-01T12:00:00",
"raid_config": null,
"reservation": null,
"states": [
{
"href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states",
"rel": "self"
},
{
"href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states",
"rel": "bookmark"
}
],
"target_power_state": null,
"target_provision_state": null,
"target_raid_config": null,
"updated_at": "2000-01-01T12:00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"
}
Type: | uuid |
---|
The UUID of the chassis this node belongs
Type: | dict(unicode: json) |
---|
The current clean step
Type: | boolean |
---|
Indicates whether the console access is enabled or disabled on the node.
Type: | unicode |
---|
The driver responsible for controlling the node
Type: | dict(unicode: json) |
---|
This node’s driver configuration
Type: | dict(unicode: json) |
---|
This driver’s internal configuration
Type: | dict(unicode: json) |
---|
This node’s meta data
Type: | datetime |
---|
The UTC date and time when the last hardware inspection finished successfully.
Type: | datetime |
---|
The UTC date and time when the hardware inspection was started
Type: | dict(unicode: json) |
---|
This node’s instance info.
Type: | uuid |
---|
The UUID of the instance in nova-compute
Type: | unicode |
---|
Any error from the most recent (last) asynchronous transaction that started but failed to finish.
Type: | list(Link) |
---|
A list containing a self link and associated node links
Type: | boolean |
---|
Indicates whether the node is in maintenance mode.
Type: | unicode |
---|
Indicates reason for putting a node in maintenance mode.
Type: | unicode |
---|
The logical name for this node
Type: | list(Link) |
---|
Links to the collection of ports on this node
Type: | unicode |
---|
Represent the current (not transition) power state of the node
Type: | dict(unicode: json) |
---|
The physical characteristics of this node
Type: | unicode |
---|
Represent the current (not transition) provision state of the node
Type: | datetime |
---|
The UTC date and time of the last provision state change
Type: | dict(unicode: json) |
---|
Represents the current RAID configuration of the node
Type: | unicode |
---|
The hostname of the conductor that holds an exclusive lock on the node.
Type: | list(Link) |
---|
Links to endpoint for retrieving and setting node states
Type: | unicode |
---|
The user modified desired power state of the node.
Type: | unicode |
---|
The user modified desired provision state of the node.
Type: | dict(unicode: json) |
---|
The user modified RAID configuration of the node
Type: | uuid |
---|
Unique UUID for this node
API representation of a collection of nodes.
Data samples:
{
"nodes": [
{
"instance_uuid": "dcf1fbc5-93fc-4596-9395-b80572f6267b",
"links": [
{
"href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"rel": "self"
},
{
"href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"rel": "bookmark"
}
],
"maintenance": false,
"name": "database16-dc02",
"power_state": "power on",
"provision_state": "active",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"
}
]
}
Type: | list(Node) |
---|
A list containing nodes objects
API representation of the states of a node.
Data samples:
{
"console_enabled": false,
"last_error": null,
"power_state": "power on",
"provision_state": null,
"provision_updated_at": null,
"raid_config": null,
"target_power_state": "power on",
"target_provision_state": "active",
"target_raid_config": null
}
Type: | boolean |
---|
Indicates whether the console access is enabled or disabled on the node.
Type: | unicode |
---|
Any error from the most recent (last) asynchronous transaction that started but failed to finish.
Type: | unicode |
---|
Represent the current (not transition) power state of the node
Type: | unicode |
---|
Represent the current (not transition) provision state of the node
Type: | datetime |
---|
The UTC date and time of the last provision state change
Type: | dict(unicode: json) |
---|
Represents the RAID configuration that the node is configured with.
Type: | unicode |
---|
The user modified desired power state of the node.
Type: | unicode |
---|
The user modified desired provision state of the node.
Type: | dict(unicode: json) |
---|
The desired RAID configuration, to be used the next time the node is configured.
Retrieve a list of ports.
Note that the ‘node_uuid’ interface is deprecated in favour of the ‘node’ interface
Parameters: |
|
---|---|
Return type: |
Retrieve information about the given port.
Parameters: |
|
---|---|
Return type: |
Create a new port.
Parameters: |
|
---|---|
Return type: |
Delete a port.
Parameters: |
|
---|
Update an existing port.
Parameters: |
|
---|---|
Return type: |
Retrieve a list of ports with detail.
Note that the ‘node_uuid’ interface is deprecated in favour of the ‘node’ interface
Parameters: |
|
---|---|
Return type: |
API representation of a collection of ports.
Data samples:
{
"ports": [
{
"address": "fe:54:00:77:07:d9",
"links": [
{
"href": "http://localhost:6385/v1/ports/27e3153e-d5bf-4b7e-b517-fb518e17f34c",
"rel": "self"
},
{
"href": "http://localhost:6385/ports/27e3153e-d5bf-4b7e-b517-fb518e17f34c",
"rel": "bookmark"
}
],
"uuid": "27e3153e-d5bf-4b7e-b517-fb518e17f34c"
}
]
}
Type: | list(Port) |
---|
A list containing ports objects
API representation of a port.
This class enforces type checking and value constraints, and converts between the internal object model and the API representation of a port.
Data samples:
{
"address": "fe:54:00:77:07:d9",
"created_at": "2017-04-10T18:35:24.142860",
"extra": {
"foo": "bar"
},
"links": [
{
"href": "http://localhost:6385/v1/ports/27e3153e-d5bf-4b7e-b517-fb518e17f34c",
"rel": "self"
},
{
"href": "http://localhost:6385/ports/27e3153e-d5bf-4b7e-b517-fb518e17f34c",
"rel": "bookmark"
}
],
"node_uuid": "7ae81bb3-dec3-4289-8d6c-da80bd8001ae",
"updated_at": "2017-04-10T18:35:24.142864",
"uuid": "27e3153e-d5bf-4b7e-b517-fb518e17f34c"
}
Type: | macaddress |
---|
MAC Address for this port
Type: | dict(unicode: json) |
---|
This port’s meta data
Type: | list(Link) |
---|
A list containing a self link and associated port links
Type: | uuid |
---|
The UUID of the node this port belongs to
Type: | uuid |
---|
Unique UUID for this port