From d33faedbacc6f25d4106b7738bd3f7aeafc839b1 Mon Sep 17 00:00:00 2001 From: Mario Villaplana Date: Thu, 2 Feb 2017 22:00:18 +0000 Subject: [PATCH] Update api-ref for dynamic drivers Updates reference for drivers API as well as nodes API to match the merged driver composition reform work. Change-Id: I89a7b1998a858d5c39f21c6653893aa8d7ad15bd Partial-Bug: 1524745 --- api-ref/regenerate-samples.sh | 19 +- api-ref/source/baremetal-api-v1-drivers.inc | 80 ++++++- api-ref/source/baremetal-api-v1-nodes.inc | 61 ++++- api-ref/source/parameters.yaml | 212 +++++++++++++++++- api-ref/source/samples/api-root-response.json | 4 +- .../source/samples/driver-get-response.json | 52 ++++- .../samples/drivers-list-detail-response.json | 160 +++++++++++++ .../source/samples/drivers-list-response.json | 85 +++---- ....json => node-create-request-classic.json} | 2 +- .../samples/node-create-request-dynamic.json | 9 + .../source/samples/node-create-response.json | 12 +- .../source/samples/node-show-response.json | 12 +- .../node-update-driver-info-response.json | 12 +- .../samples/nodes-list-details-response.json | 94 +++++++- .../source/samples/nodes-list-response.json | 20 +- 15 files changed, 745 insertions(+), 89 deletions(-) create mode 100644 api-ref/source/samples/drivers-list-detail-response.json rename api-ref/source/samples/{node-create-request.json => node-create-request-classic.json} (80%) create mode 100644 api-ref/source/samples/node-create-request-dynamic.json diff --git a/api-ref/regenerate-samples.sh b/api-ref/regenerate-samples.sh index 13794e301e..836f224948 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 b21c29340e..606302fc9f 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 4ef0101bf5..353b310252 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.json +.. literalinclude:: samples/node-create-request-dynamic.json + :language: javascript + +**Example Node creation request with a classic driver:** + +.. 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 816091da29..89beda4a2b 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 ec4b77c897..68f00f7f25 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 fa4bac4b33..421b78e6c5 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 0000000000..32e3856a2b --- /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 b49fda04cb..c36a22a67e 100644 --- a/api-ref/source/samples/drivers-list-response.json +++ b/api-ref/source/samples/drivers-list-response.json @@ -1,57 +1,5 @@ { "drivers": [ - { - "hosts": [ - "897ab1dad809" - ], - "links": [ - { - "href": "http://127.0.0.1:6385/v1/drivers/agent_ssh", - "rel": "self" - }, - { - "href": "http://127.0.0.1:6385/drivers/agent_ssh", - "rel": "bookmark" - } - ], - "name": "agent_ssh", - "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", - "rel": "self" - }, - { - "href": "http://127.0.0.1:6385/drivers/pxe_ipmitool", - "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" - } - ] - }, { "hosts": [ "897ab1dad809" @@ -76,7 +24,8 @@ "href": "http://127.0.0.1:6385/drivers/agent_ipmitool/properties", "rel": "bookmark" } - ] + ], + "type": "classic" }, { "hosts": [ @@ -102,7 +51,35 @@ "href": "http://127.0.0.1:6385/drivers/fake/properties", "rel": "bookmark" } - ] + ], + "type": "classic" + }, + { + "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/node-create-request.json b/api-ref/source/samples/node-create-request-classic.json similarity index 80% rename from api-ref/source/samples/node-create-request.json rename to api-ref/source/samples/node-create-request-classic.json index 1c78c58605..1e9de7d907 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 0000000000..1aa360a87a --- /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 8f6e8ec1ef..b6124a7659 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 f6d71c039c..5902944b10 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 37d78ea82d..2c316cd242 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 7b29c4ebde..aae8ccd15a 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 7ab0f9425d..c36121fa4c 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" } ] }