summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-02-10 13:01:19 +0000
committerGerrit Code Review <review@openstack.org>2017-02-10 13:01:20 +0000
commit2b10dd8bfce789b50f29cff0d3f372dfdb56e19d (patch)
tree726e2d424e68d48fdbee8e359241e7030ca30f28
parentdc3a341adbc191a33ea14b097e36f9af5f41d3cf (diff)
parentd33faedbacc6f25d4106b7738bd3f7aeafc839b1 (diff)
downloadironic-2b10dd8bfce789b50f29cff0d3f372dfdb56e19d.tar.gz
Merge "Update api-ref for dynamic drivers"
-rwxr-xr-xapi-ref/regenerate-samples.sh19
-rw-r--r--api-ref/source/baremetal-api-v1-drivers.inc80
-rw-r--r--api-ref/source/baremetal-api-v1-nodes.inc61
-rw-r--r--api-ref/source/parameters.yaml212
-rw-r--r--api-ref/source/samples/api-root-response.json4
-rw-r--r--api-ref/source/samples/driver-get-response.json52
-rw-r--r--api-ref/source/samples/drivers-list-detail-response.json160
-rw-r--r--api-ref/source/samples/drivers-list-response.json63
-rw-r--r--api-ref/source/samples/node-create-request-classic.json (renamed from api-ref/source/samples/node-create-request.json)2
-rw-r--r--api-ref/source/samples/node-create-request-dynamic.json9
-rw-r--r--api-ref/source/samples/node-create-response.json12
-rw-r--r--api-ref/source/samples/node-show-response.json12
-rw-r--r--api-ref/source/samples/node-update-driver-info-response.json12
-rw-r--r--api-ref/source/samples/nodes-list-details-response.json94
-rw-r--r--api-ref/source/samples/nodes-list-response.json20
15 files changed, 734 insertions, 78 deletions
diff --git a/api-ref/regenerate-samples.sh b/api-ref/regenerate-samples.sh
index 13794e301..836f22494 100755
--- a/api-ref/regenerate-samples.sh
+++ b/api-ref/regenerate-samples.sh
@@ -11,12 +11,13 @@ fi
OS_AUTH_TOKEN=$(openstack token issue | grep ' id ' | awk '{print $4}')
IRONIC_URL="http://127.0.0.1:6385"
-IRONIC_API_VERSION="1.29"
+IRONIC_API_VERSION="1.31"
export OS_AUTH_TOKEN IRONIC_URL
DOC_CHASSIS_UUID="dff29d23-1ded-43b4-8ae1-5eebb3e30de1"
DOC_NODE_UUID="6d85703a-565d-469a-96ce-30b6de53079d"
+DOC_DYNAMIC_NODE_UUID="2b045129-a906-46af-bc1a-092b294b3428"
DOC_PORT_UUID="d2b30520-907d-46c8-bfee-c5586e6fb3a1"
DOC_PORTGROUP_UUID="e43c722c-248e-4c6e-8ce8-0d8ff129387a"
DOC_PROVISION_UPDATED_AT="2016-08-18T22:28:49.946416+00:00"
@@ -91,7 +92,8 @@ GET 'v1' > api-v1-root-response.json
###########
# DRIVER APIs
GET v1/drivers > drivers-list-response.json
-GET v1/drivers/agent_ipmitool > driver-get-response.json
+GET v1/drivers?detail=true > drivers-list-detail-response.json
+GET v1/drivers/ipmi > driver-get-response.json
GET v1/drivers/agent_ipmitool/properties > driver-property-response.json
GET v1/drivers/agent_ipmitool/raid/logical_disk_properties > driver-logical-disk-properties-response.json
@@ -124,7 +126,7 @@ PATCH v1/chassis/$CID chassis-update-request.json > chassis-update-response.json
# Create a node with a real driver, but missing ipmi_address,
# then do basic commands with it
-POST v1/nodes node-create-request.json > node-create-response.json
+POST v1/nodes node-create-request-classic.json > node-create-response.json
NID=$(cat node-create-response.json | grep '"uuid"' | sed 's/.*"\([0-9a-f\-]*\)",*/\1/')
if [ "$NID" == "" ]; then
exit 1
@@ -132,6 +134,16 @@ else
echo "Node created. UUID: $NID"
fi
+# Also create a node with a dynamic driver for viewing in the node list
+# endpoint
+DNID=$(POST v1/nodes node-create-request-dynamic.json | grep '"uuid"' | sed 's/.*"\([0-9a-f\-]*\)",*/\1/')
+if [ "$DNID" == "" ]; then
+ exit 1
+else
+ echo "Node created. UUID: $DNID"
+fi
+
+
# get the list of passthru methods from agent* driver
GET v1/nodes/$NID/vendor_passthru/methods > node-vendor-passthru-response.json
@@ -251,6 +263,7 @@ GET v1/nodes/$NID/vifs > node-vif-list-response.json
# Replace automatically generated UUIDs by already used in documentation
sed -i "s/$CID/$DOC_CHASSIS_UUID/" *.json
sed -i "s/$NID/$DOC_NODE_UUID/" *.json
+sed -i "s/$DNID/$DOC_DYNAMIC_NODE_UUID/" *.json
sed -i "s/$PID/$DOC_PORT_UUID/" *.json
sed -i "s/$PGID/$DOC_PORTGROUP_UUID/" *.json
sed -i "s/$(hostname)/$DOC_IRONIC_CONDUCTOR_HOSTNAME/" *.json
diff --git a/api-ref/source/baremetal-api-v1-drivers.inc b/api-ref/source/baremetal-api-v1-drivers.inc
index b21c29340..606302fc9 100644
--- a/api-ref/source/baremetal-api-v1-drivers.inc
+++ b/api-ref/source/baremetal-api-v1-drivers.inc
@@ -4,18 +4,31 @@
Drivers (drivers)
=================
-A driver is a Python object containing all the logic to manage the bare metal
-nodes enrolled within Ironic. A driver may be loaded within one or more
-``ironic-conductor`` services. Each driver contains a pre-determined set of
-instantiated interfaces. Each type of interface (eg, ``power`` or ``boot``)
+Ironic has two types of drivers: *classic* drivers and *dynamic* drivers.
+
+A *classic* driver is a Python object containing all the logic to manage the
+bare metal nodes enrolled within Ironic. A driver may be loaded within one or
+more ``ironic-conductor`` services. Each driver contains a pre-determined set
+of instantiated interfaces. Each type of interface (eg, ``power`` or ``boot``)
performs a specific hardware function.
+As of API version 1.30, the REST API also exposes information about *dynamic*
+drivers. *Dynamic* drivers are supported via hardware types, which are Python
+classes enabled via entry points. Unlike *classic* drivers, which have
+pre-determined interfaces, a hardware type may support multiple types of
+interfaces. For example, the ``ipmi`` hardware type may support multiple
+methods for enabling node console. Which interface a node of a particular
+hardware type uses is determined at runtime. This collection of interfaces is
+called a *dynamic* driver. For more information about this, see the node API
+documentation.
+
The REST API exposes the list of drivers and which ``ironic-conductor``
processes have loaded that driver via the Driver resource (``/v1/drivers``
endpoint). This can be useful for operators to validate their configuration in
a heterogeneous hardware environment. Each ``ironic-conductor`` process may
load one or more drivers, and does not necessarily need to load the same
-drivers as another ``ironic-conductor``.
+*classic* drivers as another ``ironic-conductor``. Each ``ironic-conductor``
+with the same hardware types must have the same hardware interfaces enabled.
The REST API also exposes details about each driver, such as what properties
must be supplied to a node's ``driver_info`` for that driver to manage
@@ -40,6 +53,11 @@ Normal response codes: 200
Request
-------
+.. rest_parameters:: parameters.yaml
+
+ - type: driver_type
+ - detail: driver_detail
+
Response Parameters
-------------------
@@ -51,15 +69,46 @@ drivers supported by this Ironic service.
- drivers: drivers
- name: driver_name
- hosts: hosts
+ - type: response_driver_type
- links: links
- properties: driver_property_links
+Additionally, if the request has the "detail" URL parameter set to true, each
+driver will also include the following fields.
+
+.. rest_parameters:: parameters.yaml
+
+ - default_boot_interface: default_boot_interface
+ - default_console_interface: default_console_interface
+ - default_deploy_interface: default_deploy_interface
+ - default_inspect_interface: default_inspect_interface
+ - default_management_interface: default_management_interface
+ - default_network_interface: default_network_interface
+ - default_power_interface: default_power_interface
+ - default_raid_interface: default_raid_interface
+ - default_vendor_interface: default_vendor_interface
+ - enabled_boot_interfaces: enabled_boot_interfaces
+ - enabled_console_interfaces: enabled_console_interfaces
+ - enabled_deploy_interfaces: enabled_deploy_interfaces
+ - enabled_inspect_interfaces: enabled_inspect_interfaces
+ - enabled_management_interfaces: enabled_management_interfaces
+ - enabled_network_interfaces: enabled_network_interfaces
+ - enabled_power_interfaces: enabled_power_interfaces
+ - enabled_raid_interfaces: enabled_raid_interfaces
+ - enabled_vendor_interfaces: enabled_vendor_interfaces
+
Response Example
----------------
+Example for a request with detail=false (the default):
+
.. literalinclude:: samples/drivers-list-response.json
:language: javascript
+Example for a request with detail=true:
+
+.. literalinclude:: samples/drivers-list-detail-response.json
+ :language: javascript
Show driver details
===================
@@ -84,6 +133,25 @@ Response Parameters
- name: driver_name
- hosts: hosts
+ - type: response_driver_type
+ - default_boot_interface: default_boot_interface
+ - default_console_interface: default_console_interface
+ - default_deploy_interface: default_deploy_interface
+ - default_inspect_interface: default_inspect_interface
+ - default_management_interface: default_management_interface
+ - default_network_interface: default_network_interface
+ - default_power_interface: default_power_interface
+ - default_raid_interface: default_raid_interface
+ - default_vendor_interface: default_vendor_interface
+ - enabled_boot_interfaces: enabled_boot_interfaces
+ - enabled_console_interfaces: enabled_console_interfaces
+ - enabled_deploy_interfaces: enabled_deploy_interfaces
+ - enabled_inspect_interfaces: enabled_inspect_interfaces
+ - enabled_management_interfaces: enabled_management_interfaces
+ - enabled_network_interfaces: enabled_network_interfaces
+ - enabled_power_interfaces: enabled_power_interfaces
+ - enabled_raid_interfaces: enabled_raid_interfaces
+ - enabled_vendor_interfaces: enabled_vendor_interfaces
- links: links
- properties: driver_property_links
@@ -155,4 +223,4 @@ The structure of the response is ``property`` : ``description``.
The following example is returned from the ``agent_ipmitool`` driver.
.. literalinclude:: samples/driver-logical-disk-properties-response.json
- :language: javascript \ No newline at end of file
+ :language: javascript
diff --git a/api-ref/source/baremetal-api-v1-nodes.inc b/api-ref/source/baremetal-api-v1-nodes.inc
index 4ef0101bf..353b31025 100644
--- a/api-ref/source/baremetal-api-v1-nodes.inc
+++ b/api-ref/source/baremetal-api-v1-nodes.inc
@@ -34,6 +34,11 @@ This method requires that a ``driver`` be supplied in the request body. Most
subresources of a Node (eg, ``properties``, ``driver_info``, etc) may be
supplied when the Node is created, or the resource may be updated later.
+If the specified driver is a dynamic driver (available from API microversion
+1.31), then all the interfaces (boot_interface, deploy_interface, etc.)
+will be set to the default interface for that driver unless another enabled
+interface is specified in the creation request.
+
API microversion 1.2 introduced the new ``available`` state name, which replaced
``None`` as the status of an unprovisioned Node. All clients should be updated to
use the new ``available`` state name.
@@ -57,9 +62,14 @@ Request
- driver: r_driver_name
-**Example Node creation request:**
+**Example Node creation request with a dynamic driver:**
+
+.. literalinclude:: samples/node-create-request-dynamic.json
+ :language: javascript
+
+**Example Node creation request with a classic driver:**
-.. literalinclude:: samples/node-create-request.json
+.. literalinclude:: samples/node-create-request-classic.json
:language: javascript
Response
@@ -86,8 +96,13 @@ Engine. This field has no effect within Ironic.
API microversion 1.24 introduced the ``/nodes/{node_ident}/portgroups``
endpoint.
+API microversion 1.31 introduced all of the ``*_interface`` fields
+(boot_interface, deploy_interface, etc.), with the exception of the
+network_interface field, which was introduced in API microversion 1.20. If this
+field is not supplied when creating the Node, the default value will be used.
+
The list and example below are representative of the response as of API
-microversion 1.24.
+microversion 1.31.
.. rest_parameters:: parameters.yaml
@@ -117,8 +132,16 @@ microversion 1.24.
- ports: n_ports
- portgroups: n_portgroups
- states: n_states
- - network_interface: network_interface
- resource_class: resource_class
+ - boot_interface: boot_interface
+ - console_interface: console_interface
+ - deploy_interface: deploy_interface
+ - inspect_interface: inspect_interface
+ - management_interface: management_interface
+ - network_interface: network_interface
+ - power_interface: power_interface
+ - raid_interface: raid_interface
+ - vendor_interface: vendor_interface
**Example JSON representation of a Node:**
@@ -252,8 +275,16 @@ Response
- ports: n_ports
- portgroups: n_portgroups
- states: n_states
- - network_interface: network_interface
- resource_class: resource_class
+ - boot_interface: boot_interface
+ - console_interface: console_interface
+ - deploy_interface: deploy_interface
+ - inspect_interface: inspect_interface
+ - management_interface: management_interface
+ - network_interface: network_interface
+ - power_interface: power_interface
+ - raid_interface: raid_interface
+ - vendor_interface: vendor_interface
**Example detailed list of Nodes:**
@@ -313,8 +344,16 @@ Response
- ports: n_ports
- portgroups: n_portgroups
- states: n_states
- - network_interface: network_interface
- resource_class: resource_class
+ - boot_interface: boot_interface
+ - console_interface: console_interface
+ - deploy_interface: deploy_interface
+ - inspect_interface: inspect_interface
+ - management_interface: management_interface
+ - network_interface: network_interface
+ - power_interface: power_interface
+ - raid_interface: raid_interface
+ - vendor_interface: vendor_interface
**Example JSON representation of a Node:**
@@ -383,8 +422,16 @@ Response
- ports: n_ports
- portgroups: n_portgroups
- states: n_states
- - network_interface: network_interface
- resource_class: resource_class
+ - boot_interface: boot_interface
+ - console_interface: console_interface
+ - deploy_interface: deploy_interface
+ - inspect_interface: inspect_interface
+ - management_interface: management_interface
+ - network_interface: network_interface
+ - power_interface: power_interface
+ - raid_interface: raid_interface
+ - vendor_interface: vendor_interface
**Example JSON representation of a Node:**
diff --git a/api-ref/source/parameters.yaml b/api-ref/source/parameters.yaml
index 816091da2..89beda4a2 100644
--- a/api-ref/source/parameters.yaml
+++ b/api-ref/source/parameters.yaml
@@ -84,6 +84,22 @@ callback_url:
required: true
type: string
+# variables in driver query string
+driver_detail:
+ description: |
+ Whether to show detailed information about the drivers (e.g. the
+ "boot_interface" field). Added in API microversion 1.30.
+ in: query
+ required: false
+ type: boolean
+driver_type:
+ description: |
+ Only list drivers of this type. Options are "classic" or "dynamic". Added
+ in API microversion 1.30.
+ in: query
+ required: false
+ type: string
+
# variables common to all query strings
fields:
description: |
@@ -279,6 +295,12 @@ boot_device:
in: body
required: true
type: string
+boot_interface:
+ description: |
+ The boot interface for a Node, e.g. "pxe". Added in API microversion 1.31.
+ in: body
+ required: true
+ type: string
chassis:
description: |
A ``chassis`` object.
@@ -320,6 +342,13 @@ console_enabled:
in: body
required: true
type: boolean
+console_interface:
+ description: |
+ The console interface for a node, e.g. "no-console". Added in API
+ microversion 1.31.
+ in: body
+ required: true
+ type: string
created_at:
description: |
The UTC date and time when the resource was created,
@@ -327,6 +356,84 @@ created_at:
in: body
required: true
type: string
+default_boot_interface:
+ description: |
+ The default boot interface used for a node with a dynamic driver, if no
+ boot interface is specified for the node. Added in API microversion 1.30.
+ in: body
+ required: true
+ type: string
+default_console_interface:
+ description: |
+ The default console interface used for a node with a dynamic driver, if no
+ console interface is specified for the node. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: string
+default_deploy_interface:
+ description: |
+ The default deploy interface used for a node with a dynamic driver, if no
+ deploy interface is specified for the node. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: string
+default_inspect_interface:
+ description: |
+ The default inspection interface used for a node with a dynamic driver, if
+ no inspection interface is specified for the node. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: string
+default_management_interface:
+ description: |
+ The default management interface used for a node with a dynamic driver, if
+ no management interface is specified for the node. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: string
+default_network_interface:
+ description: |
+ The default network interface used for a node with a dynamic driver, if
+ no network interface is specified for the node. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: string
+default_power_interface:
+ description: |
+ The default power interface used for a node with a dynamic driver, if
+ no power interface is specified for the node. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: string
+default_raid_interface:
+ description: |
+ The default RAID interface used for a node with a dynamic driver, if
+ no RAID interface is specified for the node. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: string
+default_vendor_interface:
+ description: |
+ The default vendor interface used for a node with a dynamic driver, if
+ no vendor interface is specified for the node. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: string
+deploy_interface:
+ description: |
+ The deploy interface for a node, e.g. "iscsi". Added in API microversion
+ 1.31.
+ in: body
+ required: true
+ type: string
description:
description: |
Descriptive text about the Ironic service.
@@ -364,6 +471,69 @@ drivers:
in: body
required: true
type: array
+enabled_boot_interfaces:
+ description: |
+ The enabled boot interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
+enabled_console_interfaces:
+ description: |
+ The enabled console interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
+enabled_deploy_interfaces:
+ description: |
+ The enabled deploy interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
+enabled_inspect_interfaces:
+ description: |
+ The enabled inspection interfaces for this driver. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: list
+enabled_management_interfaces:
+ description: |
+ The enabled management interfaces for this driver. Added in API
+ microversion 1.30.
+ in: body
+ required: true
+ type: list
+enabled_network_interfaces:
+ description: |
+ The enabled network interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
+enabled_power_interfaces:
+ description: |
+ The enabled power interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
+enabled_raid_interfaces:
+ description: |
+ The enabled RAID interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
+enabled_vendor_interfaces:
+ description: |
+ The enabled vendor interfaces for this driver. Added in API microversion
+ 1.30.
+ in: body
+ required: true
+ type: list
extra:
description: |
A set of one or more arbitrary metadata key and
@@ -383,6 +553,13 @@ id:
in: body
required: true
type: string
+inspect_interface:
+ description: |
+ The interface used for node inspection, e.g. "no-inspect". Added in API
+ microversion 1.31.
+ in: body
+ required: true
+ type: string
inspection_finished_at:
description: |
The UTC date and time when the last hardware inspection finished
@@ -462,6 +639,13 @@ maintenance_reason:
in: body
required: false
type: string
+management_interface:
+ description: |
+ Interface for out-of-band node management, e.g. "ipmitool". Added in API
+ microversion 1.31.
+ in: body
+ required: true
+ type: string
n_portgroups:
description: |
Links to the collection of portgroups on this node.
@@ -637,6 +821,13 @@ ports:
in: body
required: true
type: array
+power_interface:
+ description: |
+ Interface used for performing power actions on the node, e.g. "ipmitool".
+ Added in API microversion 1.31.
+ in: body
+ required: true
+ type: string
power_state:
description: |
The current power state of this Node. Usually, "power on" or "power off", but may be "None"
@@ -690,6 +881,13 @@ raid_config:
in: body
required: false
type: JSON
+raid_interface:
+ description: |
+ Interface used for configuring RAID on this node, e.g. "no-raid". Added in
+ API microversion 1.31.
+ in: body
+ required: true
+ type: string
reason:
description: |
Specify the reason for setting the Node into maintenance mode.
@@ -718,6 +916,12 @@ resource_class:
in: body
required: true
type: string
+response_driver_type:
+ description: |
+ Type of this driver ("classic" or "dynamic").
+ in: body
+ required: true
+ type: string
standalone_ports_supported:
description: |
Indicates whether ports that are members of this portgroup can be
@@ -816,7 +1020,13 @@ v_raid:
in: body
required: true
type: object
-
+vendor_interface:
+ description: |
+ Interface for vendor-specific functionality on this node, e.g. "no-vendor".
+ Added in API microversion 1.31.
+ in: body
+ required: true
+ type: string
version:
description: |
Versioning of this API response, eg. "1.22".
diff --git a/api-ref/source/samples/api-root-response.json b/api-ref/source/samples/api-root-response.json
index ec4b77c89..68f00f7f2 100644
--- a/api-ref/source/samples/api-root-response.json
+++ b/api-ref/source/samples/api-root-response.json
@@ -9,7 +9,7 @@
],
"min_version": "1.1",
"status": "CURRENT",
- "version": "1.29"
+ "version": "1.31"
},
"description": "Ironic is an OpenStack project which aims to provision baremetal machines.",
"name": "OpenStack Ironic API",
@@ -24,7 +24,7 @@
],
"min_version": "1.1",
"status": "CURRENT",
- "version": "1.29"
+ "version": "1.31"
}
]
}
diff --git a/api-ref/source/samples/driver-get-response.json b/api-ref/source/samples/driver-get-response.json
index fa4bac4b3..421b78e6c 100644
--- a/api-ref/source/samples/driver-get-response.json
+++ b/api-ref/source/samples/driver-get-response.json
@@ -1,26 +1,66 @@
{
+ "default_boot_interface": "pxe",
+ "default_console_interface": "no-console",
+ "default_deploy_interface": "iscsi",
+ "default_inspect_interface": "no-inspect",
+ "default_management_interface": "ipmitool",
+ "default_network_interface": "flat",
+ "default_power_interface": "ipmitool",
+ "default_raid_interface": "no-raid",
+ "default_vendor_interface": "no-vendor",
+ "enabled_boot_interfaces": [
+ "pxe"
+ ],
+ "enabled_console_interfaces": [
+ "no-console"
+ ],
+ "enabled_deploy_interfaces": [
+ "iscsi",
+ "direct"
+ ],
+ "enabled_inspect_interfaces": [
+ "no-inspect"
+ ],
+ "enabled_management_interfaces": [
+ "ipmitool"
+ ],
+ "enabled_network_interfaces": [
+ "flat",
+ "noop"
+ ],
+ "enabled_power_interfaces": [
+ "ipmitool"
+ ],
+ "enabled_raid_interfaces": [
+ "no-raid",
+ "agent"
+ ],
+ "enabled_vendor_interfaces": [
+ "no-vendor"
+ ],
"hosts": [
"897ab1dad809"
],
"links": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool",
+ "href": "http://127.0.0.1:6385/v1/drivers/ipmi",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/agent_ipmitool",
+ "href": "http://127.0.0.1:6385/drivers/ipmi",
"rel": "bookmark"
}
],
- "name": "agent_ipmitool",
+ "name": "ipmi",
"properties": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool/properties",
+ "href": "http://127.0.0.1:6385/v1/drivers/ipmi/properties",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/agent_ipmitool/properties",
+ "href": "http://127.0.0.1:6385/drivers/ipmi/properties",
"rel": "bookmark"
}
- ]
+ ],
+ "type": "dynamic"
}
diff --git a/api-ref/source/samples/drivers-list-detail-response.json b/api-ref/source/samples/drivers-list-detail-response.json
new file mode 100644
index 000000000..32e3856a2
--- /dev/null
+++ b/api-ref/source/samples/drivers-list-detail-response.json
@@ -0,0 +1,160 @@
+{
+ "drivers": [
+ {
+ "default_boot_interface": null,
+ "default_console_interface": null,
+ "default_deploy_interface": null,
+ "default_inspect_interface": null,
+ "default_management_interface": null,
+ "default_network_interface": null,
+ "default_power_interface": null,
+ "default_raid_interface": null,
+ "default_vendor_interface": null,
+ "enabled_boot_interfaces": null,
+ "enabled_console_interfaces": null,
+ "enabled_deploy_interfaces": null,
+ "enabled_inspect_interfaces": null,
+ "enabled_management_interfaces": null,
+ "enabled_network_interfaces": null,
+ "enabled_power_interfaces": null,
+ "enabled_raid_interfaces": null,
+ "enabled_vendor_interfaces": null,
+ "hosts": [
+ "897ab1dad809"
+ ],
+ "links": [
+ {
+ "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/drivers/agent_ipmitool",
+ "rel": "bookmark"
+ }
+ ],
+ "name": "agent_ipmitool",
+ "properties": [
+ {
+ "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool/properties",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/drivers/agent_ipmitool/properties",
+ "rel": "bookmark"
+ }
+ ],
+ "type": "classic"
+ },
+ {
+ "default_boot_interface": null,
+ "default_console_interface": null,
+ "default_deploy_interface": null,
+ "default_inspect_interface": null,
+ "default_management_interface": null,
+ "default_network_interface": null,
+ "default_power_interface": null,
+ "default_raid_interface": null,
+ "default_vendor_interface": null,
+ "enabled_boot_interfaces": null,
+ "enabled_console_interfaces": null,
+ "enabled_deploy_interfaces": null,
+ "enabled_inspect_interfaces": null,
+ "enabled_management_interfaces": null,
+ "enabled_network_interfaces": null,
+ "enabled_power_interfaces": null,
+ "enabled_raid_interfaces": null,
+ "enabled_vendor_interfaces": null,
+ "hosts": [
+ "897ab1dad809"
+ ],
+ "links": [
+ {
+ "href": "http://127.0.0.1:6385/v1/drivers/fake",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/drivers/fake",
+ "rel": "bookmark"
+ }
+ ],
+ "name": "fake",
+ "properties": [
+ {
+ "href": "http://127.0.0.1:6385/v1/drivers/fake/properties",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/drivers/fake/properties",
+ "rel": "bookmark"
+ }
+ ],
+ "type": "classic"
+ },
+ {
+ "default_boot_interface": "pxe",
+ "default_console_interface": "no-console",
+ "default_deploy_interface": "iscsi",
+ "default_inspect_interface": "no-inspect",
+ "default_management_interface": "ipmitool",
+ "default_network_interface": "flat",
+ "default_power_interface": "ipmitool",
+ "default_raid_interface": "no-raid",
+ "default_vendor_interface": "no-vendor",
+ "enabled_boot_interfaces": [
+ "pxe"
+ ],
+ "enabled_console_interfaces": [
+ "no-console"
+ ],
+ "enabled_deploy_interfaces": [
+ "iscsi",
+ "direct"
+ ],
+ "enabled_inspect_interfaces": [
+ "no-inspect"
+ ],
+ "enabled_management_interfaces": [
+ "ipmitool"
+ ],
+ "enabled_network_interfaces": [
+ "flat",
+ "noop"
+ ],
+ "enabled_power_interfaces": [
+ "ipmitool"
+ ],
+ "enabled_raid_interfaces": [
+ "no-raid",
+ "agent"
+ ],
+ "enabled_vendor_interfaces": [
+ "no-vendor"
+ ],
+ "hosts": [
+ "897ab1dad809"
+ ],
+ "links": [
+ {
+ "href": "http://127.0.0.1:6385/v1/drivers/ipmi",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/drivers/ipmi",
+ "rel": "bookmark"
+ }
+ ],
+ "name": "ipmi",
+ "properties": [
+ {
+ "href": "http://127.0.0.1:6385/v1/drivers/ipmi/properties",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/drivers/ipmi/properties",
+ "rel": "bookmark"
+ }
+ ],
+ "type": "dynamic"
+ }
+ ]
+}
diff --git a/api-ref/source/samples/drivers-list-response.json b/api-ref/source/samples/drivers-list-response.json
index b49fda04c..c36a22a67 100644
--- a/api-ref/source/samples/drivers-list-response.json
+++ b/api-ref/source/samples/drivers-list-response.json
@@ -6,51 +6,26 @@
],
"links": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/agent_ssh",
+ "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/agent_ssh",
+ "href": "http://127.0.0.1:6385/drivers/agent_ipmitool",
"rel": "bookmark"
}
],
- "name": "agent_ssh",
+ "name": "agent_ipmitool",
"properties": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/agent_ssh/properties",
- "rel": "self"
- },
- {
- "href": "http://127.0.0.1:6385/drivers/agent_ssh/properties",
- "rel": "bookmark"
- }
- ]
- },
- {
- "hosts": [
- "897ab1dad809"
- ],
- "links": [
- {
- "href": "http://127.0.0.1:6385/v1/drivers/pxe_ipmitool",
+ "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool/properties",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/pxe_ipmitool",
+ "href": "http://127.0.0.1:6385/drivers/agent_ipmitool/properties",
"rel": "bookmark"
}
],
- "name": "pxe_ipmitool",
- "properties": [
- {
- "href": "http://127.0.0.1:6385/v1/drivers/pxe_ipmitool/properties",
- "rel": "self"
- },
- {
- "href": "http://127.0.0.1:6385/drivers/pxe_ipmitool/properties",
- "rel": "bookmark"
- }
- ]
+ "type": "classic"
},
{
"hosts": [
@@ -58,25 +33,26 @@
],
"links": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool",
+ "href": "http://127.0.0.1:6385/v1/drivers/fake",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/agent_ipmitool",
+ "href": "http://127.0.0.1:6385/drivers/fake",
"rel": "bookmark"
}
],
- "name": "agent_ipmitool",
+ "name": "fake",
"properties": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/agent_ipmitool/properties",
+ "href": "http://127.0.0.1:6385/v1/drivers/fake/properties",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/agent_ipmitool/properties",
+ "href": "http://127.0.0.1:6385/drivers/fake/properties",
"rel": "bookmark"
}
- ]
+ ],
+ "type": "classic"
},
{
"hosts": [
@@ -84,25 +60,26 @@
],
"links": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/fake",
+ "href": "http://127.0.0.1:6385/v1/drivers/ipmi",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/fake",
+ "href": "http://127.0.0.1:6385/drivers/ipmi",
"rel": "bookmark"
}
],
- "name": "fake",
+ "name": "ipmi",
"properties": [
{
- "href": "http://127.0.0.1:6385/v1/drivers/fake/properties",
+ "href": "http://127.0.0.1:6385/v1/drivers/ipmi/properties",
"rel": "self"
},
{
- "href": "http://127.0.0.1:6385/drivers/fake/properties",
+ "href": "http://127.0.0.1:6385/drivers/ipmi/properties",
"rel": "bookmark"
}
- ]
+ ],
+ "type": "dynamic"
}
]
}
diff --git a/api-ref/source/samples/node-create-request.json b/api-ref/source/samples/node-create-request-classic.json
index 1c78c5860..1e9de7d90 100644
--- a/api-ref/source/samples/node-create-request.json
+++ b/api-ref/source/samples/node-create-request-classic.json
@@ -1,5 +1,5 @@
{
- "name": "test_node",
+ "name": "test_node_classic",
"driver": "agent_ipmitool",
"driver_info": {
"ipmi_username": "ADMIN",
diff --git a/api-ref/source/samples/node-create-request-dynamic.json b/api-ref/source/samples/node-create-request-dynamic.json
new file mode 100644
index 000000000..1aa360a87
--- /dev/null
+++ b/api-ref/source/samples/node-create-request-dynamic.json
@@ -0,0 +1,9 @@
+{
+ "name": "test_node_dynamic",
+ "driver": "ipmi",
+ "driver_info": {
+ "ipmi_username": "ADMIN",
+ "ipmi_password": "password"
+ },
+ "power_interface": "ipmitool"
+}
diff --git a/api-ref/source/samples/node-create-response.json b/api-ref/source/samples/node-create-response.json
index 8f6e8ec1e..b6124a765 100644
--- a/api-ref/source/samples/node-create-response.json
+++ b/api-ref/source/samples/node-create-response.json
@@ -1,8 +1,11 @@
{
+ "boot_interface": null,
"chassis_uuid": null,
"clean_step": {},
"console_enabled": false,
+ "console_interface": null,
"created_at": "2016-08-18T22:28:48.643434+11:11",
+ "deploy_interface": null,
"driver": "agent_ipmitool",
"driver_info": {
"ipmi_password": "******",
@@ -10,6 +13,7 @@
},
"driver_internal_info": {},
"extra": {},
+ "inspect_interface": null,
"inspection_finished_at": null,
"inspection_started_at": null,
"instance_info": {},
@@ -27,7 +31,8 @@
],
"maintenance": false,
"maintenance_reason": null,
- "name": "test_node",
+ "management_interface": null,
+ "name": "test_node_classic",
"network_interface": "flat",
"portgroups": [
{
@@ -49,11 +54,13 @@
"rel": "bookmark"
}
],
+ "power_interface": null,
"power_state": null,
"properties": {},
"provision_state": "enroll",
"provision_updated_at": null,
"raid_config": {},
+ "raid_interface": null,
"reservation": null,
"resource_class": null,
"states": [
@@ -70,5 +77,6 @@
"target_provision_state": null,
"target_raid_config": {},
"updated_at": null,
- "uuid": "6d85703a-565d-469a-96ce-30b6de53079d"
+ "uuid": "6d85703a-565d-469a-96ce-30b6de53079d",
+ "vendor_interface": null
}
diff --git a/api-ref/source/samples/node-show-response.json b/api-ref/source/samples/node-show-response.json
index f6d71c039..5902944b1 100644
--- a/api-ref/source/samples/node-show-response.json
+++ b/api-ref/source/samples/node-show-response.json
@@ -1,8 +1,11 @@
{
+ "boot_interface": null,
"chassis_uuid": null,
"clean_step": {},
"console_enabled": false,
+ "console_interface": null,
"created_at": "2016-08-18T22:28:48.643434+11:11",
+ "deploy_interface": null,
"driver": "fake",
"driver_info": {
"ipmi_password": "******",
@@ -12,6 +15,7 @@
"clean_steps": null
},
"extra": {},
+ "inspect_interface": null,
"inspection_finished_at": null,
"inspection_started_at": null,
"instance_info": {},
@@ -29,7 +33,8 @@
],
"maintenance": false,
"maintenance_reason": null,
- "name": "test_node",
+ "management_interface": null,
+ "name": "test_node_classic",
"network_interface": "flat",
"portgroups": [
{
@@ -51,11 +56,13 @@
"rel": "bookmark"
}
],
+ "power_interface": null,
"power_state": "power off",
"properties": {},
"provision_state": "available",
"provision_updated_at": "2016-08-18T22:28:49.946416+00:00",
"raid_config": {},
+ "raid_interface": null,
"reservation": null,
"resource_class": null,
"states": [
@@ -72,5 +79,6 @@
"target_provision_state": null,
"target_raid_config": {},
"updated_at": "2016-08-18T22:28:49.653974+00:00",
- "uuid": "6d85703a-565d-469a-96ce-30b6de53079d"
+ "uuid": "6d85703a-565d-469a-96ce-30b6de53079d",
+ "vendor_interface": null
}
diff --git a/api-ref/source/samples/node-update-driver-info-response.json b/api-ref/source/samples/node-update-driver-info-response.json
index 37d78ea82..2c316cd24 100644
--- a/api-ref/source/samples/node-update-driver-info-response.json
+++ b/api-ref/source/samples/node-update-driver-info-response.json
@@ -1,8 +1,11 @@
{
+ "boot_interface": null,
"chassis_uuid": null,
"clean_step": {},
"console_enabled": false,
+ "console_interface": null,
"created_at": "2016-08-18T22:28:48.643434+11:11",
+ "deploy_interface": null,
"driver": "fake",
"driver_info": {
"deploy_kernel": "http://127.0.0.1/images/kernel",
@@ -14,6 +17,7 @@
"clean_steps": null
},
"extra": {},
+ "inspect_interface": null,
"inspection_finished_at": null,
"inspection_started_at": null,
"instance_info": {},
@@ -31,7 +35,8 @@
],
"maintenance": true,
"maintenance_reason": "Replacing the hard drive",
- "name": "test_node",
+ "management_interface": null,
+ "name": "test_node_classic",
"network_interface": "flat",
"portgroups": [
{
@@ -53,11 +58,13 @@
"rel": "bookmark"
}
],
+ "power_interface": null,
"power_state": "power off",
"properties": {},
"provision_state": "available",
"provision_updated_at": "2016-08-18T22:28:49.946416+00:00",
"raid_config": {},
+ "raid_interface": null,
"reservation": null,
"resource_class": null,
"states": [
@@ -74,5 +81,6 @@
"target_provision_state": null,
"target_raid_config": {},
"updated_at": "2016-08-18T22:28:49.653974+00:00",
- "uuid": "6d85703a-565d-469a-96ce-30b6de53079d"
+ "uuid": "6d85703a-565d-469a-96ce-30b6de53079d",
+ "vendor_interface": null
}
diff --git a/api-ref/source/samples/nodes-list-details-response.json b/api-ref/source/samples/nodes-list-details-response.json
index 7b29c4ebd..aae8ccd15 100644
--- a/api-ref/source/samples/nodes-list-details-response.json
+++ b/api-ref/source/samples/nodes-list-details-response.json
@@ -1,10 +1,13 @@
{
"nodes": [
{
+ "boot_interface": null,
"chassis_uuid": null,
"clean_step": {},
"console_enabled": false,
+ "console_interface": null,
"created_at": "2016-08-18T22:28:48.643434+11:11",
+ "deploy_interface": null,
"driver": "fake",
"driver_info": {
"ipmi_password": "******",
@@ -14,6 +17,7 @@
"clean_steps": null
},
"extra": {},
+ "inspect_interface": null,
"inspection_finished_at": null,
"inspection_started_at": null,
"instance_info": {},
@@ -31,7 +35,8 @@
],
"maintenance": false,
"maintenance_reason": null,
- "name": "test_node",
+ "management_interface": null,
+ "name": "test_node_classic",
"network_interface": "flat",
"portgroups": [
{
@@ -53,11 +58,13 @@
"rel": "bookmark"
}
],
+ "power_interface": null,
"power_state": "power off",
"properties": {},
"provision_state": "available",
"provision_updated_at": "2016-08-18T22:28:49.946416+00:00",
"raid_config": {},
+ "raid_interface": null,
"reservation": null,
"resource_class": null,
"states": [
@@ -74,7 +81,90 @@
"target_provision_state": null,
"target_raid_config": {},
"updated_at": "2016-08-18T22:28:49.653974+00:00",
- "uuid": "6d85703a-565d-469a-96ce-30b6de53079d"
+ "uuid": "6d85703a-565d-469a-96ce-30b6de53079d",
+ "vendor_interface": null
+ },
+ {
+ "boot_interface": "pxe",
+ "chassis_uuid": null,
+ "clean_step": {},
+ "console_enabled": false,
+ "console_interface": "no-console",
+ "created_at": "2016-08-18T22:28:48.643434+11:11",
+ "deploy_interface": "iscsi",
+ "driver": "ipmi",
+ "driver_info": {
+ "ipmi_password": "******",
+ "ipmi_username": "ADMIN"
+ },
+ "driver_internal_info": {},
+ "extra": {},
+ "inspect_interface": "no-inspect",
+ "inspection_finished_at": null,
+ "inspection_started_at": null,
+ "instance_info": {},
+ "instance_uuid": null,
+ "last_error": null,
+ "links": [
+ {
+ "href": "http://127.0.0.1:6385/v1/nodes/2b045129-a906-46af-bc1a-092b294b3428",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/nodes/2b045129-a906-46af-bc1a-092b294b3428",
+ "rel": "bookmark"
+ }
+ ],
+ "maintenance": false,
+ "maintenance_reason": null,
+ "management_interface": "ipmitool",
+ "name": "test_node_dynamic",
+ "network_interface": "flat",
+ "portgroups": [
+ {
+ "href": "http://127.0.0.1:6385/v1/nodes/2b045129-a906-46af-bc1a-092b294b3428/portgroups",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/nodes/2b045129-a906-46af-bc1a-092b294b3428/portgroups",
+ "rel": "bookmark"
+ }
+ ],
+ "ports": [
+ {
+ "href": "http://127.0.0.1:6385/v1/nodes/2b045129-a906-46af-bc1a-092b294b3428/ports",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/nodes/2b045129-a906-46af-bc1a-092b294b3428/ports",
+ "rel": "bookmark"
+ }
+ ],
+ "power_interface": "ipmitool",
+ "power_state": null,
+ "properties": {},
+ "provision_state": "enroll",
+ "provision_updated_at": null,
+ "raid_config": {},
+ "raid_interface": "no-raid",
+ "reservation": null,
+ "resource_class": null,
+ "states": [
+ {
+ "href": "http://127.0.0.1:6385/v1/nodes/2b045129-a906-46af-bc1a-092b294b3428/states",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/nodes/2b045129-a906-46af-bc1a-092b294b3428/states",
+ "rel": "bookmark"
+ }
+ ],
+ "target_power_state": null,
+ "target_provision_state": null,
+ "target_raid_config": {},
+ "updated_at": null,
+ "uuid": "2b045129-a906-46af-bc1a-092b294b3428",
+ "vendor_interface": "no-vendor"
}
]
}
diff --git a/api-ref/source/samples/nodes-list-response.json b/api-ref/source/samples/nodes-list-response.json
index 7ab0f9425..c36121fa4 100644
--- a/api-ref/source/samples/nodes-list-response.json
+++ b/api-ref/source/samples/nodes-list-response.json
@@ -13,10 +13,28 @@
}
],
"maintenance": false,
- "name": "test_node",
+ "name": "test_node_classic",
"power_state": "power off",
"provision_state": "available",
"uuid": "6d85703a-565d-469a-96ce-30b6de53079d"
+ },
+ {
+ "instance_uuid": null,
+ "links": [
+ {
+ "href": "http://127.0.0.1:6385/v1/nodes/2b045129-a906-46af-bc1a-092b294b3428",
+ "rel": "self"
+ },
+ {
+ "href": "http://127.0.0.1:6385/nodes/2b045129-a906-46af-bc1a-092b294b3428",
+ "rel": "bookmark"
+ }
+ ],
+ "maintenance": false,
+ "name": "test_node_dynamic",
+ "power_state": null,
+ "provision_state": "enroll",
+ "uuid": "2b045129-a906-46af-bc1a-092b294b3428"
}
]
}