PYTHON-IRONICCLIENT(1)

πŸ“¦
version 6.3.0 Β· 4 versions
, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay bestie, welcome to PYTHON-IRONICCLIENT(1) β€” the manual page for python-ironicclient, version python-ironicclient 6.3.0. This is the client for the OpenStack Ironic API (https://wiki.openstack.org/wiki/Ironic). It gives you:

  • a Python API: the ironicclient module, and
  • command-line interface: openstack baremetal

🌈 CONTENTS 🌈

🐍 ironicclient Python API 🐍

The ironicclient python API lets you access ironic, the OpenStack Bare Metal Provisioning Service.

For example, to manipulate nodes, you interact with an ironicclient.v1.node.Node <#ironicclient.v1.node.Node> object. You obtain access to nodes via attributes of the ironicclient.v1.client.Client <#ironicclient.v1.client.Client> object.

🧚 Usage 🧚

πŸ’… Get a Client object πŸ’…

First, create an ironicclient.v1.client.Client <#ironicclient.v1.client.Client> instance by passing your credentials to ironicclient.client.get_client() <#ironicclient.client.get_client>. By default, the Bare Metal Provisioning system is configured so that only administrators (users with 'admin' role) have access.

πŸ’€ Note: Explicit instantiation of ironicclient.v1.client.Client <#ironicclient.v1.client.Client> may cause errors since it doesn't verify provided arguments, using ironicclient.client.get_client() <#ironicclient.client.get_client> is preferred way to get client object.

There are two different sets of credentials that can be used:

  • ironic endpoint and auth token
  • Identity Service (keystone) credentials

πŸ”‘ Using ironic endpoint and auth token πŸ”‘

An auth token and the ironic endpoint can be used to authenticate:

To create the client, you can use the API like so:

>>> from ironicclient import client
>>>
>>> kwargs = {'os_auth_token': '3bcc3d3a03f44e3d8377f9247b0ad155',
>>>           'ironic_url': 'http://ironic.example.org:6385/'}
>>> ironic = client.get_client(1, **kwargs)

πŸͺͺ Using Identity Service (keystone) credentials πŸͺͺ

These Identity Service credentials can be used to authenticate:

  • os_username: name of user
  • os_password: user's password
  • os_auth_url: Identity Service endpoint for authorization
  • insecure: Boolean. If True, does not perform X.509 certificate validation when establishing SSL connection with identity service. default: False (optional)
  • os_tenant_{name|id}: name or ID of tenant

Also the following parameters are required when using the Identity API v3:

  • os_user_domain_name: name of a domain the user belongs to, usually 'default'
  • os_project_domain_name: name of a domain the project belongs to, usually 'default'

To create a client, you can use the API like so:

>>> from ironicclient import client
>>>
>>> kwargs = {'os_username': 'name',
>>>           'os_password': 'password',
>>>           'os_auth_url': 'http://keystone.example.org:5000/',
>>>           'os_project_name': 'project'}
>>> ironic = client.get_client(1, **kwargs)

⚑ Perform ironic operations ⚑

Once you have an ironicclient.v1.client.Client <#ironicclient.v1.client.Client>, you can perform various tasks:

>>> ironic.driver.list()  # list of drivers
>>> ironic.node.list()  # list of nodes
>>> ironic.node.get(node_uuid)  # information about a particular node

When the Client needs to propagate an exception, it will usually raise an instance subclassed from ironicclient.common.apiclient.exceptions.ClientException <#ironicclient.common.apiclient.exceptions.ClientException>.

Refer to the modules themselves, for more details.

πŸ“¦ ironicclient Modules πŸ“¦

  • Module Index <>

πŸ“š python-ironicclient User Documentation πŸ“š

πŸ› οΈ baremetal Standalone Command-Line Interface (CLI) πŸ› οΈ

πŸ“œ Synopsis πŸ“œ

baremetal [options] <command> [command-options]

baremetal help <command>

πŸ“ Description πŸ“

The standalone baremetal tool allows interacting with the Bare Metal service without installing the OpenStack Client tool as in openstack baremetal Command-Line Interface (CLI) <>.

The standalone tool is mostly identical to its OSC counterpart, with two exceptions:

  1. No need to prefix commands with openstack.
  2. No authentication is assumed by default.

Check the OSC CLI reference <> for a list of available commands.

πŸ” Inspector support πŸ”

The standalone baremetal tool optionally supports the low-level bare metal introspection API provided by ironic-inspector (https://docs.openstack.org/ironic-inspector/). If ironic-inspector-client (https://docs.openstack.org/python-ironic-inspector-client/) is installed, its commands (https://docs.openstack.org/python-ironic-inspector-client/latest/cli/index.html) are automatically available (also without the openstack prefix).

πŸš€ Standalone usage πŸš€

To use the CLI with a standalone bare metal service, you need to provide an endpoint to connect to. It can be done in three ways:

  1. Provide an explicit --os-endpoint argument, e.g.:
$ baremetal --os-endpoint https://ironic.host:6385 node list
  1. Set the corresponding environment variable, e.g.:
$ export OS_ENDPOINT=https://ironic.host:6385
$ baremetal node list
  1. Populate a clouds.yaml (https://docs.openstack.org/openstacksdk/latest/user/guides/connect_from_config.html) file, setting baremetal_endpoint_override, e.g.:
$ cat ~/.config/openstack/clouds.yaml
clouds:
  ironic:
    auth_type: none
    baremetal_endpoint_override: http://127.0.0.1:6385
$ export OS_CLOUD=ironic
$ baremetal node list

☁️ Usage with OpenStack ☁️

The standalone CLI can also be used with the Bare Metal service installed as part of OpenStack. See Authentication <#osc-auth> for information on the required input.

🌟 openstack baremetal Command-Line Interface (CLI) 🌟

πŸ“œ Synopsis πŸ“œ

openstack [options] baremetal <command> [command-options]

openstack help baremetal <command>

πŸ“ Description πŸ“

The OpenStack Client plugin interacts with the Bare Metal service through the openstack baremetal command line interface (CLI).

To use the openstack CLI, the OpenStackClient (python-openstackclient) package must be installed. There are two ways to do this:

  • along with this python-ironicclient package:
$ pip install python-ironicclient[cli]
  • directly:
$ pip install python-openstackclient

This CLI is provided by python-openstackclient and osc-lib projects:

πŸ” Authentication πŸ”

To use the CLI, you must provide your OpenStack username, password, project, and auth endpoint. You can use configuration options --os-username, --os-password, --os-project-id (or --os-project-name), and --os-auth-url, or set the corresponding environment variables:

$ export OS_USERNAME=user
$ export OS_PASSWORD=password
$ export OS_PROJECT_NAME=project                         # or OS_PROJECT_ID
$ export OS_PROJECT_DOMAIN_ID=default
$ export OS_USER_DOMAIN_ID=default
$ export OS_IDENTITY_API_VERSION=3
$ export OS_AUTH_URL=http://auth.example.com:5000/identity

πŸ†˜ Getting help πŸ†˜

To get a list of available (sub)commands and options, run:

$ openstack help baremetal

To get usage and options of a command, run:

$ openstack help baremetal <sub-command>

✨ Examples ✨

Get information about the openstack baremetal node create command:

$ openstack help baremetal node create

Get a list of available drivers:

$ openstack baremetal driver list

Enroll a node with the ipmi driver:

$ openstack baremetal node create --driver ipmi --driver-info ipmi_address=1.2.3.4

Get a list of nodes:

$ openstack baremetal node list

The baremetal API version can be specified via:

  • environment variable OS_BAREMETAL_API_VERSION:
$ export OS_BAREMETAL_API_VERSION=1.25
  • or optional command line argument --os-baremetal-api-version:
$ openstack baremetal port group list --os-baremetal-api-version 1.25

πŸ“š Command Reference πŸ“š

πŸ“š Command Reference πŸ“š

List of released CLI commands available in openstack client. These commands can be referenced by doing openstack help baremetal.

🧾 baremetal allocation 🧾

🧾 baremetal allocation create 🧾

Create a new baremetal allocation.

openstack baremetal allocation create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--resource-class RESOURCE_CLASS]
    [--trait TRAITS]
    [--candidate-node CANDIDATE_NODES]
    [--name NAME]
    [--uuid UUID]
    [--owner OWNER]
    [--extra <key=value>]
    [--wait [<time-out>]]
    [--node NODE]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --resource-class <RESOURCE_CLASS> β€” Resource class to request.
  • --trait <TRAITS> β€” A trait to request. Can be specified multiple times.
  • --candidate-node <CANDIDATE_NODES> β€” A candidate node for this allocation. Can be specified multiple times. If at least one is specified, only the provided candidate nodes are considered for the allocation.
  • --name <NAME> β€” Unique name of the allocation.
  • --uuid <UUID> β€” UUID of the allocation.
  • --owner <OWNER> β€” Owner of the allocation.
  • --extra <key=value> β€” Record arbitrary key/value metadata. Can be specified multiple times.
  • --wait <time-out> β€” Wait for the new allocation to become active. An error is returned if allocation fails and --wait is used. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely.
  • --node <NODE> β€” Backfill this allocation from the provided node that has already been deployed. Bypasses the normal allocation process.

This command is provided by the python-ironicclient plugin. πŸ’… (that's the plugin doing the heavy lifting, bestie β€” slay)

baremetal allocation delete

Unregister your baremetal allocation(s). Like, yeet them from existence. Gone. πŸ’€

openstack baremetal allocation delete <allocation> [<allocation> ...]
  • allocation β€” the Allocation(s) you wanna delete (name or UUID). You can pass a whole lil squad of them.

This command is provided by the python-ironicclient plugin. 🫢

baremetal allocation list

List out all the baremetal allocations. Window shopping, but for allocations πŸ‘‘

openstack baremetal allocation list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--limit <limit>]
    [--marker <allocation>]
    [--sort <key>[:<direction>]]
    [--node <node>]
    [--resource-class <resource_class>]
    [--state <state>]
    [--owner <owner>]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format you want, defaults to table
  • -c COLUMN, --column COLUMN β€” pick the column(s) to include; repeat it to show multiple columns
  • --quote <QUOTE_MODE> β€” controls when quotes get included, defaults to nonnumeric
  • --noindent β€” disables indenting the JSON (flat JSON energy)
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also set the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence (it wins, periodt)
  • --fit-width β€” fits the table to the display width. Implied if --max-width is greater than 0. Set the env var CLIFF_FIT_WIDTH=1 to always enable it
  • --print-empty β€” prints an empty table if there's honestly no data to show
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data by (columns listed first get priority, non-existing columns are just ignored, no drama), column names are case-insensitive and accept underscores for spaces, and you can repeat it
  • --sort-ascending β€” sorts the column(s) in ascending order
  • --sort-descending β€” sorts the column(s) in descending order
  • --limit <limit> β€” maximum number of allocations to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service
  • --marker <allocation> β€” an Allocation UUID (for example, of the last allocation in the list from a previous request). Returns the list of allocations after this UUID, like "continue from here" ✨
  • --sort <key>[:<direction>] β€” sort output by the specified allocation fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma
  • --node <node> β€” only list allocations of this node (name or UUID)
  • --resource-class <resource_class> β€” only list allocations with this resource class
  • --state <state> β€” only list allocations in this state
  • --owner <owner> β€” only list allocations with this owner
  • --long β€” show detailed information about the allocations (the full tea β˜•)
  • --fields <field> β€” one or more allocation fields. Only these fields will be fetched from the server. Can not be used when --long is specified (pick one, bestie)

This command is provided by the python-ironicclient plugin. πŸ’–

baremetal allocation set

Set baremetal allocation properties. Glow-up time ✨

openstack baremetal allocation set
    [--name <name>]
    [--extra <key=value>]
    <allocation>
  • --name <name> β€” sets the name of the allocation
  • --extra <key=value> β€” extra property to set on this allocation (repeat the option to set multiple extra properties)
  • allocation β€” name or UUID of the allocation

This command is provided by the python-ironicclient plugin. 🌸

baremetal allocation show

Show baremetal allocation details. The full dossier πŸ•΅οΈβ€β™€οΈ

openstack baremetal allocation show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <id>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” adds a prefix to all variable names
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence
  • --fit-width β€” fit the table to the display width. Implied if --max-width is greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print an empty table if there is no data to show
  • --fields <field> β€” one or more allocation fields. Only these fields will be fetched from the server
  • id β€” UUID or name of the allocation

This command is provided by the python-ironicclient plugin. πŸ¦‹

baremetal allocation unset

Unset baremetal allocation properties. Undo button, but make it CLI 🫠

openstack baremetal allocation unset
    [--name]
    [--extra <key>]
    <allocation>
  • --name β€” unset the name of the allocation
  • --extra <key> β€” extra property to unset on this baremetal allocation (repeat the option to unset multiple extra property).
  • allocation β€” name or UUID of the allocation

This command is provided by the python-ironicclient plugin. πŸ’œ

baremetal chassis


baremetal chassis create

Create a brand new chassis. Fresh out of the box 🎁

openstack baremetal chassis create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--description <description>]
    [--extra <key=value>]
    [--uuid <uuid>]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.
  • --description <description> β€” description for the chassis
  • --extra <key=value> β€” record arbitrary key/value metadata. Can be specified multiple times.
  • --uuid <uuid> β€” unique UUID of the chassis

This command is provided by the python-ironicclient plugin. ⭐

baremetal chassis delete

Delete a chassis. Byeee πŸ‘‹

openstack baremetal chassis delete <chassis> [<chassis> ...]
  • chassis β€” UUIDs of chassis to delete

This command is provided by the python-ironicclient plugin. πŸ”₯

baremetal chassis list

List the chassis. The whole lineup ✨

openstack baremetal chassis list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--fields <field> [<field> ...]]
    [--limit <limit>]
    [--long]
    [--marker <chassis>]
    [--sort <key>[:<direction>]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data by (columns specified first have priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • --fields <field> β€” one or more chassis fields. Only these fields will be fetched from the server. Cannot be used when --long is specified.
  • --limit <limit> β€” maximum number of chassis to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service.
  • --long β€” show detailed information about the chassis
  • --marker <chassis> β€” Chassis UUID (for example, of the last chassis in the list from a previous request). Returns the list of chassis after this UUID.
  • --sort <key>[:<direction>] β€” sort output by specified chassis fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma.

This command is provided by the python-ironicclient plugin. 🧚

baremetal chassis set

Set chassis properties. Tweaking era πŸ’…

openstack baremetal chassis set
    [--description <description>]
    [--extra <key=value>]
    <chassis>
  • --description <description> β€” set the description of the chassis
  • --extra <key=value> β€” extra to set on this chassis (repeat the option to set multiple extras)
  • chassis β€” UUID of the chassis

This command is provided by the python-ironicclient plugin. 🌈

baremetal chassis show

Show chassis details.

okay so continuing the chassis saga πŸ’… next up we have showing off one specific chassis, and honestly it's giving "let me see the receipts."

openstack baremetal chassis show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <chassis>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table. pick your aesthetic ✨
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns. stack 'em up, bestie.
  • --noindent β€” whether to disable indenting the JSON. no squish, just flat.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence. parameter's the main character here πŸ‘‘
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show. (yes, an empty table is still a serve.)
  • --fields <field> β€” One or more chassis fields. Only these fields will be fetched from the server.
  • chassis β€” UUID of the chassis.

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal chassis unset πŸ¦‹

Unset chassis properties. we're clearing the vibes, no cap.

openstack baremetal chassis unset
    [--description]
    [--extra <key>]
    <chassis>
  • --description β€” Clear the chassis description. bye bye, backstory πŸ’€
  • --extra <key> β€” Extra to unset on this chassis (repeat option to unset multiple extras). lowkey handy.
  • chassis β€” UUID of the chassis.

This command is provided by the python-ironicclient plugin.


🌈 baremetal conductor 🌈

the conductor era. so iconic. let's get into it 🫢

πŸŽ€ baremetal conductor list πŸŽ€

List baremetal conductors. it's literally giving roster.

openstack baremetal conductor list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--limit <limit>]
    [--marker <conductor>]
    [--sort <key>[:<direction>]]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated. so thorough, we love her πŸ’–
  • --sort-ascending β€” sort the column(s) in ascending order.
  • --sort-descending β€” sort the column(s) in descending order.
  • --limit <limit> β€” Maximum number of conductors to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service.
  • --marker <conductor> β€” Hostname of the conductor (for example, of the last conductor in the list from a previous request). Returns the list of conductors after this conductor.
  • --sort <key>[:<direction>] β€” Sort output by specified conductor fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma.
  • --long β€” Show detailed information about the conductors.
  • --fields <field> β€” One or more conductor fields. Only these fields will be fetched from the server. Can not be used when --long is specified. (so it's --long OR --fields, pick your fighter βš”οΈ)

This command is provided by the python-ironicclient plugin.

🌸 baremetal conductor show 🌸

Show baremetal conductor details. the deep dive, bestie 🫧

openstack baremetal conductor show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <conductor>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --fields <field> β€” One or more conductor fields. Only these fields will be fetched from the server.
  • conductor β€” Hostname of the conductor.

This command is provided by the python-ironicclient plugin.


⭐ baremetal create ⭐

⭐ baremetal create ⭐

(yes it's listed twice, and yes we're doing it twice, consistency queen πŸ’…)

Create resources from files. like a glow-up for your baremetal, from a file.

openstack baremetal create <file> [<file> ...]
  • file β€” File (.yaml or .json) containing descriptions of the resources to create. Can be specified multiple times. stack those files, babe ✨

This command is provided by the python-ironicclient plugin.


🧚 baremetal deploy template 🧚

deploy templates! reusable step recipes, lowkey iconic.

πŸ‘‘ baremetal deploy template create πŸ‘‘

Create a new deploy template. fresh out the oven πŸ“

openstack baremetal deploy template create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--uuid <uuid>]
    [--extra <key=value>]
    --steps <steps>
    <name>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --uuid <uuid> β€” UUID of the deploy template.
  • --extra <key=value> β€” Record arbitrary key/value metadata. Can be specified multiple times. (extra, extra, read all about it πŸ“£)
  • --steps <steps> β€” The deploy steps. May be the path to a YAML file containing the deploy steps; OR '-', with the deploy steps being read from standard input; OR a JSON string. The value should be a list of deploy-step dictionaries; each dictionary should have keys 'interface', 'step', 'args' and 'priority'. three input modes, main character energy fr fr.
  • name β€” Unique name for this deploy template. Must be a valid trait name.

This command is provided by the python-ironicclient plugin.

πŸ’€ baremetal deploy template delete πŸ’€

Delete deploy template(s). we're unaliving them, respectfully πŸ™ˆ

openstack baremetal deploy template delete <template> [<template> ...]
  • template β€” Name(s) or UUID(s) of the deploy template(s) to delete.

This command is provided by the python-ironicclient plugin.

πŸ”₯ baremetal deploy template list πŸ”₯

List baremetal deploy templates. the whole collection, curated ✨

openstack baremetal deploy template list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--limit <limit>]
    [--marker <template>]
    [--sort <key>[:<direction>]]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated.
  • --sort-ascending β€” sort the column(s) in ascending order.
  • --sort-descending β€” sort the column(s) in descending order.
  • --limit <limit> β€” Maximum number of deploy templates to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service.
  • --marker <template> β€” DeployTemplate UUID (for example, of the last deploy template in the list from a previous request). Returns the list of deploy templates after this UUID.
  • --sort <key>[:<direction>] β€” Sort output by specified deploy template fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma.
  • --long β€” Show detailed information about deploy templates.
  • --fields <field> β€” one or more deploy template fields, bestie πŸ’… only these fields get fetched from the server. And no, you literally can't use this when --long is also on the command β€” they do not coexist, periodt.

This command is provided by the python-ironicclient plugin.

πŸŽ€ baremetal deploy template set πŸŽ€

Set baremetal deploy template properties. Glow-up szn for your template ✨

openstack baremetal deploy template set
    [--name <name>]
    [--steps <steps>]
    [--extra <key=value>]
    <template>
  • --name <name> β€” sets the unique name of the deploy template. It has to be a valid trait name (<red>don't try to be cute with it, the server will not be charmed).
  • --steps <steps> β€” the deploy steps themselves. You can hand it over three ways, pick your fighter: the path to a YAML file that holds the deploy steps; OR -, which means the deploy steps get read from standard input; OR a JSON string, right there in the command. The value should be a list of deploy-step dictionaries, and each dictionary should have the keys 'interface', 'step', 'args' and 'priority'. iykyk 🫢
  • --extra <key=value> β€” extra to set on this baremetal deploy template. Repeat the option to set multiple extras β€” go off πŸ’–

template β€” name or UUID of the deploy template.

This command is provided by the python-ironicclient plugin.


🌸 baremetal deploy template show 🌸

Show baremetal deploy template details. The vibe check for your template πŸ‘‘

openstack baremetal deploy template show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <template>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format. Defaults to table. πŸŽ€
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include. Repeat it to show multiple columns, iconic behaviour fr.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” adds a prefix to all variable names.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence β€” it's giving main character energy over the env var πŸ’…
  • --fit-width β€” fit the table to the display width. Implied if --max-width is greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable it ⭐
  • --print-empty β€” print an empty table if there's no data to show. Empty but make it fashion.
  • --fields <field> β€” one or more deploy template fields. Only these fields get fetched from the server.

template β€” name or UUID of the deploy template.

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal deploy template unset πŸ¦‹

Unset baremetal deploy template properties. Undo button, but make it CLI 😭

openstack baremetal deploy template unset [--extra <key>] <template>
  • --extra <key> β€” extra to unset on this baremetal deploy template. Repeat the option to unset multiple extras πŸ’œ

template β€” name or UUID of the deploy template.

This command is provided by the python-ironicclient plugin.


πŸ‘‘ baremetal driver πŸ‘‘

The driver fam lives here β€” everything driver-related is right below, bestie πŸ’–


✨ baremetal driver list ✨

List the enabled drivers. The roster, if you will 🫢

openstack baremetal driver list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--type <type>]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width is greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data. Columns specified first have priority, and non-existing columns are just ignored (we don't see them πŸ‘€). Column names are case-insensitive and accept underscores for spaces. Can be repeated.
  • --sort-ascending β€” sort the column(s) in ascending order ⬆️
  • --sort-descending β€” sort the column(s) in descending order ⬇️
  • --type <type> β€” type of driver ("classic" or "dynamic"). The default is to list all of them, no favourites πŸ’…
  • --long β€” show detailed information about the drivers.
  • --fields <field> β€” one or more node fields. Only these fields get fetched from the server. Can not be used when --long is specified (they're mutually exclusive, sorry bestie).

This command is provided by the python-ironicclient plugin.


πŸ”₯ baremetal driver passthru call πŸ”₯

Call a vendor passthru method for a driver. Poking the driver directly, we love to see it πŸ’€

openstack baremetal driver passthru call
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--arg <key=value>]
    [--http-method <http-method>]
    <driver>
    <method>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print empty table if there is no data to show.
  • --arg <key=value> β€” argument to pass to the passthru method. Repeat the option to specify multiple arguments πŸŽ€
  • --http-method <http-method> β€” the HTTP method to use in the passthru request. One of DELETE, GET, PATCH, POST, PUT. Defaults to 'POST'.

driver β€” name of the driver.

method β€” vendor passthru method to be called.

This command is provided by the python-ironicclient plugin.


πŸ’œ baremetal driver passthru list πŸ’œ

List available vendor passthru methods for a driver. Showing you the whole menu πŸ“

openstack baremetal driver passthru list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <driver>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored). Column names are case-insensitive and accept underscores for spaces. Can be repeated.
  • --sort-ascending β€” sort the column(s) in ascending order.
  • --sort-descending β€” sort the column(s) in descending order.

driver β€” name of the driver.

This command is provided by the python-ironicclient plugin.


🧚 baremetal driver property list 🧚

List the driver properties. All the little settings that make your driver, your driver πŸ’…

openstack baremetal driver property list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <driver>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored). Column names are case-insensitive and accept underscores for spaces. Can be repeated.
  • --sort-ascending β€” sort the column(s) in ascending order.
  • --sort-descending β€” sort the column(s) in descending order.

driver β€” name of the driver.

This command is provided by the python-ironicclient plugin.


🌈 baremetal driver raid property list 🌈

List a driver's RAID logical disk properties. Yes, RAID β€” we're being fancy now πŸ’–

openstack baremetal driver raid property list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <driver>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” pick which column(s) you wanna include, and yeah you can repeat it to show multiple columns πŸ’…
  • --quote <QUOTE_MODE> β€” controls when quotes get included, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence ✨
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order

driver β€” Name of the driver.

This command is provided by the python-ironicclient plugin. 🫢


baremetal driver show

Show information about a driver. Like, the whole lil profile bestie πŸ’–

openstack baremetal driver show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <driver>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --fields <field> β€” One or more node fields. Only these fields will be fetched from the server.

driver β€” Name of the driver.

This command is provided by the python-ironicclient plugin. πŸ¦‹


baremetal node


baremetal node abort

Set provision state of baremetal node to 'abort'. It's giving emergency brake energy 😭

openstack baremetal node abort <node> [<node> ...]

node β€” Names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin. πŸ’€


baremetal node add trait

Add traits to a node. Glow-up time, no cap ✨

openstack baremetal node add trait <node> <trait> [<trait> ...]

node β€” Name or UUID of the node

trait β€” Trait(s) to add

This command is provided by the python-ironicclient plugin. πŸŽ€


baremetal node adopt

Set provision state of baremetal node to 'adopt'. Basically claiming it as your own, main character move πŸ‘‘

openstack baremetal node adopt
    [--wait [<time-out>]]
    <node>
    [<node> ...]
  • --wait <time-out> β€” Wait for a node to reach the desired state, active. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely.

node β€” Names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin. πŸ’œ


baremetal node bios setting list

List a node's BIOS settings. The receipts, basically πŸ“‹

openstack baremetal node bios setting list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--long | --fields <field> [<field> ...]]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • --long β€” Show detailed information about the BIOS settings. The full lore πŸ“
  • --fields <field> β€” One or more node fields. Only these fields will be fetched from the server. Can not be used when '--long' is specified.

node β€” Name or UUID of the node

This command is provided by the python-ironicclient plugin. ⭐


baremetal node bios setting show

Show a specific BIOS setting for a node. Zooming in on one (1) detail πŸ”

openstack baremetal node bios setting show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    <node>
    <setting name>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.

node β€” Name or UUID of the node

setting name β€” Setting name to show

This command is provided by the python-ironicclient plugin. 🌸


baremetal node boot device set

Set the boot device for a node. Choosing where it wakes up, literally πŸ₯Ύ

openstack baremetal node boot device set
    [--persistent]
    <node>
    [<node> ...]
    <device>
  • --persistent β€” Make changes persistent for all future boots

node β€” Names or UUID's of the nodes

device β€” One of bios, cdrom, disk, pxe, safe, wanboot

This command is provided by the python-ironicclient plugin. πŸ”₯


baremetal node boot device show

Show the boot device information for a node. Receipts on where it boots from πŸ“Έ

openstack baremetal node boot device show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--supported]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --supported β€” Show the supported boot devices

node β€” Name or UUID of the node

This command is provided by the python-ironicclient plugin. 🌈


baremetal node boot mode set

Set the boot mode for the next baremetal node deployment πŸš€

openstack baremetal node boot mode set <node> [<node> ...] <boot_mode>

node β€” Names or UUID's of the nodes.

boot_mode β€” The boot mode to set for node (uefi/bios)

This command is provided by the python-ironicclient plugin. 🧚


baremetal node children list

Get a list of nodes associated as children. Found family fr fr 🫢

openstack baremetal node children list
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.

node β€” Name or UUID of the node.

This command is provided by the python-ironicclient plugin. πŸ’œ


baremetal node clean

Set provision state of baremetal node to 'clean'. Self-care era 🧼✨

openstack baremetal node clean
    [--wait [<time-out>]]
    (--clean-steps <clean-steps> | --runbook <runbook>)
    [--disable-ramdisk]
    <node>
    [<node> ...]
  • --wait <time-out> β€” Wait for a node to reach the desired state, manageable. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely.
  • --clean-steps <clean-steps> β€” the actual clean steps, bestie. It can be a path to a YAML file holding them; OR - and they get read in from standard input; OR just a JSON string right there in the command. Whatever you give it should be a list of clean-step dictionaries β€” each one needs keys 'interface' and 'step', plus an optional 'args' key. 🧼
  • --runbook <runbook> β€” the identifier of a predefined runbook to use for cleaning. Like, the easy mode option instead of hand-writing steps, iykyk.
  • --disable-ramdisk β€” ironic-python-agent will not be booted for cleaning. Heads up: with this set, only steps explicitly marked as not requiring ironic-python-agent can be executed. No ramdisk, no ramdisk steps, periodt. πŸ’€
  • node β€” names or UUID's of the nodes.

Lowkey every one of these commands is served to you by the python-ironicclient plugin. 🫢


πŸ–₯️ baremetal node console disable

Disable console access for a node. Sorry bestie, no console for you. πŸ™ˆ

openstack baremetal node console disable <node> [<node> ...]
  • node β€” names or UUID's of the nodes

This command is provided by the python-ironicclient plugin.


✨ baremetal node console enable

Enable console access for a node. We're so back. πŸ‘‘

openstack baremetal node console enable <node> [<node> ...]
  • node β€” names or UUID's of the nodes

This command is provided by the python-ironicclient plugin.


πŸŽ€ baremetal node console show

Show console information for a node. The main character of console commands, honestly.

openstack baremetal node console show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.
  • node β€” name or UUID of the node

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal node create

Register a new node with the baremetal service. This is the big one, the icon, the moment. So many flags. Buckle up. 🎒

openstack baremetal node create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--chassis-uuid <chassis>]
    --driver <driver>
    [--driver-info <key=value>]
    [--property <key=value>]
    [--extra <key=value>]
    [--uuid <uuid>]
    [--name <name>]
    [--instance-name <instance_name>]
    [--bios-interface <bios_interface>]
    [--boot-interface <boot_interface>]
    [--console-interface <console_interface>]
    [--deploy-interface <deploy_interface>]
    [--inspect-interface <inspect_interface>]
    [--management-interface <management_interface>]
    [--network-data <network data>]
    [--network-interface <network_interface>]
    [--power-interface <power_interface>]
    [--raid-interface <raid_interface>]
    [--rescue-interface <rescue_interface>]
    [--storage-interface <storage_interface>]
    [--vendor-interface <vendor_interface>]
    [--resource-class <resource_class>]
    [--conductor-group <conductor_group>]
    [--automated-clean | --no-automated-clean]
    [--owner <owner>]
    [--lessee <lessee>]
    [--description <description>]
    [--shard <shard>]
    [--parent-node <parent_node>]
    [--firmware-interface <firmware_interface>]
    [--disable-power-off]

output-ish flags first πŸ’…

  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.

now the actual node stuff 🌸

  • --chassis-uuid <chassis> β€” UUID of the chassis that this node belongs to.
  • --driver <driver> β€” driver used to control the node [REQUIRED]. Like, you literally cannot skip this one, bestie. Non-negotiable.
  • --driver-info <key=value> β€” key/value pair used by the driver, such as out-of-band management credentials. Can be specified multiple times.
  • --property <key=value> β€” key/value pair describing the physical characteristics of the node. This is exported to Nova and used by the scheduler. Can be specified multiple times.
  • --extra <key=value> β€” record arbitrary key/value metadata. Can be specified multiple times.
  • --uuid <uuid> β€” unique UUID for the node.
  • --name <name> β€” unique name for the node.
  • --instance-name <instance_name> β€” name of the instance deployed on this node.
  • --bios-interface <bios_interface> β€” BIOS interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --boot-interface <boot_interface> β€” boot interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --console-interface <console_interface> β€” console interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --deploy-interface <deploy_interface> β€” deploy interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --inspect-interface <inspect_interface> β€” inspect interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --management-interface <management_interface> β€” management interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --network-data <network data> β€” JSON string, or a YAML file, or - for stdin, to read static network configuration for the baremetal node associated with this ironic node. The format of this file should comply with Nova network data metadata (network_data.json). Depending on ironic boot interface capabilities being used, network configuration may or may not been served to the node for offline network configuration. πŸ‘€ (yes, that's the original wording energy β€” read it twice and you'll get the vibe)
  • --network-interface <network_interface> β€” network interface used for switching node to cleaning/provisioning networks.
  • --power-interface <power_interface> β€” power interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --raid-interface <raid_interface> β€” RAID interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --rescue-interface <rescue_interface> β€” rescue interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --storage-interface <storage_interface> β€” storage interface used by the node's driver.
  • --vendor-interface <vendor_interface> β€” vendor interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --resource-class <resource_class> β€” resource class for mapping nodes to Nova flavors
  • --conductor-group <conductor_group> β€” conductor group the node will belong to
  • --automated-clean β€” enable automated cleaning for the node
  • --no-automated-clean β€” explicitly disable automated cleaning for the node
  • --owner <owner> β€” owner of the node.
  • --lessee <lessee> β€” lessee of the node.
  • --description <description> β€” description for the node.
  • --shard <shard> β€” shard for the node.
  • --parent-node <parent_node> β€” parent node for the node being created.
  • --firmware-interface <firmware_interface> β€” firmware interface used by the node's driver. This is only applicable when the specified --driver is a hardware type.
  • --disable-power-off β€” explicitly disable power off actions on the node

This command is provided by the python-ironicclient plugin.

Fr fr though, notice how literally every *interface flag has the same "only applicable when the specified --driver is a hardware type" caveat? That's not a typo on my end, that's just how it is. Hardware type driver = interfaces apply. πŸ’…

πŸ’€ baremetal node delete

Unregister baremetal node(s). It's giving "block and delete", but for servers.

openstack baremetal node delete <node> [<node> ...]
  • node β€” node(s) to delete (name or UUID)

This command is provided by the python-ironicclient plugin.

Careful bestie β€” there's no undo button on this one. Deletion is deletion. 😭

πŸ”₯ baremetal node deploy

Set provision state of baremetal node to 'deploy'. Time to make it real. πŸš€

openstack baremetal node deploy
    [--wait [<time-out>]]
    [--config-drive <config-drive>]
    [--deploy-steps <deploy-steps>]
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, active. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely. So like, forever. Bestie will be here a while if you don't set a number. ⏳
  • --config-drive <config-drive> β€” a gzipped, base64-encoded configuration drive string OR the path to the configuration drive file OR the path to a directory containing the config drive files OR a JSON object to build config drive from OR the path to the JSON file. In case it's a directory, a config drive will be generated from it. In case it's a JSON object with optional keys meta_data, user_data and network_data or a JSON file, a config drive will be generated on the server side (see the bare metal API reference for more details). Okay so that's five different things it can be β€” pick your fighter. πŸ₯Š
  • --deploy-steps <deploy-steps> β€” the deploy steps. May be the path to a YAML file containing the deploy steps; OR -, with the deploy steps being read from standard input; OR a JSON string. The value should be a list of deploy-step dictionaries; each dictionary should have keys 'interface' and 'step', and optional key 'args'.
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

🌸 baremetal node firmware list

Bestie, this one lists, like, all the Firmware Components of a node. Every single one. No crumbs left. ✨

openstack baremetal node firmware list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table πŸ’…
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, and fr fr you can repeat it to show multiple columns πŸŽ€
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence πŸ‘‘
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order

node β€” Name or UUID of the node πŸ¦‹

This command is provided by the python-ironicclient plugin.

🫢 baremetal node history get

Get history event for a baremetal node. One (1) event. Singular. We're being specific today. πŸ’–

openstack baremetal node history get
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    <node>
    <event>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns ✨
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.

node β€” Name or UUID of the node. 🌸

event β€” UUID of the event. 🌸

This command is provided by the python-ironicclient plugin.

🧚 baremetal node history list

Get history events for a baremetal node β€” plural this time, we're getting the whole lore. 😭

openstack baremetal node history list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--long]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence πŸ’œ
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • --long β€” Show detailed information about the node history events. πŸ”₯

node β€” Name or UUID of the node.

This command is provided by the python-ironicclient plugin.

πŸ’€ baremetal node inject nmi

Inject NMI to baremetal node. That's it. That's the whole vibe. No flags, no extra credit, just inject. 🫢

openstack baremetal node inject nmi <node> [<node> ...]

node β€” Names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

πŸŽ€ baremetal node inspect

Set provision state of baremetal node to 'inspect'. Lowkey iconic behaviour tbh.

openstack baremetal node inspect
    [--wait [<time-out>]]
    <node>
    [<node> ...]
  • --wait <time-out> β€” Wait for a node to reach the desired state, manageable. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely. ⏳ (yes bestie, indefinitely β€” it will simply sit there. forever. patiently.)

node β€” Names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

🌈 baremetal node inventory save

Get hardware inventory of a node (in JSON format) or save it to file. Your call, main character. ✨

openstack baremetal node inventory save [--file <filename>] <node>
  • --file <filename> β€” Save inspection data to file with name (default: stdout).

node β€” Name or UUID of the node

This command is provided by the python-ironicclient plugin.

πŸ‘‘ baremetal node list

List baremetal nodes. The big one. The whole friend group in one table. πŸ’…

openstack baremetal node list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--limit <limit>]
    [--marker <node>]
    [--sort <key>[:<direction>]]
    [--maintenance | --no-maintenance]
    [--retired | --no-retired]
    [--fault <fault>]
    [--associated | --unassociated]
    [--provision-state <provision state>]
    [--driver <driver>]
    [--resource-class <resource class>]
    [--conductor-group <conductor_group>]
    [--conductor <conductor>]
    [--chassis <chassis UUID>]
    [--owner <owner>]
    [--lessee <lessee>]
    [--description-contains <description_contains>]
    [--instance-name <instance_name>]
    [--sharded | --unsharded]
    [--shards <shards> [<shards> ...]]
    [--long | --fields <field> [<field> ...]]
    [--include-children | --parent-node <parent_node>]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • --limit <limit> β€” Maximum number of nodes to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service.
  • --marker <node> β€” Node UUID (for example, of the last node in the list from a previous request). Returns the list of nodes after this UUID. πŸ“
  • --sort <key>[:<direction>] β€” Sort output by specified node fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma.
  • --maintenance β€” Limit list to nodes in maintenance mode πŸ”§
  • --no-maintenance β€” Limit list to nodes not in maintenance mode
  • --retired β€” Limit list to retired nodes.
  • --no-retired β€” Limit list to not retired nodes.
  • --fault <fault> β€” List nodes in specified fault.
  • --associated β€” List only nodes associated with an instance.
  • --unassociated β€” List only nodes not associated with an instance.
  • --provision-state <provision state> β€” List nodes in specified provision state.
  • --driver <driver> β€” Limit list to nodes with driver <driver>
  • --resource-class <resource class> β€” Limit list to nodes with resource class <resource class>
  • --conductor-group <conductor_group> β€” Limit list to nodes with conductor group <conductor group>
  • --conductor <conductor> β€” Limit list to nodes with conductor <conductor>
  • --chassis <chassis UUID> β€” Limit list to nodes of this chassis
  • --owner <owner> β€” Limit list to nodes with owner <owner>
  • --lessee <lessee> β€” Limit list to nodes with lessee <lessee>
  • --description-contains <description_contains> β€” Limit list to nodes with description contains <description_contains> πŸ“
  • --instance-name <instance_name> β€” Filter the list of returned nodes by an instance name.
  • --sharded β€” List only nodes that are sharded.
  • --unsharded β€” List only nodes that are not sharded.
  • --shards <shards> β€” List only nodes that are in shards <shards>.
  • --long β€” Show detailed information about the nodes. πŸ”₯
  • --fields <field> β€” One or more node fields. Only these fields will be fetched from the server. Can not be used when '--long' is specified. ⚠️ (like, genuinely can't β€” pick a lane bestie)
  • --include-children β€” Include children in the node list.
  • --parent-node <parent_node> β€” only list the nodes that are tied to a parent node 🫢

This command is provided by the python-ironicclient plugin.

baremetal node maintenance set

Okay so this one puts your baremetal node into maintenance mode β€” like, it's benched, do not touch πŸ”§

openstack baremetal node maintenance set
    [--reason <reason>]
    <node>
    [<node> ...]
  • --reason <reason> β€” the reason you're slapping it into maintenance mode, bestie. Say why!
  • node β€” names or UUID's of the nodes. Yes, plural, you can do a whole squad.

This command is provided by the python-ironicclient plugin.

baremetal node maintenance unset

And this is the glow-up: yanking that node back out of maintenance mode ✨

openstack baremetal node maintenance unset <node> [<node> ...]
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node manage

Flips the provision state of your baremetal node to 'manage' β€” very demure, very "I'm in control now" πŸ’…

openstack baremetal node manage
    [--wait [<time-out>]]
    <node>
    [<node> ...]
  • --wait <time-out> β€” literally waits for a node to reach the desired state, manageable. You can optionally hand it a timeout value (in seconds). Default is 0, which means it waits indefinitely β€” no cap, it's committed 😭
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node passthru call

Calls a vendor passthru method for a node. Very "let me speak to the vendor directly" energy πŸ“ž

openstack baremetal node passthru call
    [--arg <key=value>]
    [--http-method <http-method>]
    <node>
    <method>
  • --arg <key=value> β€” an argument to pass to the passthru method. Repeat the option to specify multiple arguments, bestie, stack 'em πŸŽ€
  • --http-method <http-method> β€” the HTTP method to use in the passthru request. One of DELETE, GET, PATCH, POST, PUT. Defaults to POST.
  • node β€” name or UUID of the node.
  • method β€” vendor passthru method to be executed.

This command is provided by the python-ironicclient plugin.

baremetal node passthru list

Lists all the vendor passthru methods a node has. Window shopping, basically πŸ›οΈ

openstack baremetal node passthru list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include. Can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence. Heads up, the flag wins πŸ‘‘
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored). Column names are case-insensitive and accept underscores for spaces. Can be repeated.
  • --sort-ascending β€” sort the column(s) in ascending order.
  • --sort-descending β€” sort the column(s) in descending order.
  • node β€” name or UUID of the node.

This command is provided by the python-ironicclient plugin.

baremetal node power off

Powers a node off. Bye bestie πŸ‘‹πŸ’€

openstack baremetal node power off
    [--power-timeout <power-timeout>]
    [--soft]
    <node>
    [<node> ...]
  • --power-timeout <power-timeout> β€” timeout (in seconds, positive integer) to wait for the target power state before erroring out.
  • --soft β€” request graceful power-off. Polite! πŸŽ€
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node power on

Powers a node on. Wake up, main character energy ⚑

openstack baremetal node power on
    [--power-timeout <power-timeout>]
    <node>
    [<node> ...]
  • --power-timeout <power-timeout> β€” timeout (in seconds, positive integer) to wait for the target power state before erroring out.
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node provide

Sets the provision state of your baremetal node to 'provide' β€” handing it back out into the world 🌈

openstack baremetal node provide
    [--wait [<time-out>]]
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, available. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely. Down bad, no limits 😭
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node reboot

Reboots a baremetal node. The classic "have you tried turning it off and on again" πŸ”„

openstack baremetal node reboot
    [--soft]
    [--power-timeout <power-timeout>]
    <node>
    [<node> ...]
  • --soft β€” request Graceful reboot.
  • --power-timeout <power-timeout> β€” timeout (in seconds, positive integer) to wait for the target power state before erroring out.
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node rebuild

Sets the provision state of a baremetal node to 'rebuild'. Fresh start, new me πŸ¦‹

openstack baremetal node rebuild
    [--wait [<time-out>]]
    [--config-drive <config-drive>]
    [--deploy-steps <deploy-steps>]
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, active. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely.
  • --config-drive <config-drive> β€” okay so this is a lot, stay with me 🫢 it's a gzipped, base64-encoded configuration drive string OR the path to the configuration drive file OR the path to a directory containing the config drive files OR a JSON object to build config drive from OR the path to the JSON file. In case it's a directory, a config drive will be generated from it. In case it's a JSON object with optional keys meta_data, user_data and network_data or a JSON file, a config drive will be generated on the server side (see the bare metal API reference for more details).
  • --deploy-steps <deploy-steps> β€” the deploy steps in JSON format. May be the path to a file containing the deploy steps; OR '-', with the deploy steps being read from standard input; OR a string. The value should be a list of deploy-step dictionaries; each dictionary should have keys 'interface', 'step', 'priority' and optional key 'args'.
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node remove trait

Removes trait(s) from a node. Marie Kondo-ing that node's vibes 🧹✨

openstack baremetal node remove trait [--all] <node> [<trait> ...]
  • --all β€” remove all traits. All of them. No survivors πŸ’€
  • node β€” name or UUID of the node.
  • trait β€” trait(s) to remove.

This command is provided by the python-ironicclient plugin.

baremetal node rescue

Sets the provision state of a baremetal node to 'rescue' β€” it's giving lifeguard on duty πŸ›Ÿ

openstack baremetal node rescue
    [--wait [<time-out>]]
    --rescue-password <rescue-password>
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, rescue. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely.
  • --rescue-password <rescue-password> β€” the password that will be used to login to the rescue ramdisk. The value should be a non-empty string. Don't leave it blank, bestie πŸ™ˆ
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node secure boot off

Turns secure boot off πŸ”“

openstack baremetal node secure boot off <node> [<node> ...]
  • node β€” name or UUID of the node.

This command is provided by the python-ironicclient plugin.

baremetal node secure boot on

Turns secure boot on πŸ”

openstack baremetal node secure boot on <node> [<node> ...]
  • node β€” name or UUID of the node.

This command is provided by the python-ironicclient plugin.

baremetal node service

Sets the provision state of a baremetal node to 'service' β€” the node is literally at your service πŸ’…

openstack baremetal node service
    [--wait [<time-out>]]
    (--service-steps <service-steps> | --runbook <runbook>)
    [--disable-ramdisk]
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, active. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely.
  • --service-steps <service-steps> β€” the service steps. May be the path to a YAML file containing the service steps; OR '-', with the service steps being read from standard input; OR a JSON string. The value should be a list of service-step dictionaries; each dictionary should have keys 'interface' and 'step', and optional key 'args'.
  • --runbook <runbook> β€” the identifier of a predefined runbook to use for servicing.
  • --disable-ramdisk β€” ironic-python-agent will not be booted for cleaning. Only steps explicitly marked as not requiring ironic-python-agent can be executed with this set. Read that twice, fr fr πŸ™
  • node β€” names or UUID's of the nodes.

This command is provided by the python-ironicclient plugin.

baremetal node set

Set baremetal properties

openstack baremetal node set
    [--instance-uuid <uuid>]
    [--instance-name <instance_name>]
    [--name <name>]
    [--chassis-uuid <chassis UUID>]
    [--driver <driver>]
    [--bios-interface <bios_interface> | --reset-bios-interface]
    [--boot-interface <boot_interface> | --reset-boot-interface]
    [--console-interface <console_interface> | --reset-console-interface]
    [--deploy-interface <deploy_interface> | --reset-deploy-interface]
    [--firmware-interface <firmware_interface> | --reset-firmware-interface]
    [--inspect-interface <inspect_interface> | --reset-inspect-interface]
    [--management-interface <management_interface> | --reset-management-interface]
    [--network-interface <network_interface> | --reset-network-interface]
    [--network-data <network data>]
    [--power-interface <power_interface> | --reset-power-interface]
    [--raid-interface <raid_interface> | --reset-raid-interface]
    [--rescue-interface <rescue_interface> | --reset-rescue-interface]
    [--storage-interface <storage_interface> | --reset-storage-interface]
    [--vendor-interface <vendor_interface> | --reset-vendor-interface]
    [--reset-interfaces]
    [--resource-class <resource_class>]
    [--conductor-group <conductor_group>]
    [--automated-clean | --no-automated-clean]
    [--protected]
    [--protected-reason <protected_reason>]
    [--retired]
    [--retired-reason <retired_reason>]
    [--target-raid-config <target_raid_config>]
    [--property <key=value>]
    [--extra <key=value>]
    [--driver-info <key=value>]
    [--instance-info <key=value>]
    [--owner <owner>]
    [--lessee <lessee>]
    [--description <description>]
    [--shard <shard>]
    [--parent-node <parent_node>]
    [--enable-power-off | --disable-power-off]
    <node>
    [<node> ...]
  • --instance-uuid <uuid> β€” sets the node's instance UUID to <uuid>, bestie. Slap a UUID on it.
  • --instance-name <instance_name> β€” sets the name of the instance that's deployed on this node.
  • --name <name> β€” renames the node to <name>. Glow-up, but for hostnames ✨
  • --chassis-uuid <chassis UUID> β€” puts the node in a different chassis. Real "moving in with a new roommate" energy.
  • --driver <driver> β€” sets the driver for the node.
  • --bios-interface <bios_interface> β€” sets the BIOS interface. Very demure, very firmware.
  • --reset-bios-interface β€” nukes the BIOS interface back to its hardware type default. Iconic reset behavior πŸ’…
  • --boot-interface <boot_interface> β€” sets the boot interface.
  • --reset-boot-interface β€” puts the boot interface back to its hardware type default.
  • --console-interface <console_interface> β€” sets the console interface.
  • --reset-console-interface β€” console interface β†’ hardware type default. Poof.
  • --deploy-interface <deploy_interface> β€” sets the deploy interface.
  • --reset-deploy-interface β€” deploy interface back to its hardware type default, no cap.
  • --firmware-interface <firmware_interface> β€” sets the firmware interface.
  • --reset-firmware-interface β€” resets the firmware interface for its hardware type default. (Yes, the original says "for", we're not fixing it, we're respecting it 🫢)
  • --inspect-interface <inspect_interface> β€” sets the inspect interface.
  • --reset-inspect-interface β€” inspect interface back to hardware type default.
  • --management-interface <management_interface> β€” sets the management interface.
  • --reset-management-interface β€” management interface back to hardware type default.
  • --network-interface <network_interface> β€” sets the network interface.
  • --reset-network-interface β€” network interface back to hardware type default.
  • --network-data <network data> β€” okay so this one's a whole thing 😭 you give it a JSON string, OR a YAML file, OR - to read from stdin, and it reads static network configuration for the baremetal node associated with this ironic node. The format of this file should comply with Nova network data metadata (network_data.json). And here's the tea: depending on which ironic boot interface capabilities are being used, the network configuration may or may not have been served to the node for offline network configuration. It's giving "it depends" and we respect that.
  • --power-interface <power_interface> β€” sets the power interface.
  • --reset-power-interface β€” power interface back to hardware type default ⚑
  • --raid-interface <raid_interface> β€” sets the RAID interface.
  • --reset-raid-interface β€” RAID interface back to hardware type default.
  • --rescue-interface <rescue_interface> β€” sets the rescue interface.
  • --reset-rescue-interface β€” rescue interface back to hardware type default. Rescuing the rescuers.
  • --storage-interface <storage_interface> β€” sets the storage interface.
  • --reset-storage-interface β€” storage interface back to hardware type default.
  • --vendor-interface <vendor_interface> β€” sets the vendor interface.
  • --reset-vendor-interface β€” vendor interface back to hardware type default.
  • --reset-interfaces β€” resets all interfaces that you didn't explicitly specify back to their default implementations. Heads up bestie: this one is only valid with --driver. No driver, no dice.
  • --resource-class <resource_class> β€” sets the resource class. Main character label energy πŸ‘‘
  • --conductor-group <conductor_group> β€” sets the conductor group for the node.
  • --automated-clean β€” enables automated cleaning for the node 🧼
  • --no-automated-clean β€” explicitly disables automated cleaning for the node. Like, you really mean it.
  • --protected β€” marks the node as protected. Hands off, she's guarded πŸ™ˆ
  • --protected-reason <protected_reason> β€” sets the reason for marking the node as protected. Gotta cite your sources.
  • --retired β€” marks the node as retired. She's living her retired life now.
  • --retired-reason <retired_reason> β€” sets the reason for marking the node as retired.
  • --target-raid-config <target_raid_config> β€” sets the target RAID configuration (JSON) for the node. And it can be one of: 1. a file containing YAML data of the RAID configuration; 2. - to read the contents from standard input; or 3. a valid JSON string. Three flavors, pick your fighter.
  • --property <key=value> β€” a property to set on this baremetal node (repeat the option to set multiple properties).
  • --extra <key=value> β€” an extra to set on this baremetal node (repeat the option to set multiple extras).
  • --driver-info <key=value> β€” driver information to set on this baremetal node (repeat the option to set multiple driver infos).
  • --instance-info <key=value> β€” instance information to set on this baremetal node (repeat the option to set multiple instance infos).
  • --owner <owner> β€” sets the owner for the node.
  • --lessee <lessee> β€” sets the lessee for the node.
  • --description <description> β€” sets the description for the node. Give her a little bio ✍️
  • --shard <shard> β€” sets the shard for the node.
  • --parent-node <parent_node> β€” sets the parent node for the node. Family tree but make it infrastructure 🌳
  • --enable-power-off β€” explicitly enables power off actions on nodes.
  • --disable-power-off β€” explicitly disables power off actions on nodes.
  • node β€” names or UUID's of the nodes. Yep, plural allowed, you can pass a whole squad.

This command is provided by the python-ironicclient plugin.


πŸŽ€ baremetal node show πŸŽ€

Shows baremetal node details. The reveal. The moment. ⭐

openstack baremetal node show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--instance]
    [--fields <field> [<field> ...]]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence. (Parameter wins, always πŸ’…)
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print an empty table if there is no data to show. At least the table ate, even if it's empty.
  • --instance β€” treats <node> as an instance UUID. Plot twist.
  • --fields <field> β€” one or more node fields. Only these fields will be fetched from the server. Selective, and honestly valid.
  • node β€” name or UUID of the node (or instance UUID if --instance is specified).

This command is provided by the python-ironicclient plugin.


🌸 baremetal node trait add 🌸

Adds traits to a node. Little personality tags 🏷️✨

openstack baremetal node trait add <node> <trait> [<trait> ...]
  • node β€” name or UUID of the node.
  • trait β€” trait(s) to add. Bring a whole list, she can hold them.

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal node trait list πŸ¦‹

Lists a node's traits. A full personality read πŸ’œ

openstack baremetal node trait list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” print an empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated. So forgiving, we love her.
  • --sort-ascending β€” sort the column(s) in ascending order.
  • --sort-descending β€” sort the column(s) in descending order.
  • node β€” name or UUID of the node.

This command is provided by the python-ironicclient plugin.

πŸŽ€ baremetal node trait remove

Bye-bye traits! Pull one (or a whole bunch) off a node.

openstack baremetal node trait remove [--all] <node> [<trait> ...]
  • --all β€” remove all the traits, like, every single one πŸ’…
  • node β€” name or UUID of the node
  • trait β€” the trait(s) you wanna remove

This command is provided by the python-ironicclient plugin.


🫢 baremetal node undeploy

Sets the provision state of a baremetal node to 'deleted'. Iconic teardown moment.

openstack baremetal node undeploy
    [--wait [<time-out>]]
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, available. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely 😭 (yes, forever-forever)
  • node β€” names or UUID's of the nodes

This command is provided by the python-ironicclient plugin.


✨ baremetal node unhold

Sets the provision state of a baremetal node to 'unhold'.

openstack baremetal node unhold <node> [<node> ...]
  • node β€” names or UUID's of the nodes

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal node unrescue

Sets the provision state of a baremetal node to 'unrescue' β€” time to come back from the rescue era.

openstack baremetal node unrescue
    [--wait [<time-out>]]
    <node>
    [<node> ...]
  • --wait <time-out> β€” wait for a node to reach the desired state, active. Optionally takes a timeout value (in seconds). The default value is 0, meaning it will wait indefinitely 🫠
  • node β€” names or UUID's of the nodes

This command is provided by the python-ironicclient plugin.


🧹 baremetal node unset

Unset baremetal properties. Basically the "never mind πŸ™ˆ" of commands β€” you're taking stuff back off the node.

openstack baremetal node unset
    [--instance-uuid]
    [--instance-name]
    [--name]
    [--resource-class]
    [--target-raid-config]
    [--property <key>]
    [--extra <key>]
    [--driver-info <key>]
    [--instance-info <key>]
    [--chassis-uuid]
    [--bios-interface]
    [--boot-interface]
    [--console-interface]
    [--deploy-interface]
    [--firmware-interface]
    [--inspect-interface]
    [--network-data]
    [--management-interface]
    [--network-interface]
    [--power-interface]
    [--raid-interface]
    [--rescue-interface]
    [--storage-interface]
    [--vendor-interface]
    [--conductor-group]
    [--automated-clean]
    [--protected]
    [--protected-reason]
    [--retired]
    [--retired-reason]
    [--owner]
    [--lessee]
    [--description]
    [--shard]
    [--parent-node]
    <node>
    [<node> ...]
  • --instance-uuid β€” unset instance UUID on this baremetal node
  • --instance-name β€” unset instance name on this baremetal node
  • --name β€” unset the name of the node
  • --resource-class β€” unset the resource class of the node
  • --target-raid-config β€” unset the target RAID configuration of the node
  • --property <key> β€” property to unset on this baremetal node (repeat the option to unset multiple properties)
  • --extra <key> β€” extra to unset on this baremetal node (repeat the option to unset multiple extras)
  • --driver-info <key> β€” driver information to unset on this baremetal node (repeat the option to unset multiple items in driver information)
  • --instance-info <key> β€” instance information to unset on this baremetal node (repeat the option to unset multiple instance information)
  • --chassis-uuid β€” unset chassis UUID on this baremetal node
  • --bios-interface β€” unset BIOS interface on this baremetal node
  • --boot-interface β€” unset boot interface on this baremetal node
  • --console-interface β€” unset console interface on this baremetal node
  • --deploy-interface β€” unset deploy interface on this baremetal node
  • --firmware-interface β€” unset firmware interface on this baremetal node
  • --inspect-interface β€” unset inspect interface on this baremetal node
  • --network-data β€” unset network data on this baremetal port. (yep, the page says port here, not node β€” copying it exactly, don't @ me πŸ™ˆ)
  • --management-interface β€” unset management interface on this baremetal node
  • --network-interface β€” unset network interface on this baremetal node
  • --power-interface β€” unset power interface on this baremetal node
  • --raid-interface β€” unset RAID interface on this baremetal node
  • --rescue-interface β€” unset rescue interface on this baremetal node
  • --storage-interface β€” unset storage interface on this baremetal node
  • --vendor-interface β€” unset vendor interface on this baremetal node
  • --conductor-group β€” unset conductor group for this baremetal node (the default group will be used)
  • --automated-clean β€” unset automated clean option on this baremetal node (the value from configuration will be used)
  • --protected β€” unset the protected flag on the node
  • --protected-reason β€” unset the protected reason (gets unset automatically when protected is unset)
  • --retired β€” unset the retired flag on the node
  • --retired-reason β€” unset the retired reason (gets unset automatically when retired is unset)
  • --owner β€” unset the owner field of the node
  • --lessee β€” unset the lessee field of the node
  • --description β€” unset the description field of the node
  • --shard β€” unset the shard field of the node
  • --parent-node β€” unset the parent node field of the node
  • node β€” names or UUID's of the nodes

This command is provided by the python-ironicclient plugin.


πŸ” baremetal node validate

Vibe-checks a node's driver interfaces. Does this node actually work? Let's find out bestie.

openstack baremetal node validate
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • node β€” name or UUID of the node

This command is provided by the python-ironicclient plugin.


🌸 baremetal node vif attach

Attach a VIF to a given node. Networking era πŸ’…

openstack baremetal node vif attach
    [--port-uuid <port-uuid>]
    [--portgroup-uuid <portgroup-uuid>]
    [--vif-info <key=value>]
    <node>
    <vif-id>
  • --port-uuid <port-uuid> β€” UUID of the baremetal port to attach the VIF to.
  • --portgroup-uuid <portgroup-uuid> β€” UUID of the baremetal portgroup to attach the VIF to.
  • --vif-info <key=value> β€” record arbitrary key/value metadata. Can be specified multiple times. The mandatory 'id' parameter cannot be specified as a key. (rude but true)
  • node β€” name or UUID of the node
  • vif-id β€” name or UUID of the VIF to attach to a node.

This command is provided by the python-ironicclient plugin.


πŸ“ baremetal node vif detach

Detach VIF from a given node. Un-attach, un-attach 🎢

openstack baremetal node vif detach <node> <vif-id>
  • node β€” name or UUID of the node
  • vif-id β€” name or UUID of the VIF to detach from a node.

This command is provided by the python-ironicclient plugin.


πŸ‘‘ baremetal node vif list

Show attached VIFs for a node β€” the whole guest list, bestie.

openstack baremetal node vif list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    <node>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • node β€” name or UUID of the node

This command is provided by the python-ironicclient plugin.


🌈 baremetal port

πŸŽ€ baremetal port create

Create a new port πŸ”Œβœ¨

ok bestie, next up is the full breakdown of baremetal port create and its flags β€” coming in the next part, don't go anywhere πŸ’–
openstack baremetal port create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    --node <uuid>
    [--uuid <uuid>]
    [--extra <key=value>]
    [--local-link-connection <key=value>]
    [--pxe-enabled <boolean>]
    [--port-group <uuid>]
    [--physical-network <physical network>]
    [--is-smartnic]
    [--name <port name>]
    [--description <port description>]
    [--vendor <port vendor>]
    [--category <port category>]
    <address>

like, that's the whole shape of it bestie β€” <address> is mandatory, --node is mandatory, everything else is a vibe you can add or skip ✨

  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table πŸ’…
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --node <uuid> β€” UUID of the node that this port belongs to.
  • --uuid <uuid> β€” UUID of the port.
  • --extra <key=value> β€” Record arbitrary key/value metadata. Argument can be specified multiple times.
  • --local-link-connection <key=value> β€” Key/value metadata describing Local link connection information. Valid keys are 'switch_info', 'switch_id', 'port_id' and 'hostname'. The keys 'switch_id' and 'port_id' are required. In case of a Smart NIC port, the required keys are 'port_id' and 'hostname'. Argument can be specified multiple times.
  • --pxe-enabled <boolean> β€” Indicates whether this Port should be used when PXE booting this Node.
  • --port-group <uuid> β€” UUID of the port group that this port belongs to.
  • --physical-network <physical network> β€” Name of the physical network to which this port is connected.
  • --is-smartnic β€” Indicates whether this Port is a Smart NIC port
  • --name <port name> β€” Name of the port.
  • --description <port description> β€” An optional description for the port.
  • --vendor <port vendor> β€” An optional vendor for the port.
  • --category <port category> β€” An optional category for the port.
  • address β€” MAC address for this port.

This command is provided by the python-ironicclient plugin.


πŸ—‘οΈ baremetal port delete

Delete port(s). plural. multiple. go off, clean up that cluster 🧹✨

openstack baremetal port delete <port> [<port> ...]
  • port β€” UUID(s) of the port(s) to delete.

This command is provided by the python-ironicclient plugin.


πŸŽ€ baremetal port group create

Create a new baremetal port group. it's giving found family but for ports πŸ‘‘

openstack baremetal port group create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    --node <uuid>
    [--address <mac-address>]
    [--name NAME]
    [--uuid UUID]
    [--extra <key=value>]
    [--mode MODE]
    [--property <key=value>]
    [--support-standalone-ports | --unsupport-standalone-ports]
    [--physical-network <physical network>]
    [--category <port category>]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table πŸ’…
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --node <uuid> β€” UUID of the node that this port group belongs to.
  • --address <mac-address> β€” MAC address for this port group.
  • --name <NAME> β€” Name of the port group.
  • --uuid <UUID> β€” UUID of the port group.
  • --extra <key=value> β€” Record arbitrary key/value metadata. Can be specified multiple times.
  • --mode <MODE> β€” Mode of the port group. For possible values, refer to https://www.kernel.org/doc/Documentation/networking/bonding.txt.
  • --property <key=value> β€” Key/value property related to this port group's configuration. Can be specified multiple times.
  • --support-standalone-ports β€” Ports that are members of this port group can be used as stand-alone ports. (default)
  • --unsupport-standalone-ports β€” Ports that are members of this port group cannot be used as stand-alone ports.
  • --physical-network <physical network> β€” Name of the physical network to which the ports in this port group are connected.
  • --category <port category> β€” An optional category for the port group.

This command is provided by the python-ironicclient plugin.


πŸ’€ baremetal port group delete

Unregister baremetal port group(s). bye bestie, you will NOT be missed (jk, the ports will lowkey miss you) 🫢

openstack baremetal port group delete <port group> [<port group> ...]
  • port group β€” Port group(s) to delete (name or UUID).

This command is provided by the python-ironicclient plugin.


🌈 baremetal port group list

List baremetal port groups. window shopping for your fave groupies πŸ›οΈ

openstack baremetal port group list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--limit <limit>]
    [--marker <port group>]
    [--sort <key>[:<direction>]]
    [--address <mac-address>]
    [--node <node>]
    [--shards <shard> [<shard> ...]]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table πŸ’…
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric
  • --noindent β€” whether to disable indenting the JSON
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data (columns specified first have a priority, non-existing columns are ignored), column names are case-insensitive and accept underscores for spaces, can be repeated
  • --sort-ascending β€” sort the column(s) in ascending order
  • --sort-descending β€” sort the column(s) in descending order
  • --limit <limit> β€” Maximum number of port groups to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service.
  • --marker <port group> β€” Port group UUID (for example, of the last port group in the list from a previous request). Returns the list of port groups after this UUID.
  • --sort <key>[:<direction>] β€” Sort output by specified port group fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma.
  • --address <mac-address> β€” Only show information for the port group with this MAC address.
  • --node <node> β€” Only list port groups of this node (name or UUID).
  • --shards <shard> β€” Only list port groups of nodes in these shards.
  • --long β€” Show detailed information about the port groups.
  • --fields <field> β€” One or more port group fields. Only these fields will be fetched from the server. Can not be used when '--long' is specified.

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal port group set

Set baremetal port group properties. glow-up time for your group βœ¨πŸ’…

openstack baremetal port group set
    [--node <uuid>]
    [--address <mac-address>]
    [--name <name>]
    [--extra <key=value>]
    [--mode MODE]
    [--property <key=value>]
    [--support-standalone-ports | --unsupport-standalone-ports]
    [--physical-network <physical network>]
    [--category <category>]
    <port
    group>
  • --node <uuid> β€” Update UUID of the node that this port group belongs to.
  • --address <mac-address> β€” MAC address for this port group.
  • --name <name> β€” Name of the port group.
  • --extra <key=value> β€” Extra to set on this baremetal port group (repeat option to set multiple extras).
  • --mode <MODE> β€” Mode of the port group. For possible values, refer to https://www.kernel.org/doc/Documentation/networking/bonding.txt.
  • --property <key=value> β€” Key/value property related to this port group's configuration (repeat option to set multiple properties).
  • --support-standalone-ports β€” Ports that are members of this port group can be used as stand-alone ports.
  • --unsupport-standalone-ports β€” Ports that are members of this port group cannot be used as stand-alone ports.
  • --physical-network <physical network> β€” Set a physical network for the ports in this port group
  • --category <category> β€” Set a category for this port group
  • port group β€” Name or UUID of the port group.

This command is provided by the python-ironicclient plugin.


πŸ‘‘ baremetal port group show

Show baremetal port group details.

πŸŽ€ openstack baremetal port group show

okay bestie, this is the port-group spotlight command ✨ it pulls up one port group and lets you pick exactly how the output looks.

openstack baremetal port group show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--address]
    [--fields <field> [<field> ...]]
    <id>
  • -f <FORMATTER>, --format <FORMATTER> β€” this is the output format, and it defaults to table πŸ’…
  • -c COLUMN, --column COLUMN β€” pick the column(s) you want included; repeat it to show multiple columns ✨
  • --noindent β€” turns off indenting the JSON, no cap 🫢
  • --prefix <PREFIX> β€” adds a prefix to all variable names πŸŽ€
  • --max-width <integer> β€” maximum display width, with <1 to disable it. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence ⭐
  • --fit-width β€” fits the table to the display width. This is implied if --max-width is greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable it 🌸
  • --print-empty β€” prints an empty table if there’s no data to show πŸ’€
  • --address β€” says that <id> is the MAC address (instead of UUID or name) of the port group πŸ‘‘
  • --fields <field> β€” one or more port group fields. Only these fields will be fetched from the server πŸ”₯
  • id β€” UUID or name of the port group (or MAC address if --address is specified) πŸ’–

This command is provided by the python-ironicclient plugin.


πŸ¦‹ baremetal port group unset

this one is the β€œtake it back” button for baremetal port group properties πŸ™ˆ

openstack baremetal port group unset
    [--name]
    [--address]
    [--extra <key>]
    [--property <key>]
    [--physical-network]
    [--category]
    <port group>
  • --name β€” unsets the name of the port group πŸŽ€
  • --address β€” unsets the address of the port group ✨
  • --extra <key> β€” extra to unset on this baremetal port group; repeat the option to unset multiple extras πŸ’…
  • --property <key> β€” property to unset on this baremetal port group; repeat the option to unset multiple properties πŸ”₯
  • --physical-network β€” unsets the physical network on this baremetal port group 🌈
  • --category β€” unsets the category for this port group πŸ¦‹
  • port group β€” name or UUID of the port group πŸ’–

This command is provided by the python-ironicclient plugin.


πŸ’… baremetal port list

listing baremetal ports, bestie β€” with so many little knobs for sorting, filtering, and formatting πŸ‘‘

openstack baremetal port list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--address <mac-address>]
    [--node <node>]
    [--port-group <port group>]
    [--limit <limit>]
    [--marker <port>]
    [--sort <key>[:<direction>]]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table ✨
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include; repeat it to show multiple columns πŸŽ€
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric πŸ’…
  • --noindent β€” whether to disable indenting the JSON 🫢
  • --max-width <integer> β€” maximum display width, with <1 to disable it. You can also use CLIFF_MAX_TERM_WIDTH, but the parameter takes precedence ⭐
  • --fit-width β€” fits the table to the display width. Implied if --max-width is greater than 0. Set CLIFF_FIT_WIDTH=1 to always enable 🌸
  • --print-empty β€” prints an empty table if there’s no data to show πŸ’€
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data; columns specified first have priority, non-existing columns are ignored, column names are case-insensitive and accept underscores for spaces, and it can be repeated πŸ”₯
  • --sort-ascending β€” sorts the column(s) in ascending order 🌈
  • --sort-descending β€” sorts the column(s) in descending order πŸ¦‹
  • --address <mac-address> β€” only show information for the port with this MAC address πŸŽ€
  • --node <node> β€” only list ports of this node (name or UUID) πŸ’œ
  • --port-group <port group> β€” only list ports of this port group (name or UUID) πŸ‘‘
  • --limit <limit> β€” maximum number of ports to return per request, 0 for no limit. Default is the maximum number used by the Baremetal API Service πŸ’–
  • --marker <port> β€” port UUID (for example, of the last port in the list from a previous request). Returns the list of ports after this UUID ✨
  • --sort <key>[:<direction>] β€” sort output by specified port fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma πŸ”₯
  • --long β€” show detailed information about ports πŸ‘‘
  • --fields <field> β€” one or more port fields. Only these fields will be fetched from the server. Can not be used when --long is specified πŸ’…

This command is provided by the python-ironicclient plugin.


🌸 baremetal port set

setting baremetal port properties β€” yes, this is the glow-up command πŸ’–

openstack baremetal port set
    [--node <uuid>]
    [--address <address>]
    [--extra <key=value>]
    [--port-group <uuid>]
    [--local-link-connection <key=value>]
    [--pxe-enabled | --pxe-disabled]
    [--physical-network <physical network>]
    [--is-smartnic]
    [--name <name>]
    [--description <description>]
    [--vendor <vendor>]
    [--category <category>]
    <port>
  • --node <uuid> β€” set UUID of the node that this port belongs to πŸŽ€
  • --address <address> β€” set MAC address for this port ✨
  • --extra <key=value> β€” extra to set on this baremetal port; repeat the option to set multiple extras πŸ’…
  • --port-group <uuid> β€” set UUID of the port group that this port belongs to πŸ¦‹
  • --local-link-connection <key=value> β€” key/value metadata describing local link connection information. Valid keys are 'switch_info', 'switch_id', 'port_id' and 'hostname'. The keys 'switch_id' and 'port_id' are required. In case of a Smart NIC port, the required keys are 'port_id' and 'hostname'. Argument can be specified multiple times πŸ”₯
  • --pxe-enabled β€” indicates that this port should be used when PXE booting this node (default) πŸ‘‘
  • --pxe-disabled β€” indicates that this port should not be used when PXE booting this node πŸ’€
  • --physical-network <physical network> β€” set the name of the physical network to which this port is connected 🌈
  • --is-smartnic β€” set port to be a Smart NIC port ⭐
  • --name <name> β€” set name for this port πŸŽ€
  • --description <description> β€” set a description for this port πŸ’œ
  • --vendor <vendor> β€” set a vendor for this port πŸ’–
  • --category <category> β€” set a category for this port πŸ¦‹
  • port β€” UUID of the port ✨

This command is provided by the python-ironicclient plugin.


🫢 baremetal port show

port details, front and center β€” this is the main-character view πŸ‘‘

openstack baremetal port show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--address]
    [--fields <field> [<field> ...]]
    <id>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table ✨
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include; repeat it to show multiple columns πŸŽ€
  • --noindent β€” whether to disable indenting the JSON πŸ’…
  • --prefix <PREFIX> β€” adds a prefix to all variable names 🫢
  • --max-width <integer> β€” maximum display width, with <1 to disable it. You can also use CLIFF_MAX_TERM_WIDTH, but the parameter takes precedence ⭐
  • --fit-width β€” fits the table to the display width. Implied if --max-width is greater than 0. Set CLIFF_FIT_WIDTH=1 to always enable 🌸
  • --print-empty β€” prints an empty table if there’s no data to show πŸ’€
  • --address β€” says that <id> is the MAC address (instead of the UUID) of the port πŸ”₯
  • --fields <field> β€” one or more port fields. Only these fields will be fetched from the server 🌈
  • id β€” UUID of the port (or MAC address if --address is specified) πŸ’–

This command is provided by the python-ironicclient plugin.


🧚 baremetal port unset

the un-glow-up command for baremetal port properties β€” take those fields back, bestie πŸ™ˆ

openstack baremetal port unset
    [--extra <key>]
    [--local-link-connection <key>]
    [--port-group]
    [--physical-network]
    [--is-smartnic]
    [--name]
    [--description]
    [--vendor]
    [--category]
    <port>
  • --extra <key> β€” extra to unset on this baremetal port; repeat the option to unset multiple extras πŸŽ€
  • --local-link-connection <key> β€” remove local link connection on this port; repeat the option to unset multiple keys ✨
  • --port-group β€” remove port from the port group πŸ’…
  • --physical-network β€” unset the physical network on this baremetal port 🌈
  • --is-smartnic β€” set Port as not Smart NIC port πŸ’€
  • --name β€” unset the name for this port πŸ¦‹
  • --description β€” unset the description for this port πŸ’œ
  • --vendor β€” unset the vendor for this port πŸ’–
  • --category β€” unset the category for this port πŸŽ€
  • port β€” UUID of the port ⭐

This command is provided by the python-ironicclient plugin.


🌈 baremetal volume

okay, volume connector territory β€” buckle up, bestie πŸ’Ύβœ¨

πŸ‘‘ baremetal volume connector create

creating a new baremetal volume connector, and it’s giving required-options energy πŸ”₯

openstack baremetal volume connector create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    --node <uuid>
    --type <type>
    --connector-id <connector id>
    [--uuid <uuid>]
    [--extra <key=value>]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table ✨
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include; repeat it to show multiple columns πŸŽ€
  • --noindent β€” whether to disable indenting the JSON πŸ’…
  • --prefix <PREFIX> β€” bestie this one just sticks a little prefix on all the variable names so nothing gets confusing later πŸ’… super simple, super useful.
  • --max-width <integer> β€” caps the max display width. Anything <1 disables it entirely. You can also set the CLIFF_MAX_TERM_WIDTH environment variable if env vars are more your vibe, but heads up β€” the parameter takes precedence. πŸ‘‘
  • --fit-width β€” makes the table actually fit your display width. It's implied if --max-width is greater than 0, so like, it kinda turns itself on. Wanna always have it? Set the environment variable CLIFF_FIT_WIDTH=1 and it's on fr fr. ✨
  • --print-empty β€” prints an empty table when there's genuinely no data to show. No data, still got a table, we love a consistent aesthetic πŸŽ€
  • --node <uuid> β€” the UUID of the node that this volume connector belongs to.
  • --type <type> β€” the type of the volume connector. Valid values are 'iqn', 'ip', 'mac', 'wwnn', 'wwpn', 'port', 'portgroup' β€” pick your fighter πŸ’–
  • --connector-id <connector id> β€” the ID of the volume connector within the specified type. Like, for example, the iSCSI initiator IQN for the node if the type is 'iqn'. iykyk 🧚
  • --uuid <uuid> β€” the UUID of the volume connector itself.
  • --extra <key=value> β€” records arbitrary key/value metadata, and yes you can specify it multiple times. Stack 'em up πŸ“
This command is provided by the python-ironicclient plugin. Credit where credit is due, periodt. πŸ’œ

πŸ—‘οΈ baremetal volume connector delete

Unregister baremetal volume connector(s) β€” basically the "it's not me, it's you" of volume connectors 😭

openstack baremetal volume connector delete
    <volume connector>
    [<volume connector> ...]
  • volume connector β€” the UUID(s) of the volume connector(s) you're deleting. As many as you want, they can all go together πŸ¦‹
This command is provided by the python-ironicclient plugin.

πŸ“‹ baremetal volume connector list

List baremetal volume connectors β€” the full roster, the lineup, the group chat member list 🌈

openstack baremetal volume connector list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--node <node>]
    [--limit <limit>]
    [--marker <volume connector>]
    [--sort <key>[:<direction>]]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format. Defaults to table πŸ’…
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include. Repeat it to show multiple columns, very mix-and-match of you ✨
  • --quote <QUOTE_MODE> β€” when to include quotes. Defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON. Un-indent it, let it be free πŸ¦‹
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” specify the column(s) to sort the data β€” columns specified first have a priority, and non-existing columns are ignored (rude but ok). Column names are case-insensitive and accept underscores for spaces. Can be repeated πŸ”₯
  • --sort-ascending β€” sort the column(s) in ascending order ⬆️
  • --sort-descending β€” sort the column(s) in descending order ⬇️
  • --node <node> β€” only list volume connectors of this node (name or UUID).
  • --limit <limit> β€” maximum number of volume connectors to return per request, 0 for no limit. The default is the maximum number used by the Baremetal API Service. No cap fr fr 🧒
  • --marker <volume connector> β€” volume connector UUID (for example, of the last volume connector in the list from a previous request). Returns the list of volume connectors after this UUID β€” like a "continue where we left off" bookmark πŸŽ€
  • --sort <key>[:<direction>] β€” sort output by specified volume connector fields and directions (asc or desc) (default: asc). Multiple fields and directions can be specified, separated by comma. Multitask slay πŸ’…
  • --long β€” show detailed information about volume connectors. The full lore πŸ‘‘
  • --fields <field> β€” one or more volume connector fields. Only these fields will be fetched from the server. Can not be used when '--long' is specified β€” pick a lane bestie 🫢
This command is provided by the python-ironicclient plugin.

πŸ› οΈ baremetal volume connector set

Set baremetal volume connector properties β€” glow-up time ✨

openstack baremetal volume connector set
    [--node <uuid>]
    [--type <type>]
    [--connector-id <connector id>]
    [--extra <key=value>]
    <volume connector>
  • --node <uuid> β€” UUID of the node that this volume connector belongs to.
  • --type <type> β€” Type of the volume connector. Can be 'iqn', 'ip', 'mac', 'wwnn', 'wwpn', 'port', 'portgroup'.
  • --connector-id <connector id> β€” ID of the volume connector in the specified type.
  • --extra <key=value> β€” Record arbitrary key/value metadata. Can be specified multiple times.
  • volume connector β€” UUID of the volume connector.
This command is provided by the python-ironicclient plugin.

πŸ” baremetal volume connector show

Show baremetal volume connector details β€” the deep dive, the full story πŸ”Ž

openstack baremetal volume connector show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <id>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --fields <field> β€” One or more volume connector fields. Only these fields will be fetched from the server.
  • id β€” UUID of the volume connector.
This command is provided by the python-ironicclient plugin.

🧹 baremetal volume connector unset

Unset baremetal volume connector properties β€” the declutter era 🧼

openstack baremetal volume connector unset
    [--extra <key>]
    <volume connector>
  • --extra <key> β€” Extra to unset (repeat option to unset multiple extras). Bye bye extras, love you, mean it πŸ’œ
  • volume connector β€” UUID of the volume connector.
This command is provided by the python-ironicclient plugin.

🌱 baremetal volume target create

Create a new baremetal volume target β€” new target just dropped πŸ‘‘

openstack baremetal volume target create
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    --node <uuid>
    --type <volume type>
    [--property <key=value>]
    --boot-index <boot index>
    --volume-id <volume id>
    [--uuid <uuid>]
    [--extra <key=value>]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --noindent β€” whether to disable indenting the JSON.
  • --prefix <PREFIX> β€” add a prefix to all variable names.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --node <uuid> β€” UUID of the node that this volume target belongs to.
  • --type <volume type> β€” Type of the volume target, e.g. 'iscsi', 'fibre_channel'.
  • --property <key=value> β€” Key/value property related to the type of this volume target. Can be specified multiple times.
  • --boot-index <boot index> β€” Boot index of the volume target.
  • --volume-id <volume id> β€” ID of the volume associated with this target.
  • --uuid <uuid> β€” UUID of the volume target.
  • --extra <key=value> β€” Record arbitrary key/value metadata. Can be specified multiple times.
This command is provided by the python-ironicclient plugin.

πŸ—‘οΈ baremetal volume target delete

Unregister baremetal volume target(s) β€” clearing the roster 😭

openstack baremetal volume target delete
    <volume target>
    [<volume target> ...]
  • volume target β€” UUID(s) of the volume target(s) to delete.
This command is provided by the python-ironicclient plugin.

πŸ“‹ baremetal volume target list

List baremetal volume targets β€” the whole squad, on display 🌸

openstack baremetal volume target list
    [-f {csv,json,table,value,yaml}]
    [-c COLUMN]
    [--quote {all,minimal,none,nonnumeric}]
    [--noindent]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--sort-column SORT_COLUMN]
    [--sort-ascending | --sort-descending]
    [--node <node>]
    [--limit <limit>]
    [--marker <volume target>]
    [--sort <key>[:<direction>]]
    [--long | --fields <field> [<field> ...]]
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table.
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns.
  • --quote <QUOTE_MODE> β€” when to include quotes, defaults to nonnumeric.
  • --noindent β€” whether to disable indenting the JSON.
  • --max-width <integer> β€” Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable.
  • --print-empty β€” Print empty table if there is no data to show.
  • --sort-column SORT_COLUMN β€” tells it which column(s) to sort the data by 🫢 the columns you name first get priority, and non-existent columns are just... ignored, no drama. Column names are case-insensitive and accept underscores instead of spaces, and yeah you can repeat this one.
  • --sort-ascending β€” sort those column(s) in ascending order ✨
  • --sort-descending β€” sort those column(s) in descending order, no cap πŸ“‰
  • --node <node> β€” only list volume targets of this node (give it a name or a UUID, either eats).
  • --limit <limit> β€” max number of volume targets to return per request, 0 means no limit. Default is the maximum number used by the Baremetal API Service.
  • --marker <volume target> β€” a volume target UUID (like, say, the last volume target in the list from a previous request). Returns the list of volume targets after this UUID πŸ‘‘
  • --sort <key>[:<direction>] β€” sort output by specified volume target fields and directions (asc or desc) (default: asc). You can stack multiple fields and directions, separated by comma.
  • --long β€” show detailed information about volume targets πŸ’…
  • --fields <field> β€” one or more volume target fields. Only these fields will be fetched from the server. Can not be used when --long is specified 🚫

This command is provided by the python-ironicclient plugin.

🌸 baremetal volume target set 🌸

Set baremetal volume target properties.

openstack baremetal volume target set
    [--node <uuid>]
    [--type <volume type>]
    [--property <key=value>]
    [--boot-index <boot index>]
    [--volume-id <volume id>]
    [--extra <key=value>]
    <volume
    target>
  • --node <uuid> β€” UUID of the node that this volume target belongs to.
  • --type <volume type> β€” type of the volume target, e.g. 'iscsi', 'fibre_channel'.
  • --property <key=value> β€” key/value property related to the type of this volume target. Can be specified multiple times.
  • --boot-index <boot index> β€” boot index of the volume target.
  • --volume-id <volume id> β€” ID of the volume associated with this target.
  • --extra <key=value> β€” record arbitrary key/value metadata. Can be specified multiple times.
  • volume target β€” UUID of the volume target.

This command is provided by the python-ironicclient plugin.

πŸŽ€ baremetal volume target show πŸŽ€

Show baremetal volume target details.

openstack baremetal volume target show
    [-f {json,shell,table,value,yaml}]
    [-c COLUMN]
    [--noindent]
    [--prefix PREFIX]
    [--max-width <integer>]
    [--fit-width]
    [--print-empty]
    [--fields <field> [<field> ...]]
    <id>
  • -f <FORMATTER>, --format <FORMATTER> β€” the output format, defaults to table
  • -c COLUMN, --column COLUMN β€” specify the column(s) to include, can be repeated to show multiple columns
  • --noindent β€” whether to disable indenting the JSON
  • --prefix <PREFIX> β€” add a prefix to all variable names
  • --max-width <integer> β€” maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.
  • --fit-width β€” fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable
  • --print-empty β€” print empty table if there is no data to show.
  • --fields <field> β€” one or more volume target fields. Only these fields will be fetched from the server.
  • id β€” UUID of the volume target.

This command is provided by the python-ironicclient plugin.

πŸ¦‹ baremetal volume target unset πŸ¦‹

Unset baremetal volume target properties.

openstack baremetal volume target unset
    [--extra <key>]
    [--property <key>]
    <volume
    target>
  • --extra <key> β€” extra to unset (repeat option to unset multiple extras)
  • --property <key> β€” property to unset on this baremetal volume target (repeat option to unset multiple properties).
  • volume target β€” UUID of the volume target.

This command is provided by the python-ironicclient plugin.

πŸ’œ Creating the Bare Metal service resources from file πŸ’œ

Okay so β€” it is possible to create a set of resources using their descriptions in JSON or YAML format. It can be done in one of two ways:

  1. Using OpenStackClient bare metal plugin CLI's command openstack baremetal create:
$ openstack -h baremetal create
usage: openstack baremetal create [-h] <file> [<file> ...]

Create resources from files

positional arguments:
  <file>      File (.yaml or .json) containing descriptions of the
              resources to create. Can be specified multiple times.
  1. Programmatically using the Python API:
ironicclient.v1.create_resources.create_resources(client: Client <#
ironicclient.v1.client.Client>, filenames: list[str]) -> None
       Create resources using their JSON or YAML descriptions.

       Parameters

              β€’ client -- an instance of ironic client;

              β€’ filenames -- a list of filenames containing JSON or
                YAML resources definitions.

       Raises ClientException if any operation during files
              processing/resource creation fails.

⭐ File containing Resource Descriptions ⭐

The resources to be created can be described either in JSON or YAML. A file ending with .json is assumed to contain valid JSON, and a file ending with .yaml is assumed to contain valid YAML. Specifying a file with any other extension leads to an error πŸ™ˆ

The resources that can be created are chassis, nodes, port groups and ports. A chassis can contain nodes (and resources of nodes) definitions nested under "nodes" key. A node can contain port groups definitions nested under "portgroups", and ports definitions under "ports" keys. Ports can be also nested under port groups in "ports" key.

The schema used to validate the supplied data is the following:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Schema for ironic resources file",
    "type": "object",
    "properties": {
        "chassis": {
            "type": "array",
            "items": {
                "type": "object"
            }
        },
        "nodes": {
            "type": "array",
            "items": {
                "type": "object"
            }
        }
    },
    "additionalProperties": false
}

More detailed description of the creation process can be seen in the following sections.

🌈 Examples 🌈

Here is an example of the JSON file that can be passed to the create command:

{
    "chassis": [
        {
            "description": "chassis 3 in row 23",
            "nodes": [
                {
                    "name": "node-3",
                    "driver": "ipmi",
                    "portgroups": [
                        {
                            "name": "switch.cz7882.ports.1-2",
                            "ports": [
                                {
                                    "address": "ff:00:00:00:00:00"
                                },
                                {
                                    "address": "ff:00:00:00:00:01"
                                }
                            ]
                        }
                    ],
                    "ports": [
                        {
                            "address": "00:00:00:00:00:02"
                        },
                        {
                            "address": "00:00:00:00:00:03"
                        }
                    ],
                    "driver_info": {
                        "ipmi_address": "192.168.1.23",
                        "ipmi_username": "BmcUsername",
                        "ipmi_password": "BmcPassword",
                    }
                },
                {
                    "name": "node-4",
                    "driver": "ipmi",
                    "ports": [
                        {
                            "address": "00:00:00:00:00:04"
                        },
                        {
                            "address": "00:00:00:00:00:01"
                        }
                    ]
                }
            ]
        }
    ],
    "nodes": [
        {
            "name": "node-5",
            "driver": "ipmi",
            "chassis_uuid": "74d93e6e-7384-4994-a614-fd7b399b0785",
            "ports": [
                {
                    "address": "00:00:00:00:00:00"
                }
            ]
        },
        {
            "name": "node-6",
            "driver": "ipmi"
        }
    ]
}

πŸ”₯ Creation Process πŸ”₯

  1. The client deserializes the files' contents and validates that the top-level dictionary in each of them contains only "chassis" and/or "nodes" keys, and their values are lists. The creation process is aborted if any failure is encountered in this stage. The rest of the validation is done by the ironic-api service.
  2. Each resource is created via issuing a POST request (with the resource's dictionary representation in the body) to the ironic-api service. In the case of nested resources ("nodes" key inside chassis, "portgroups" key inside nodes, "ports" key inside nodes or portgroups), the top-level resource is created first, followed by the sub-resources. For example, if a chassis contains a list of nodes, the chassis will be created first followed by the creation of each node. The same is true for ports and port groups described within nodes.
  3. If a resource could not be created, it does not stop the entire process. Any sub-resources of the failed resource will not be created, but otherwise, the rest of the resources will be created if possible. Any failed resources will be mentioned in the response. πŸ’€

πŸ’– python-ironicclient Contributor Documentation πŸ’–

🫢 Contributing to python-ironicclient 🫢

okay so if you're lowkey thinking "hmm I wanna contribute to the python-ironicclient project" β€” first of all, slay, love that for you πŸ’… β€” the following will help get you started. no cap.

πŸ¦‹ #openstack-ironic on OFTC IRC Network πŸ¦‹

there is a very active chat channel at <irc://irc.oftc.net/#openstack-ironic> and honestly it's the main character of getting help. this is usually the best place to ask questions and find your way around. IRC stands for Internet Relay Chat (iykyk) and it is a way to chat online in real time. you can ask a question and come back later to read the answer in the log files. logs for the #openstack-ironic IRC channel are stored at <http://eavesdrop.openstack.org/irclogs/%23openstack-ironic/> ✨

πŸŽ€ Developer Certificate of Origin πŸŽ€

in order to contribute to the python-ironicclient project, you need to adhere to the Developer Certificate of Origin <https://developercertificate.org/>. OpenStack utilizes the Developer Certificate of Origin (DCO) as a lightweight means to confirm that you are entitled to contribute the code you submit. this ensures that you are providing your contributions under the project's license and that you have the right to do so. periodt.

See also:

🌸 Project Hosting Details 🌸


🌈 Testing 🌈

⭐ Python Guideline Enforcement ⭐

all code has to pass the pep8 style guideline to merge into OpenStack, fr fr β€” no vibes-based merges here, bestie. to validate the code against these guidelines you can run:

$ tox -e pep8

🧚 Unit Testing 🧚

it is strongly encouraged to run the unit tests locally under one or more test environments prior to submitting a patch. like, genuinely, do it β€” it's giving responsible. to run all the recommended environments sequentially and pep8 style guideline run:

$ tox

you can also selectively pick specific test environments by listing your chosen environments after a -e flag πŸ‘‘

$ tox -e py3,pep8
Note: Tox sets up virtual environment and installs all necessary dependencies. Sharing the environment with devstack testing is not recommended due to conflicting configuration with system dependencies. πŸ’€ don't do it.

πŸ“ Functional Testing πŸ“

functional tests have been removed as of November 2024. gone, but not forgotten πŸ™ˆ


πŸ‘‘ Full Ironic Client Python API Reference πŸ‘‘

ironicclient

ironicclient package

Subpackages

ironicclient.common package

Subpackages

ironicclient.common.apiclient package

Submodules

ironicclient.common.apiclient.base module

Base utilities to build API operation managers and objects on top of. ✨

  • class ironicclient.common.apiclient.base.ManagerProtocol(*args, **kwargs) β€” Bases: Protocol

Minimal protocol for Resource's manager dependency.

client: Any

  • class ironicclient.common.apiclient.base.Resource(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False) β€” Bases: object

Base class for OpenStack resources (tenant, user, etc.).

This is pretty much just a bag for attributes. πŸ‘œ lowkey iconic honestly.

  • HUMAN_ID: bool = False
  • NAME_ATTR: str = 'name'
  • get() -> None β€” Support for lazy loading details.

Some clients, such as novaclient have the option to lazy load the details, details which can be loaded with this function.

  • property human_id: str | None β€” Human-readable ID which can be used for bash completion.
  • is_loaded() -> bool
  • set_loaded(val: bool) -> None
  • to_dict() -> dict[str, Any]

😭 ironicclient.common.apiclient.exceptions module 😭

Exception definitions. buckle up bestie, there's a lot of them and every single one is here πŸ’…

  • exception ironicclient.common.apiclient.exceptions.AmbiguousEndpoints(endpoints: object | None = None) β€” Bases: EndpointException

Found more than one matching endpoint in Service Catalog.

  • exception ironicclient.common.apiclient.exceptions.AuthPluginOptionsMissing(opt_names: list[str]) β€” Bases: AuthorizationFailure

Auth plugin misses some options.

  • exception ironicclient.common.apiclient.exceptions.AuthSystemNotFound(auth_system: str) β€” Bases: AuthorizationFailure

User has specified an AuthSystem that is not installed.

  • exception ironicclient.common.apiclient.exceptions.AuthorizationFailure β€” Bases: ClientException

Cannot authorize API client.

  • exception ironicclient.common.apiclient.exceptions.BadGateway(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HttpServerError

HTTP 502 - Bad Gateway.

The server was acting as a gateway or proxy and received an invalid response from the upstream server.

http_status: int = 502

message: str = 'Bad Gateway'

  • exception ironicclient.common.apiclient.exceptions.BadRequest(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HTTPClientError

HTTP 400 - Bad Request.

The request cannot be fulfilled due to bad syntax.

http_status: int = 400

message: str = 'Bad Request'

  • exception ironicclient.common.apiclient.exceptions.ClientException β€” Bases: Exception

The base exception class for all exceptions this library raises. πŸ’€ the mother of them all.

  • exception ironicclient.common.apiclient.exceptions.CommandError β€” Bases: ClientException

Error in CLI tool.

  • exception ironicclient.common.apiclient.exceptions.Conflict(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HTTPClientError

HTTP 409 - Conflict.

Indicates that the request could not be processed because of conflict in the request, such as an edit conflict.

http_status: int = 409

message: str = 'Conflict'

  • exception ironicclient.common.apiclient.exceptions.ConnectionError β€” Bases: ClientException

Cannot connect to API service.

  • exception ironicclient.common.apiclient.exceptions.ConnectionRefused β€” Bases: ConnectionError

Connection refused while trying to connect to API service.

  • exception ironicclient.common.apiclient.exceptions.EndpointException β€” Bases: ClientException

Something is rotten in Service Catalog. 🌸 dramatic but true.

  • exception ironicclient.common.apiclient.exceptions.EndpointNotFound β€” Bases: EndpointException

Could not find requested endpoint in Service Catalog.

  • exception ironicclient.common.apiclient.exceptions.ExpectationFailed(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HTTPClientError

HTTP 417 - Expectation Failed.

The server cannot meet the requirements of the Expect request-header field.

http_status: int = 417

message: str = 'Expectation Failed'

  • exception ironicclient.common.apiclient.exceptions.Forbidden(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HTTPClientError

HTTP 403 - Forbidden.

The request was a valid request, but the server is refusing to respond to it.

http_status: int = 403

message: str = 'Forbidden'

  • exception ironicclient.common.apiclient.exceptions.GatewayTimeout(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HttpServerError

HTTP 504 - Gateway Timeout.

The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.

http_status: int = 504

message: str = 'Gateway Timeout'

  • exception ironicclient.common.apiclient.exceptions.Gone(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HTTPClientError

HTTP 410 - Gone.

Indicates that the resource requested is no longer available and will not be available again.

http_status: int = 410

message: str = 'Gone'

  • exception ironicclient.common.apiclient.exceptions.HTTPClientError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HttpError

Client-side HTTP error.

Exception for cases in which the client seems to have erred.

message: str = 'HTTP Client Error'

  • exception ironicclient.common.apiclient.exceptions.HTTPRedirection(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HttpError

HTTP Redirection.

message: str = 'HTTP Redirection'

  • exception ironicclient.common.apiclient.exceptions.HttpError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: ClientException

The base exception class for all HTTP exceptions.

http_status: int = 0

message: str = 'HTTP Error'

  • exception ironicclient.common.apiclient.exceptions.HttpNotImplemented(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None) β€” Bases: HttpServerError

Like, the server literally either doesn't recognize the request method or it just doesn't have the range to fulfill it β€” no thoughts, head empty 🫠

http_status: int = 501

message: str = 'Not Implemented'


exception ironicclient.common.apiclient.exceptions.HttpServerError(...)

exception
ironicclient.common.apiclient.exceptions.HttpServerError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HttpError

Server-side HTTP error, bestie β€” the ✨parent✨ of all the 5xx meltdowns. It's for cases where the server is fully aware it has erred or is incapable of performing the request. Self-aware king behavior, honestly πŸ‘‘

message: str = 'HTTP Server Error'

exception ironicclient.common.apiclient.exceptions.HttpVersionNotSupported(...)

exception
ironicclient.common.apiclient.exceptions.HttpVersionNotSupported(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HttpServerError

HTTP 505 - HttpVersion Not Supported. The server doesn't support the HTTP protocol version used in the request β€” like bringing a vibe the server has simply never heard of πŸ’€

http_status: int = 505

message: str = 'HTTP Version Not Supported'

exception ironicclient.common.apiclient.exceptions.InternalServerError(...)

exception
ironicclient.common.apiclient.exceptions.InternalServerError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HttpServerError

HTTP 500 - Internal Server Error. The generic one, given when no more specific message is suitable β€” aka the "it's giving nothing, and it's giving it loudly" error 😭

http_status: int = 500

message: str = 'Internal Server Error'

exception ironicclient.common.apiclient.exceptions.LengthRequired(...)

exception
ironicclient.common.apiclient.exceptions.LengthRequired(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 411 - Length Required. The request didn't specify the length of its content, which the requested resource requires. Like showing up without your ID, girl πŸͺͺ

http_status: int = 411

message: str = 'Length Required'

exception ironicclient.common.apiclient.exceptions.MethodNotAllowed(...)

exception
ironicclient.common.apiclient.exceptions.MethodNotAllowed(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 405 - Method Not Allowed. A request was made of a resource using a request method that resource does not support. Wrong door, wrong key, wrong era πŸ”‘

http_status: int = 405

message: str = 'Method Not Allowed'

exception ironicclient.common.apiclient.exceptions.MultipleChoices(...)

exception
ironicclient.common.apiclient.exceptions.MultipleChoices(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPRedirection

HTTP 300 - Multiple Choices. Indicates multiple options for the resource that the client may follow β€” so many paths, so little commitment πŸ¦‹

http_status: int = 300

message: str = 'Multiple Choices'

exception ironicclient.common.apiclient.exceptions.NoUniqueMatch

Bases: ClientException

Multiple entities found instead of one. Not a match, a situation β€” the search said "one (1)" and the database said "bestie, we have options" πŸ™ˆ

exception ironicclient.common.apiclient.exceptions.NotAcceptable(...)

exception
ironicclient.common.apiclient.exceptions.NotAcceptable(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 406 - Not Acceptable. The requested resource is only capable of generating content that isn't acceptable according to the Accept headers sent in the request. It can serve you, it just refuses to serve you like that πŸ’…

http_status: int = 406

message: str = 'Not Acceptable'

exception ironicclient.common.apiclient.exceptions.NotFound(...)

exception
ironicclient.common.apiclient.exceptions.NotFound(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 404 - Not Found. The classic ✨iconic✨ one: the requested resource could not be found, but it may be available again in the future. So like, don't block them, they might come back 😭

http_status: int = 404

message: str = 'Not Found'

exception ironicclient.common.apiclient.exceptions.PaymentRequired(...)

exception
ironicclient.common.apiclient.exceptions.PaymentRequired(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 402 - Payment Required. Reserved for future use. That's literally it, that's the whole personality β€” a ghost, a placeholder, a mysterious queen who never shows up πŸ‘»

http_status: int = 402

message: str = 'Payment Required'

exception ironicclient.common.apiclient.exceptions.PreconditionFailed(...)

exception
ironicclient.common.apiclient.exceptions.PreconditionFailed(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 412 - Precondition Failed. The server does not meet one of the preconditions that the requester put on the request. You set boundaries, the server did not respect them 🚩

http_status: int = 412

message: str = 'Precondition Failed'

exception ironicclient.common.apiclient.exceptions.ProxyAuthenticationRequired(...)

exception
ironicclient.common.apiclient.exceptions.ProxyAuthenticationRequired(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 407 - Proxy Authentication Required. The client has to authenticate itself with the proxy first. The middleman wants your ID before you get through the door ngl πŸšͺ

http_status: int = 407

message: str = 'Proxy Authentication Required'

exception ironicclient.common.apiclient.exceptions.RequestEntityTooLarge(*args: Any, **kwargs: Any)

Bases: HTTPClientError

HTTP 413 - Request Entity Too Large. The request is larger than the server is willing or able to process. Your girl packed the entire luggage set for a weekend trip 🧳

http_status: int = 413

message: str = 'Request Entity Too Large'

exception ironicclient.common.apiclient.exceptions.RequestTimeout(...)

exception
ironicclient.common.apiclient.exceptions.RequestTimeout(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 408 - Request Timeout. The server timed out waiting for the request. Left on read, technically πŸ’€

http_status: int = 408

message: str = 'Request Timeout'

exception ironicclient.common.apiclient.exceptions.RequestUriTooLong(...)

exception
ironicclient.common.apiclient.exceptions.RequestUriTooLong(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 414 - Request-URI Too Long. The URI provided was too long for the server to process β€” a URL with main character energy that nobody asked to be that long πŸ“

http_status: int = 414

message: str = 'Request-URI Too Long'

exception ironicclient.common.apiclient.exceptions.RequestedRangeNotSatisfiable(...)

exception
ironicclient.common.apiclient.exceptions.RequestedRangeNotSatisfiable(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 416 - Requested Range Not Satisfiable. The client asked for a portion of the file, but the server cannot supply that portion. Bestie the slice you want does not exist 🍰

http_status: int = 416

message: str = 'Requested Range Not Satisfiable'

exception ironicclient.common.apiclient.exceptions.ServiceUnavailable(...)

exception
ironicclient.common.apiclient.exceptions.ServiceUnavailable(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HttpServerError

HTTP 503 - Service Unavailable. The server is currently unavailable. Not ghosting you on purpose (probably), it's just ✨going through something✨

http_status: int = 503

message: str = 'Service Unavailable'

exception ironicclient.common.apiclient.exceptions.Unauthorized(...)

exception
ironicclient.common.apiclient.exceptions.Unauthorized(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 401 - Unauthorized. Similar to 403 Forbidden, but specifically for when authentication is required and has failed or has not yet been provided. Like, do you even go here? πŸͺͺ

http_status: int = 401

message: str = 'Unauthorized'

exception ironicclient.common.apiclient.exceptions.UnprocessableEntity(...)

exception
ironicclient.common.apiclient.exceptions.UnprocessableEntity(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 422 - Unprocessable Entity. The request was well-formed but was unable to be followed due to semantic errors. Grammatically perfect, spiritually incorrect 😭

http_status: int = 422

message: str = 'Unprocessable Entity'

exception ironicclient.common.apiclient.exceptions.UnsupportedMediaType(...)

exception
ironicclient.common.apiclient.exceptions.UnsupportedMediaType(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None)

Bases: HTTPClientError

HTTP 415 - Unsupported Media Type. The request entity has a media type which the server or resource does not support. Wrong format, no vibes passed the check 🎞️

http_status: int = 415

message: str = 'Unsupported Media Type'

exception ironicclient.common.apiclient.exceptions.UnsupportedVersion

Bases: ClientException

User is trying to use an unsupported version of the API. Time traveler behavior, and the timeline said no πŸ•°οΈ

exception ironicclient.common.apiclient.exceptions.ValidationError

Bases: ClientException

Error in validation on the API client side β€” caught it in-house before it ever left the group chat, love that for us βœ…

ironicclient.common.apiclient.exceptions.from_response(response: Response, method: str, url: str) -> HttpError

ironicclient.common.apiclient.exceptions.from_response(response: Response, method: str, url: str) -> HttpError <#ironicclient.common.apiclient.exceptions.HttpError>

Returns an instance of HttpError or a subclass, based on the response. The little matcher that looks at your response and goes "oh girl, I know exactly which one of these you are" πŸ’…

Parameters

  • response β€” the requests.Response instance, slay πŸ’…
    • method β€” the HTTP method used for the request
    • url β€” the URL used for the request

✨ Module contents ✨

Submodules β€” okay bestie, this is where it gets spicy, buckle up 🌈

ironicclient.common.base module 🧱

Base utilities to build API operation managers and objects on top of. Literally the foundation, the main character of the whole operation πŸ’…

class ironicclient.common.base.CreateManager(api: SessionClient)

Bases: Manager[ResourceT] β€” provides creation operations with a particular API. Iconic behavior only ✨

create(os_ironic_api_version: str | None = None, global_request_id: str | None = None, **kwargs: Any) -> ResourceT | None

Create a resource based on a kwargs dictionary of attributes. So you hand it a bag of attributes and it makes a thing 🫢

Parameters (the receipts):

  • kwargs β€” a dictionary containing the attributes of the resource that will be created.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing the global request ID header value (in form "req-<UUID>") to use for the request.
Raises exc.InvalidAttribute β€” for invalid attributes that are not needed to create the resource. So like, don't pass junk, bestie 😭

class ironicclient.common.base.Manager(api: SessionClient)

Bases: Generic[ResourceT] β€” provides CRUD operations with a particular API. The full alphabet of doing stuff, no cap πŸ”₯

  • resource_class β€” abstract property, type type[ResourceT]. It's the resource class. That's literally the whole vibe.

class ironicclient.common.base.Resource(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource β€” represents a particular instance of an object (tenant, user, etc). This is pretty much just a bag for attributes, lowkey πŸŽ€

  • to_dict() -> dict[str, Any] β€” turns it into a dict, obviously.

getid(obj: str | Resource) -> str

A lil wrapper to get an object's ID. Abstracts the common pattern of allowing both an object or an object's ID (UUID) as a parameter when dealing with relationships. Flexible queen behavior πŸ‘‘


ironicclient.common.filecache module πŸ—‚οΈ

retrieve_data(host: str, port: str | int, expiry: int | None = None) -> str | None

Retrieve the version stored for an ironic 'host', if it's not stale. It checks to see if there is valid cached data for the host/port combination and returns that if it isn't stale β€” literally a vibe check on your cache πŸ¦‹

  • param host: The host that we need to retrieve data for
  • param port: The port on the host that we need to retrieve data for
  • param expiry: The age in seconds before cached data is deemed invalid

save_data(host: str, port: str | int, data: str) -> None

Save 'data' for a particular 'host' in the appropriate cache dir. Put it in the vault bestie πŸ”

  • param host: The host that we need to save data for
  • param port: The port on the host that we need to save data for
  • param data: The data we want saved

ironicclient.common.http module 🌐

class ironicclient.common.http.SessionClient(os_ironic_api_version: str | list[str], api_version_select_state: str, max_retries: int | None, retry_interval: int | None, **kwargs: Any)

Bases: VersionNegotiationMixin, LegacyJsonAdapter β€” HTTP client based on Keystone client session. The whole connection moment πŸ’«

  • json_request(method: str, url: str, **kwargs: Any) -> tuple[Response, dict[str, Any] | list[Any] | bytes | None]
  • raw_request(method: str, url: str, **kwargs: dict[str, str]) -> Response

class ironicclient.common.http.VersionNegotiationMixin

Bases: object

  • api_version_select_state: str
  • negotiate_version(conn: Session, resp: Response | None) -> str β€” Negotiate the server version. Assumption: called after receiving a 406 error when doing a request. Parameters:
    • conn β€” A connection object
    • resp β€” The response object from http request
  • os_ironic_api_version: str | list[str]

get_server(url: str | None) -> tuple[str | None, str | None]

Extract and return the server & port. Finders keepers 🧚

with_retries(func: Callable[[...], _RT]) -> Callable[[...], _RT]

Wrapper for _http_request adding support for retries. Because sometimes you gotta try again, fr fr πŸ’€


ironicclient.common.i18n module 🌍

That's it. That's the module. Empty page, no notes πŸ™ˆ


ironicclient.common.utils module πŸ› οΈ

class ironicclient.common.utils.HashColumn(value: _T)

Bases: FormattableColumn[Any]

  • human_readable() -> str | None β€” Return a basic human readable version of the data. Making it make sense for the girlies πŸ’…

class ironicclient.common.utils.ListCommandArgs(*args, **kwargs)

Bases: Protocol β€” Protocol for parsed args passed to list commands (marker, limit, etc). The whole "here's what you typed" situation ✨

  • detail: bool
  • fields: list[list[str]] | None
  • limit: int | None
  • marker: str | None
  • sort_dir: str | None
  • sort_key: str | None

args_array_to_dict(kwargs: dict[str, Any], key_to_convert: str) -> dict[str, Any]

Convert the value in a dictionary entry to a dictionary. From the kwargs dictionary, it converts the value of the key_to_convert entry from a list of key-value pairs to a dictionary. Glow-up for data structures πŸ¦‹

Parameters:

  • kwargs β€” a dictionary
  • key_to_convert β€” the key (in kwargs), whose value is expected to be a list of key=value strings. This value will be converted to a dictionary.

Returns: kwargs, the (modified) dictionary.

args_array_to_patch(op: str, attributes: list[str]) -> list[dict[str, Any]]

No description in the source, bestie β€” it's giving mystery, but that's the signature, keep it exact πŸŽ€

bool_argument_value(arg_name: str, bool_str: str, strict: bool = True, default: bool = False) -> bool

Returns the Boolean represented by bool_str. Returns the Boolean value for the argument named arg_name. The value is represented by the string bool_str. If the string is an invalid Boolean string: if strict is True, a CommandError exception is raised; otherwise the default value is returned. Yes/no but make it dramatic 😭

Parameters:

  • arg_name β€” The name of the argument
  • bool_str β€” The string representing a Boolean value
  • strict β€” Used if the string is invalid. If True, raises an exception. If False, returns the default value.
  • default β€” The default value to return if the string is invalid and not strict

Returns: the Boolean value represented by bool_str or the default value if bool_str is invalid and strict is False.

Raises CommandError β€” if bool_str is an invalid Boolean string. So like, keep your booleans legal or catch hands πŸ’€

check_api_version_support(current_version: str | list[str], required_version: str) -> bool

Check if the current API version supports a required version.

Parameters:

  • current_version β€” Current API version being used (e.g. "1.112")
  • required_version β€” Minimum API version required (e.g. "1.112")

Returns: True if the current version meets the requirement, False otherwise. Also returns True if the version format is invalid (let the server decide). We love a delegation moment πŸ‘‘

check_empty_arg(arg: str, arg_descriptor: str) -> None

No description in the source β€” but there it is, untouched, exactly as written ✨

check_for_invalid_fields(fields: list[str] | None, valid_fields: list[str]) -> None

Check for invalid fields. The bouncer at the club of arguments πŸšͺ

Parameters:

  • fields β€” A list of fields specified by the user.
  • valid_fields β€” A list of valid fields.
Raises CommandError β€” if invalid fields were specified by the user. You're not on the list, babes πŸ’…

common_filters(marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, fields: list[str] | None = None, detail: bool = False, project: str | None = None, public: bool | None = None) -> list[str]

Generate common filters for any list request. One function to serve all the list girlies 🌸

Parameters:

  • marker β€” entity ID from which to start returning entities.
  • limit β€” maximum number of entities to return.
  • sort_key β€” field to use for sorting.
  • sort_dir β€” direction of sorting: 'asc' or 'desc'.
  • fields β€” a list with a specified set of fields of the resource to be returned.
  • detail β€” Boolean, True to return detailed information. This parameter can be used for resources which accept 'detail' as a URL parameter.

Returns: list of string filters.

common_params_for_list(args: ListCommandArgs, fields: list[str], field_labels: list[str]) -> dict[str, Any]

Generate the 'params' dict that is common for every 'list' command. Teamwork makes the dream work 🫢

Parameters:

  • args β€” arguments from command line.
  • fields β€” possible fields for sorting.
  • field_labels β€” possible field labels for sorting.

Returns: a dict with params to pass to the client method.

convert_list_props_to_comma_separated(data: dict[str, Any], props: list[str] | None = None) -> dict[str, Any]

Convert the list-type properties to comma-separated strings. Lists into vibes πŸ¦‹

Parameters:

  • data β€” the input dict object.
  • props β€” the properties whose values will be converted. Defaults to None to convert all list-type properties of the input.

Returns: the result dict instance.

format_hash(data: dict[str, Any] | None, prefix: str = '') -> str | None

No description in the source, so I'm not inventing one β€” signature only, bestie ✨

get_from_stdin</p> 🫢

ironicclient.common.utils.get_from_stdin(info_desc: str) -> str

Okay so this one is literally just "read stuff from stdin" β€” it's giving very demure, very mindful. ✨

Parameters

  • info_desc β€” a string description of the info you want (so it can tell you what it's asking for, slay)

Raises

  • InvalidAttribute if there was a problem reading from stdin 😭

Returns

  • the string that was read from stdin πŸ’–

get_json_data</p> πŸŽ€

ironicclient.common.utils.get_json_data(data: bytes) -> dict[str, Any] | list[Any] | None

Checks whether the binary data is JSON, and parses it if it is. vibe check on your bytes fr fr.

Parameters

  • data β€” raw bytes to parse (e.g. the response body)

Returns

  • the parsed dict or list if it's valid JSON, otherwise None

handle_json_arg</p> πŸ¦‹

ironicclient.common.utils.handle_json_arg(json_arg: str | None, info_desc: str) -> list[Any] | dict[str, Any] | None

Reads a JSON argument from stdin, a file, or a plain string. three ways to serve looks πŸ‘‘

Parameters

  • json_arg β€” may be a file name containing the JSON, a JSON string, or '-' which means "bestie read it from standard input"
  • info_desc β€” a string description of the desired information

Returns

  • a list or dictionary parsed from JSON, or None if json_arg is empty (like, e.g. after reading from stdin with no input β€” tragic but valid)

Raises

  • InvalidAttribute if the argument can't be parsed πŸ’€

handle_json_or_file_arg</p> 🌸

ironicclient.common.utils.handle_json_or_file_arg(json_arg: str) -> list[Any] | dict[str, Any]

Tries to read the JSON argument from a file or from a string. lowkey the same energy as above but it always gives you something back.

Parameters

  • json_arg β€” may be a file name containing the YAML or JSON, or a JSON string

Returns

  • a list or dictionary parsed from JSON

Raises

  • InvalidAttribute if the argument can't be parsed 😀

key_value_pairs_to_dict</p> πŸ“

ironicclient.common.utils.key_value_pairs_to_dict(key_value_pairs: list[str] | None) -> dict[str, Any]

Turns a list of key-value pairs into a dictionary. glow-up of the century honestly.

Parameters

  • key_value_pairs β€” a list of strings, and each string is in the form <key>=<value>

Returns

  • a dictionary, possibly empty (yes, empty dicts are still valid and we love them)

make_configdrive</p> 🧚

ironicclient.common.utils.make_configdrive(path: str) -> bytes

Makes the config drive file. arts and crafts but make it infrastructure ✨

Parameters

  • path β€” the directory containing the config drive files

Returns

  • a gzipped and base64 encoded configdrive string

poll</p> πŸ’…

ironicclient.common.utils.poll(timeout: int | float, poll_interval: int | float, poll_delay_function: Callable[[int | float], Any] | None, timeout_message: str | Callable[[], str]) -> Iterator[int]

No description in the docs β€” just the signature, sitting there, mysterious, main character energy. iykyk. πŸ”₯


split_and_deserialize</p> 🌈

ironicclient.common.utils.split_and_deserialize(string: str) -> tuple[str, Any]

Splits a string and tries to JSON-deserialize it.

So it takes a string in the KEY=VALUE format, splits it (using '=' as the separator), and tries to JSON-deserialize the VALUE. not me doing string surgery 🫢

Returns

  • a tuple of (key, value)

tempdir</p> ⭐

ironicclient.common.utils.tempdir(suffix: str | None = None, prefix: str | None = None, dir: str | None = None) -> Generator[str, None, None]

Another one with no description β€” just vibes and a generator. iconic honestly.


Module contents πŸ’œ

ironicclient.osc package πŸŽ€

Subpackages

ironicclient.osc.v1 package ✨

Submodules

ironicclient.osc.v1.baremetal_allocation module πŸ¦‹

class ironicclient.osc.v1.baremetal_allocation.CreateBaremetalAllocation(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne

Creates a new baremetal allocation. πŸŽ€ making a whole allocation, no big deal.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_allocation.CreateBaremetalAllocation (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_allocation.DeleteBaremetalAllocation(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command

Unregisters baremetal allocation(s). bye bestie πŸ’…

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_allocation.DeleteBaremetalAllocation (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." the returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_allocation.ListBaremetalAllocation(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister

Lists the baremetal allocations. πŸ‘‘

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_allocation.ListBaremetalAllocation (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” runs the command. Returns a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_allocation.SetBaremetalAllocation(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command

Sets baremetal allocation properties. glow-up time ⭐

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_allocation.SetBaremetalAllocation (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." the returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_allocation.ShowBaremetalAllocation(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne

Shows baremetal allocation details. the receipts, basically 🧾✨

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_allocation.ShowBaremetalAllocation (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_allocation.UnsetBaremetalAllocation(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command

Unsets baremetal allocation properties. undoing, but make it chic πŸ™ˆ

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_allocation.UnsetBaremetalAllocation (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." the returned value will be returned by the program.

ironicclient.osc.v1.baremetal_chassis module πŸŽ€

class ironicclient.osc.v1.baremetal_chassis.CreateBaremetalChassis(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne

Creates a new chassis. πŸ¦‹

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_chassis.CreateBaremetalChassis (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_chassis.DeleteBaremetalChassis(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command

Deletes a chassis. it's not personal, it's just cleanup πŸ’…

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_chassis.DeleteBaremetalChassis (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." the returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_chassis.ListBaremetalChassis(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister

Lists the chassis. all of them. every single one. πŸ‘‘

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_chassis.ListBaremetalChassis (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” runs the command. Returns a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_chassis.SetBaremetalChassis(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command

Sets chassis properties. ✨

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_chassis.SetBaremetalChassis (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." the returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_chassis.ShowBaremetalChassis(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne

Shows chassis details. πŸŽ€

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_chassis.ShowBaremetalChassis (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command.

Return a tuple containing the column names and an iterable containing the data to be listed. (yes, this is the same line you've seen like eight times now β€” the OSC command classes are very much copy my homework but change it slightly energy, and honestly? we respect the consistency πŸ’…)

class ironicclient.osc.v1.baremetal_chassis.UnsetBaremetalChassis(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command <#ironicclient.osc.command.Command>

Unset chassis properties. i.e. yeet the properties off a chassis, bestie 🫢

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser. that's it, that's the whole job ✨
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_chassis.UnsetBaremetalChassis (WARNING)> β€” the class logger, sitting at WARNING level, minding its own business πŸ’€
  • take_action(parsed_args: Namespace) -> None β€” Override to do something useful. The returned value will be returned by the program.

πŸ¦‹ ironicclient.osc.v1.baremetal_conductor module

class ironicclient.osc.v1.baremetal_conductor.ListBaremetalConductor(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister <#ironicclient.osc.command.Lister>

List baremetal conductors πŸ‘‘ (the whole roster, bestie)

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_conductor.ListBaremetalConductor (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed. same drill, every single time fr fr

class ironicclient.osc.v1.baremetal_conductor.ShowBaremetalConductor(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Show baremetal conductor details πŸ” the full dossier on one (1) conductor

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_conductor.ShowBaremetalConductor (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

🌸 ironicclient.osc.v1.baremetal_create module

class ironicclient.osc.v1.baremetal_create.CreateBaremetal(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command <#ironicclient.osc.command.Command>

Create resources from files. point it at a file, get resources β€” extremely giving "load the preset" energy πŸŽ€

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_create.CreateBaremetal (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” Override to do something useful. The returned value will be returned by the program.

🧚 ironicclient.osc.v1.baremetal_deploy_template module

class ironicclient.osc.v1.baremetal_deploy_template.CreateBaremetalDeployTemplate(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Create a new deploy template ✨ brand new template, just dropped

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_deploy_template.CreateBaremetalDeployTemplate (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed. (note the extra-tuple-y return type here β€” yes it's different from all the others, no we're not going to question it πŸ’€)

class ironicclient.osc.v1.baremetal_deploy_template.DeleteBaremetalDeployTemplate(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command <#ironicclient.osc.command.Command>

Delete deploy template(s). πŸ—‘οΈ plural, bestie β€” it'll take out more than one if you ask nicely

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_deploy_template.DeleteBaremetalDeployTemplate (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” Override to do something useful. The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_deploy_template.ListBaremetalDeployTemplate(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister <#ironicclient.osc.command.Lister>

List baremetal deploy templates. πŸ“‹

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_deploy_template.ListBaremetalDeployTemplate (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_deploy_template.SetBaremetalDeployTemplate(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command <#ironicclient.osc.command.Command>

Set baremetal deploy template properties. 🎯 poke the properties, make them yours

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_deploy_template.SetBaremetalDeployTemplate (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” Override to do something useful. The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_deploy_template.ShowBaremetalDeployTemplate(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Show baremetal deploy template details. πŸ”Ž the full tea on exactly one template

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_deploy_template.ShowBaremetalDeployTemplate (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_deploy_template.UnsetBaremetalDeployTemplate(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Command <#ironicclient.osc.command.Command>

Unset baremetal deploy template properties. πŸ™ˆ the opposite of Set, obviously β€” properties are leaving the chat

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_deploy_template.UnsetBaremetalDeployTemplate (WARNING)>
  • take_action(parsed_args: Namespace) -> None β€” Override to do something useful. The returned value will be returned by the program.

πŸ”₯ ironicclient.osc.v1.baremetal_driver module

class ironicclient.osc.v1.baremetal_driver.ListBaremetalDriver(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister <#ironicclient.osc.command.Lister>

List the enabled drivers. πŸ‘‘ the ones actually turned on, not the whole catalogue

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_driver.ListBaremetalDriver (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_driver.ListBaremetalDriverProperty(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister <#ironicclient.osc.command.Lister>

List the driver properties. 🧾

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_driver.ListBaremetalDriverProperty (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_driver.ListBaremetalDriverRaidProperty(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister <#ironicclient.osc.command.Lister>

List a driver's RAID logical disk properties. πŸ’½ very specific, very niche, very slay

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_driver.ListBaremetalDriverRaidProperty (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_driver.PassthruCallBaremetalDriver(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Call a vendor passthru method for a driver. πŸ“ž "passthru" is literally right there in the name β€” you're calling straight through to the vendor's own method, iykyk

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_driver.PassthruCallBaremetalDriver (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Return a tuple containing the column names and an iterable containing the data to be listed.

class ironicclient.osc.v1.baremetal_driver.PassthruListBaremetalDriver(app: App, app_args: Namespace | None, cmd_name: str | None = None)

  • Bases: Lister <#ironicclient.osc.command.Lister>

List available vendor passthru methods for a driver. πŸ—‚οΈ the menu of what you're allowed to call

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_driver.PassthruListBaremetalDriver (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” runs the command, bestie πŸ’… returns a tuple with the column names plus an iterable holding all the data to be listed.

🌸 ironicclient.osc.v1.baremetal_inspection_rule module

Okay so this module is literally the inspection-rules era β€” create 'em, delete 'em, list 'em, set 'em, show 'em, unset 'em. Full cycle, no notes ✨

  • class ironicclient.osc.v1.baremetal_inspection_rule.CreateBaremetalInspectionRule(app: App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ShowOne <#ironicclient.osc.command.ShowOne>. Does exactly what it says on the tin: Create a new rule πŸŽ€
    • get_parser(prog_name: str) -> ArgumentParser β€” hands you back an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_inspection_rule.CreateBaremetalInspectionRule (WARNING)> β€” the class's very own logger, living at WARNING level.
    • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple with the column names and an iterable containing the data to be listed.
  • class ironicclient.osc.v1.baremetal_inspection_rule.DeleteBaremetalInspectionRule(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Delete rule(s). plural, so go off πŸ‘‘
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_inspection_rule.DeleteBaremetalInspectionRule (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” described as "Override to do something useful", and the returned value will be returned by the program.
  • class ironicclient.osc.v1.baremetal_inspection_rule.ListBaremetalInspectionRule(app: App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Lister <#ironicclient.osc.command.Lister>. List baremetal rules. the main character of scrollable output πŸ¦‹
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_inspection_rule.ListBaremetalInspectionRule (WARNING)>
    • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” runs the command. Returns a tuple of column names and an iterable containing the data to be listed.
  • class ironicclient.osc.v1.baremetal_inspection_rule.SetBaremetalInspectionRule(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Set baremetal rule properties. glow-up time πŸ’…
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_inspection_rule.SetBaremetalInspectionRule (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful"; the returned value will be returned by the program.
  • class ironicclient.osc.v1.baremetal_inspection_rule.ShowBaremetalInspectionRule(app: App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ShowOne <#ironicclient.osc.command.ShowOne>. Show baremetal rule details. the receipts, fr fr πŸ™ˆ
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_inspection_rule.ShowBaremetalInspectionRule (WARNING)>
    • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple containing the column names and an iterable with the data to be listed.
  • class ironicclient.osc.v1.baremetal_inspection_rule.UnsetBaremetalInspectionRule(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Unset baremetal rule properties. undoing the glow-up, iconic behaviour honestly 🫢
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_inspection_rule.UnsetBaremetalInspectionRule (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful"; the returned value will be returned by the program.

πŸ’œ ironicclient.osc.v1.baremetal_node module

And now the big one β€” nodes!! This module is lowkey stacked, so like, buckle up bestie 🌈

  • class ironicclient.osc.v1.baremetal_node.AbortBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ProvisionStateBaremetalNode. Set provision state of baremetal node to 'abort' β€” stop right there, we're done 😭
    • PROVISION_STATE: str = 'abort'
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.AbortBaremetalNode (WARNING)>
  • class ironicclient.osc.v1.baremetal_node.AddTraitBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Add traits to a node. giving nodes personality traits, literally πŸŽ€
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.AddTraitBaremetalNode (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful"; the returned value will be returned by the program.
  • class ironicclient.osc.v1.baremetal_node.AdoptBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ProvisionStateWithWait. Set provision state of baremetal node to 'adopt' β€” we're taking this node in, no cap 🫢
    • PROVISION_STATE: str = 'adopt'
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.AdoptBaremetalNode (WARNING)>
  • class ironicclient.osc.v1.baremetal_node.BIOSSettingShowBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ShowOne <#ironicclient.osc.command.ShowOne>. Show a specific BIOS setting for a node. just one setting, we're being specific today ✨
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.BIOSSettingShowBaremetalNode (WARNING)>
    • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple with the column names and an iterable containing the data to be listed.
  • class ironicclient.osc.v1.baremetal_node.BootdeviceSetBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Set the boot device for a node πŸ’…
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.BootdeviceSetBaremetalNode (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful"; the returned value will be returned by the program.
  • class ironicclient.osc.v1.baremetal_node.BootdeviceShowBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ShowOne <#ironicclient.osc.command.ShowOne>. Show the boot device information for a node πŸ‘€
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.BootdeviceShowBaremetalNode (WARNING)>
    • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Returns a tuple with the column names and an iterable containing the data to be listed.
  • class ironicclient.osc.v1.baremetal_node.BootmodeSetBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Set the boot mode for the next baremetal node deployment β€” setting the vibe for the next deployment, forward thinking queen πŸ”₯
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.BootmodeSetBaremetalNode (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful"; the returned value will be returned by the program.
  • class ironicclient.osc.v1.baremetal_node.CleanBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: ProvisionStateWithWait. Set provision state of baremetal node to 'clean' β€” self-care era for your hardware 🧚
    • PROVISION_STATE: str = 'clean'
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.CleanBaremetalNode (WARNING)>
  • class ironicclient.osc.v1.baremetal_node.ConsoleDisableBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>. Disable console access for a node β€” closing the door, respectfully πŸ’€
    • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
    • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ConsoleDisableBaremetalNode (WARNING)>
    • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful"; the returned value will be returned by the program.
  • class ironicclient.osc.v1.baremetal_node.ConsoleEnableBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) β€” bases: Command <#ironicclient.osc.command.Command>

So like, this class enables console access for a node, and here's the rest of its bag of tricks:

get_parser(prog_name: str) -> ArgumentParser : returns an argparse.ArgumentParser bestie, that's literally all it does πŸ’…

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ConsoleEnableBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> None : "Override to do something useful." And like, the returned value will be returned by the program. That's the whole deal ✨


πŸŽ€ class ironicclient.osc.v1.baremetal_node.ConsoleShowBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) πŸŽ€

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Show console information for a node β€” the receipts, the tea β˜•πŸ‘€

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ConsoleShowBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


🌸 class ironicclient.osc.v1.baremetal_node.CreateBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) 🌸

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Register a new node with the baremetal service β€” new node just dropped, main character energy fr fr πŸ‘‘

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.CreateBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


πŸ¦‹ class ironicclient.osc.v1.baremetal_node.DeleteBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) πŸ¦‹

Bases: Command <#ironicclient.osc.command.Command>

Unregister baremetal node(s) β€” yeah we're evicting them, it's giving blocklist πŸ’€

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.DeleteBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> None : Override to do something useful. : The returned value will be returned by the program.


πŸ’œ class ironicclient.osc.v1.baremetal_node.DeployBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) πŸ’œ

Bases: ProvisionStateWithWait

Set provision state of baremetal node to 'deploy' β€” time to actually ship it πŸš€

PROVISION_STATE: str = 'active'

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.DeployBaremetalNode (WARNING)>


πŸ“ class ironicclient.osc.v1.baremetal_node.InjectNmiBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) πŸ“

Bases: Command <#ironicclient.osc.command.Command>

Inject NMI to baremetal node β€” yeah, that NMI, it's going straight in 😭

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.InjectNmiBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> None : Override to do something useful. : The returned value will be returned by the program.


πŸ” class ironicclient.osc.v1.baremetal_node.InspectBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) πŸ”

Bases: ProvisionStateWithWait

Set provision state of baremetal node to 'inspect' β€” vibe check on the hardware, no cap 🧚

PROVISION_STATE: str = 'inspect'

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.InspectBaremetalNode (WARNING)>


⭐ class ironicclient.osc.v1.baremetal_node.ListBIOSSettingBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) ⭐

Bases: Lister <#ironicclient.osc.command.Lister>

List a node's BIOS settings. Like a little firmware show-and-tell πŸŽ€

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ListBIOSSettingBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


🌈 class ironicclient.osc.v1.baremetal_node.ListBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) 🌈

Bases: Lister <#ironicclient.osc.command.Lister>

List baremetal nodes β€” the full roster, everybody say hi πŸ‘‹

PROVISION_STATES: list[str] = ['active', 'deleted', 'rebuild', 'inspect', 'provide', 'manage', 'clean', 'adopt', 'abort']

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ListBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


πŸ’– class ironicclient.osc.v1.baremetal_node.ListFirmwareComponentBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) πŸ’–

Bases: Lister <#ironicclient.osc.command.Lister>

List all Firmware Components of a node β€” every lil component getting its moment ✨

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ListFirmwareComponentBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


🫢 class ironicclient.osc.v1.baremetal_node.ListTraitsBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None) 🫢

Bases: Lister <#ironicclient.osc.command.Lister>

List a node's traits. It's giving personality profile πŸ¦‹

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ListTraitsBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


🧰 class ironicclient.osc.v1.baremetal_node.MaintenanceSetBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) 🧰

Bases: Command <#ironicclient.osc.command.Command>

Set baremetal node to maintenance mode β€” going offline, do not perceive me πŸ™ˆ

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.MaintenanceSetBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> None : Override to do something useful. : The returned value will be returned by the program.


πŸ¦‹ class ironicclient.osc.v1.baremetal_node.MaintenanceUnsetBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) πŸ¦‹

Bases: Command <#ironicclient.osc.command.Command>

Unset baremetal node from maintenance mode β€” she's back online and thriving πŸ’…

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.MaintenanceUnsetBaremetalNode (WARNING)>

take_action(parsed_args: Namespace) -> None : Override to do something useful. : The returned value will be returned by the program.


πŸ‘‘ class ironicclient.osc.v1.baremetal_node.ManageBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None) πŸ‘‘

Bases: ProvisionStateWithWait

Set provision state of baremetal node to 'manage' β€” taking the wheel πŸŽ€

PROVISION_STATE: str = 'manage'

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ManageBaremetalNode (WARNING)>


πŸŽ€ class ironicclient.osc.v1.baremetal_node.NodeChildrenList(app: App, app_args: Namespace | None, cmd_name: str | None = None) πŸŽ€

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Get a list of nodes associated as children. The nepo babies, basically 😭

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.NodeChildrenList (WARNING)>

take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


πŸ“œ class ironicclient.osc.v1.baremetal_node.NodeHistoryEventGet(app: App, app_args: Namespace | None, cmd_name: str | None = None) πŸ“œ

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

Get history event for a baremetal node. Receipts? Pulled. 🧾

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.NodeHistoryEventGet (WARNING)>

take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] : Run command. : Return a tuple containing the column names and an iterable containing the data to be listed.


🌸 class ironicclient.osc.v1.baremetal_node.NodeHistoryList(app: App, app_args: Namespace | None, cmd_name: str | None = None) 🌸

Bases: Lister <#ironicclient.osc.command.Lister>

Get history events for a baremetal node β€” the whole lore drop, chronological bestie ⏳

get_parser(prog_name: str) -> ArgumentParser : Return an argparse.ArgumentParser.

log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.NodeHistoryList (WARNING)>

take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] : Run command.

Return a tuple containing the column names and an iterable containing the data to be listed. (Yeah, the take_action description carries on past this part β€” stay tuned πŸ’–)

…and that take_action hands back a tuple containing the column names and an iterable containing the data to be listed. πŸ’…


🧸 class ironicclient.osc.v1.baremetal_node.NodeInventorySave(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Bestie, this one grabs the hardware inventory of a node β€” shoutout JSON format β€” or saves it straight to a file. Obsessed.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser. That's literally it.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.NodeInventorySave (WARNING)> β€” the logger, sitting at WARNING level, minding its business.
  • take_action(parsed_args: Namespace) -> None β€” the docs say "override to do something useful" 😭. And the returned value will be returned by the program, fr fr.

🧸 class ironicclient.osc.v1.baremetal_node.PassthruCallBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Calls a vendor passthru method for a node. vendor passthru is such a vibe, iykyk.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.PassthruCallBaremetalNode (WARNING)> β€” logger, WARNING, iconic.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.PassthruListBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Lister

Lists the vendor passthru methods for a node. also notice the arg here is just App, not _app.App β€” not me noticing that πŸ™ˆ.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.PassthruListBaremetalNode (WARNING)> β€” logger at WARNING.
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” runs the command. Return a tuple containing the column names and an iterable containing the data to be listed. ✨

🧸 class ironicclient.osc.v1.baremetal_node.PowerBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

The base power state class, for setting the power of a node. main character base class energy πŸ‘‘

  • POWER_STATE: str β€” declared, no value assigned. she's a placeholder, she contains multitudes.
  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.PowerBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.PowerOffBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: PowerBaremetalNode

Powers off a node. bye bestie πŸ’€

  • POWER_STATE: str = 'off' β€” yeah, she's 'off'.
  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.PowerOffBaremetalNode (WARNING)> β€” logger, WARNING.

🧸 class ironicclient.osc.v1.baremetal_node.PowerOnBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: PowerBaremetalNode

Powers a node on. wake up king 🌈

  • POWER_STATE: str = 'on' β€” 'on', periodt.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.PowerOnBaremetalNode (WARNING)> β€” logger, WARNING. (and no take_action of her own listed here β€” she inherits the vibe.)

🧸 class ironicclient.osc.v1.baremetal_node.ProvideBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ProvisionStateWithWait

Sets the provision state of a baremetal node to 'provide'.

  • PROVISION_STATE: str = 'provide' β€” literally 'provide'.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ProvideBaremetalNode (WARNING)> β€” logger, WARNING.

🧸 class ironicclient.osc.v1.baremetal_node.ProvisionStateBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

The base provision state class. the blueprint, the moment, the icon πŸŽ€

  • PROVISION_STATE: str β€” declared, unset, mysterious.
  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ProvisionStateBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.ProvisionStateWithWait(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ProvisionStateBaremetalNode

Provision state class that adds the --wait flag. she waits πŸ’…

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ProvisionStateWithWait (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.RebootBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Reboots a baremetal node. turn it off and on again, but make it fashion πŸ”₯

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.RebootBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.RebuildBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ProvisionStateWithWait

Sets the provision state of a baremetal node to 'rebuild'. glow-up via reinstall ✨

  • PROVISION_STATE: str = 'rebuild' β€” literally 'rebuild'.
  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.RebuildBaremetalNode (WARNING)> β€” logger, WARNING.

🧸 class ironicclient.osc.v1.baremetal_node.RemoveTraitBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Removes trait(s) from a node. one trait, many traits, all of them, gone πŸ¦‹

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.RemoveTraitBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.RescueBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ProvisionStateWithWait

Sets the provision state of a baremetal node to 'rescue'. she's here to save you 🫢

  • PROVISION_STATE: str = 'rescue' β€” literally 'rescue'.
  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.RescueBaremetalNode (WARNING)> β€” logger, WARNING.

🧸 class ironicclient.osc.v1.baremetal_node.SecurebootOffBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Turns secure boot off. no cap, it just turns it off.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.SecurebootOffBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.SecurebootOnBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Turns secure boot on. the sequel, and she ate πŸ’…

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.SecurebootOnBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.ServiceBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ProvisionStateWithWait

Sets the provision state of a baremetal node to 'service'. at your service πŸŽ€

  • PROVISION_STATE: str = 'service' β€” literally 'service'.
  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ServiceBaremetalNode (WARNING)> β€” logger, WARNING.

🧸 class ironicclient.osc.v1.baremetal_node.SetBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Sets baremetal properties. setting the vibe check parameters 🌸

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.SetBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> None β€” "override to do something useful." The returned value will be returned by the program.

🧸 class ironicclient.osc.v1.baremetal_node.ShowBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne

Shows baremetal node details. the reveal, the moment, the details πŸ‘‘

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ShowBaremetalNode (WARNING)> β€” logger, WARNING.
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command. Return a tuple containing the column names and an iterable containing the data to be listed. (this one's a tuple of tuples, note the difference bestie 🫢)

UndeployBaremetalNode

ironicclient.osc.v1.baremetal_node.UndeployBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: ProvisionStateWithWait
  • What it does: sets the provision state of a baremetal node to 'deleted' πŸ—‘οΈ
  • PROVISION_STATE : str = 'deleted'
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.UndeployBaremetalNode (WARNING)>

UnholdBaremetalNode

ironicclient.osc.v1.baremetal_node.UnholdBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: ProvisionStateBaremetalNode
  • What it does: sets the provision state of a baremetal node to 'unhold' 🫢
  • PROVISION_STATE : str = 'unhold'
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.UnholdBaremetalNode (WARNING)>

UnrescueBaremetalNode

ironicclient.osc.v1.baremetal_node.UnrescueBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: ProvisionStateWithWait
  • What it does: sets the provision state of a baremetal node to 'unrescue' πŸš‘
  • PROVISION_STATE : str = 'unrescue'
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.UnrescueBaremetalNode (WARNING)>

UnsetBaremetalNode

ironicclient.osc.v1.baremetal_node.UnsetBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command (the one and only ironicclient.osc.command.Command) πŸ’…
  • What it does: unset baremetal properties. like, bye-bye properties ✨
  • get_parser(prog_name: str) -> ArgumentParser
    • returns a whole argparse.ArgumentParser. iconic behavior honestly.
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.UnsetBaremetalNode (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” which is literally what the docs say bestie 😭
    • the returned value gets returned by the program, so whatever you hand back is the main character now.

ValidateBaremetalNode

ironicclient.osc.v1.baremetal_node.ValidateBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Lister (aka ironicclient.osc.command.Lister)
  • What it does: validates a node's driver interfaces. the vibe check for your drivers fr fr βœ…
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser, as one does
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.ValidateBaremetalNode (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]]
    • "Run command."
    • returns a tuple containing the column names and an iterable containing the data to be listed. structure queen πŸ‘‘

VifAttachBaremetalNode

ironicclient.osc.v1.baremetal_node.VifAttachBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • What it does: attaches a VIF to a given node πŸ”Œ
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.VifAttachBaremetalNode (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” the returned value will be returned by the program, no cap

VifDetachBaremetalNode

ironicclient.osc.v1.baremetal_node.VifDetachBaremetalNode(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • What it does: detaches a VIF from a given node 🫳
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.VifDetachBaremetalNode (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” and yeah, whatever it returns gets returned by the program

VifListBaremetalNode

ironicclient.osc.v1.baremetal_node.VifListBaremetalNode(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Lister β†’ ironicclient.osc.command.Lister
  • What it does: shows the attached VIFs for a node πŸ‘€
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_node.VifListBaremetalNode (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]]
    • "Run command."
    • returns a tuple of the column names plus an iterable holding the data to be listed. the classic Lister combo πŸŽ€

🌈 ironicclient.osc.v1.baremetal_port module 🌈

CreateBaremetalPort

ironicclient.osc.v1.baremetal_port.CreateBaremetalPort(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: ShowOne β†’ ironicclient.osc.command.ShowOne
  • What it does: creates a new port ✨ (a baremetal one, obviously)
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_port.CreateBaremetalPort (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]]
    • "Run command."
    • returns a tuple containing the column names and an iterable containing the data to be listed

DeleteBaremetalPort

ironicclient.osc.v1.baremetal_port.DeleteBaremetalPort(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • What it does: deletes port(s). plural, so you can go off and delete a bunch πŸ’€
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_port.DeleteBaremetalPort (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” returned value gets returned by the program, iykyk

ListBaremetalPort

ironicclient.osc.v1.baremetal_port.ListBaremetalPort(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Lister β†’ ironicclient.osc.command.Lister
  • What it does: lists baremetal ports πŸ“‹
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_port.ListBaremetalPort (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]]
    • "Run command."
    • returns a tuple containing the column names and an iterable containing the data to be listed

SetBaremetalPort

ironicclient.osc.v1.baremetal_port.SetBaremetalPort(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • What it does: sets baremetal port properties πŸ› οΈ
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_port.SetBaremetalPort (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” and the returned value will be returned by the program

ShowBaremetalPort

ironicclient.osc.v1.baremetal_port.ShowBaremetalPort(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: ShowOne β†’ ironicclient.osc.command.ShowOne
  • What it does: shows baremetal port details πŸ” the full tea
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_port.ShowBaremetalPort (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]]
    • "Run command."
    • returns a tuple containing the column names and an iterable containing the data to be listed

UnsetBaremetalPort

ironicclient.osc.v1.baremetal_port.UnsetBaremetalPort(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • What it does: unsets baremetal port properties 🧹
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_port.UnsetBaremetalPort (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” returned value goes right back out of the program

πŸ¦‹ ironicclient.osc.v1.baremetal_portgroup module πŸ¦‹

CreateBaremetalPortGroup

ironicclient.osc.v1.baremetal_portgroup.CreateBaremetalPortGroup(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: ShowOne β†’ ironicclient.osc.command.ShowOne
  • What it does: creates a new baremetal port group β€” a whole squad of ports, highkey iconic πŸ‘‘
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_portgroup.CreateBaremetalPortGroup (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]]
    • "Run command."
    • returns a tuple containing the column names and an iterable containing the data to be listed

DeleteBaremetalPortGroup

ironicclient.osc.v1.baremetal_portgroup.DeleteBaremetalPortGroup(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • What it does: unregisters baremetal port group(s). yes, plural, go off 😌
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_portgroup.DeleteBaremetalPortGroup (WARNING)>
  • take_action(parsed_args: Namespace) -> None
    • "Override to do something useful." β€” and the returned value will be returned by the program, fr fr

ListBaremetalPortGroup

ironicclient.osc.v1.baremetal_portgroup.ListBaremetalPortGroup(app: App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Lister β†’ ironicclient.osc.command.Lister
  • What it does: lists baremetal port groups πŸ“
  • get_parser(prog_name: str) -> ArgumentParser
    • returns an argparse.ArgumentParser
  • log : logging.Logger = <Logger ironicclient.osc.v1.baremetal_portgroup.ListBaremetalPortGroup (WARNING)>
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]]
    • "Run command."
    • returns a tuple containing the column names and an iterable containing the data to be listed

SetBaremetalPortGroup

ironicclient.osc.v1.baremetal_portgroup.SetBaremetalPortGroup(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)
  • Bases: Command β†’ ironicclient.osc.command.Command
  • take_action(parsed_args: Namespace) -> None β€” literally just sets baremetal port group properties. That's the whole vibe.
  • get_parser(prog_name: str) -> ArgumentParser β€” hands you back an argparse.ArgumentParser, bestie. That's it, that's the function πŸ’…
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_portgroup.SetBaremetalPortGroup (WARNING)> β€” yep, the logger, living at that dotted path, level WARNING 🫢
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." β€” and the returned value gets returned by the program. Iconic boilerplate, no notes.

class ironicclient.osc.v1.baremetal_portgroup.ShowBaremetalPortGroup(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne

✨ Show baremetal port group details. That's the whole assignment, and it ate. πŸ‘‘

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_portgroup.ShowBaremetalPortGroup (WARNING)> β€” your trusted WARNING-level logger, fr fr.
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” Run command. Returns a tuple with the column names and an iterable holding the data to be listed. πŸŽ€

class ironicclient.osc.v1.baremetal_portgroup.UnsetBaremetalPortGroup(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Unset baremetal port group properties. The undoing of the doing, if you will. πŸ¦‹

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_portgroup.UnsetBaremetalPortGroup (WARNING)> β€” same energy, WARNING level, that exact dotted name.
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value gets returned by the program. Lowkey the most repeated sentence in this whole page and I respect the consistency 😭

🌈 ironicclient.osc.v1.baremetal_runbook module 🌈

Okay this whole module is runbook-coded and it's giving main character energy. Let's go one by one, bestie.

class ironicclient.osc.v1.baremetal_runbook.AddTraitBaremetalRunbook(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Add traits to a runbook. Simple, clean, slays. ✨

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log = <Logger ironicclient.osc.v1.baremetal_runbook.AddTraitBaremetalRunbook (WARNING)> β€” note: no type annotation on this one, just the plain assignment. Keeping it exactly as it is πŸ’…
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_runbook.CreateBaremetalRunbook(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne

Create a new runbook. No period on that docstring either β€” character for character, bestie πŸŽ€

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_runbook.CreateBaremetalRunbook (WARNING)> β€” the WARNING-level logger, back at it again.
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” Run command. Returns a tuple of the column names plus an iterable containing the data to be listed. 🫢

class ironicclient.osc.v1.baremetal_runbook.DeleteBaremetalRunbook(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Delete runbook(s). Yes, with the parenthetical "(s)" β€” plural possible, don't come for me, it's what the page says πŸ’€

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_runbook.DeleteBaremetalRunbook (WARNING)> β€” you know the drill by now.
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_runbook.ListBaremetalRunbook(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Lister

List baremetal runbooks. A whole list of them, no cap. πŸ“‹

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_runbook.ListBaremetalRunbook (WARNING)> β€” <Logger ... (WARNING)>, unfailingly.
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Returns a tuple containing the column names and an iterable containing the data to be listed. 🌸

class ironicclient.osc.v1.baremetal_runbook.ListTraitsBaremetalRunbook(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Lister

List a runbook's traits. Just the traits, bestie, nothing extra. πŸ”₯

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log = <Logger ironicclient.osc.v1.baremetal_runbook.ListTraitsBaremetalRunbook (WARNING)> β€” again, plain assignment, no annotation. Obsessed with the inconsistency ngl πŸ™ˆ
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], list[list[str]]] β€” Run command. Returns a tuple containing the column names and an iterable containing the data to be listed. Note the return type here is list[list[str]] and not the usual Iterable[Any] β€” that's intentional, keep it 🧚

class ironicclient.osc.v1.baremetal_runbook.RemoveTraitBaremetalRunbook(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Remove trait(s) from a runbook. The inverse of AddTrait, if you're keeping score πŸ’…

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log = <Logger ironicclient.osc.v1.baremetal_runbook.RemoveTraitBaremetalRunbook (WARNING)> β€” plain assignment, no type hint. As written.
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_runbook.SetBaremetalRunbook(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Set baremetal runbook properties. πŸ’œ

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_runbook.SetBaremetalRunbook (WARNING)> β€” annotated this time. We love a plot twist.
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_runbook.ShowBaremetalRunbook(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne

Show baremetal runbook details. The spotlight moment. ⭐

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_runbook.ShowBaremetalRunbook (WARNING)> β€” WARNING level forever and always.
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” Run command. Returns a tuple containing the column names and an iterable containing the data to be listed. πŸŽ€

class ironicclient.osc.v1.baremetal_runbook.UnsetBaremetalRunbook(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Unset baremetal runbook properties. Closing the loop πŸ¦‹

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_runbook.UnsetBaremetalRunbook (WARNING)> β€” yes, that exact logger path, WARNING and all.
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value will be returned by the program. Periodt.

πŸ¦‹ ironicclient.osc.v1.baremetal_shard module πŸ¦‹

One class in this module and she's serving efficiency.

class ironicclient.osc.v1.baremetal_shard.ListBaremetalShard(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Lister

List baremetal shards. That's the whole thing. Slay. ✨

  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_shard.ListBaremetalShard (WARNING)> β€” heads up: this class does not list a get_parser method in this page, so don't go looking for one, bestie. Just the log and the action.
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Returns a tuple containing the column names and an iterable containing the data to be listed. πŸ’–

🧚 ironicclient.osc.v1.baremetal_volume_connector module 🧚

Volume connectors, but make it a whole module. Three classes, all absolute icons.

class ironicclient.osc.v1.baremetal_volume_connector.CreateBaremetalVolumeConnector(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne

Create a new baremetal volume connector. πŸŽ€

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_connector.CreateBaremetalVolumeConnector (WARNING)> β€” yes, that is a very long dotted path. Type it out anyway. No shortcuts πŸ’…
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” Run command. Returns a tuple containing the column names and an iterable containing the data to be listed. 🫢

class ironicclient.osc.v1.baremetal_volume_connector.DeleteBaremetalVolumeConnector(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

Unregister baremetal volume connector(s). Note the wording β€” "Unregister", not "Delete", in the docstring. Keep it exactly πŸ’€

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_connector.DeleteBaremetalVolumeConnector (WARNING)> β€” the WARNING-level logger, same long path, no cap.
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." The returned value will be returned by the program.

class ironicclient.osc.v1.baremetal_volume_connector.ListBaremetalVolumeConnector(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Lister

List baremetal volume connectors. All of them, lined up, vibing. 🌈

  • get_parser(prog_name: str) -> ArgumentParser β€” Return an argparse.ArgumentParser.
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_connector.ListBaremetalVolumeConnector (WARNING)> β€” that exact path, that exact level.
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” Run command. Returns a tuple containing the column names and an iterable containing the data to be listed. πŸ”₯

class ironicclient.osc.v1.baremetal_volume_connector.SetBaremetalVolumeConnector(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command <#ironicclient.osc.command.Command>

okay so this one's whole personality is: set baremetal volume connector properties πŸ’… that's the gig, that's the assignment, no notes.

  • get_parser(prog_name: str) -> ArgumentParser β€” literally just hands you back an argparse.ArgumentParser, no cap 🫢
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_connector.SetBaremetalVolumeConnector (WARNING)> β€” the logger, pre-baked, sitting pretty at WARNING level ✨
  • take_action(parsed_args: Namespace) -> None β€” docstring says "Override to do something useful." and then "The returned value will be returned by the program." πŸŽ€ it's giving "fill in the blank, bestie" β€” writing this one is on you

class ironicclient.osc.v1.baremetal_volume_connector.ShowBaremetalVolumeConnector(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

showing off baremetal volume connector details 🌸 main character behavior, honestly.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser πŸ’œ
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_connector.ShowBaremetalVolumeConnector (WARNING)> β€” yup, the WARNING-level logger, iconic as ever
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command πŸ”₯ returns a tuple with the column names and an iterable holding the data to be listed. two-for-one deal, we love to see it

class ironicclient.osc.v1.baremetal_volume_connector.UnsetBaremetalVolumeConnector(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command <#ironicclient.osc.command.Command>

the opposite-girlie of Set: unset baremetal volume connector properties πŸ™ˆ

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser, periodt
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_connector.UnsetBaremetalVolumeConnector (WARNING)> β€” logger, WARNING, you know the drill ⭐
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." / "The returned value will be returned by the program." πŸ¦‹ same energy as its sibling, go make it do the thing

ironicclient.osc.v1.baremetal_volume_target module

class ironicclient.osc.v1.baremetal_volume_target.CreateBaremetalVolumeTarget(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

creating a brand-new baremetal volume target ✨ new target, who dis.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser 🫢
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_target.CreateBaremetalVolumeTarget (WARNING)> β€” the logger of record, WARNING level, slaying quietly
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command, hands back a tuple with the column names plus an iterable of the data to be listed πŸ’–

class ironicclient.osc.v1.baremetal_volume_target.DeleteBaremetalVolumeTarget(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command <#ironicclient.osc.command.Command>

unregistering baremetal volume target(s) πŸ’€ note the (s) β€” it can be plural, bestie, handle with care.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser 🌈
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_target.DeleteBaremetalVolumeTarget (WARNING)> β€” logger, WARNING, present and accounted for
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." and yes, "The returned value will be returned by the program." πŸŽ€

class ironicclient.osc.v1.baremetal_volume_target.ListBaremetalVolumeTarget(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Lister <#ironicclient.osc.command.Lister>

listing out baremetal volume targets, one after another πŸ“‹ lowkey satisfying.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser πŸ’œ
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_target.ListBaremetalVolumeTarget (WARNING)> β€” the logger, WARNING, forever iconic
  • take_action(parsed_args: Namespace) -> tuple[Sequence[str], Iterable[Any]] β€” runs the command πŸ”₯ returns a tuple containing the column names and an iterable containing the data to be listed

class ironicclient.osc.v1.baremetal_volume_target.SetBaremetalVolumeTarget(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command <#ironicclient.osc.command.Command>

setting baremetal volume target properties πŸŽ€ same job as before, different resource, iykyk.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser ⭐
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_target.SetBaremetalVolumeTarget (WARNING)> β€” logger at WARNING, no thoughts just vibes
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." / "The returned value will be returned by the program." πŸ¦‹

class ironicclient.osc.v1.baremetal_volume_target.ShowBaremetalVolumeTarget(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: ShowOne <#ironicclient.osc.command.ShowOne>

showing baremetal volume target details 🌸 the receipts, essentially.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser 🫢
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_target.ShowBaremetalVolumeTarget (WARNING)> β€” logger, WARNING, accounted for
  • take_action(parsed_args: Namespace) -> tuple[tuple[str, ...], tuple[Any, ...]] β€” runs the command, returns a tuple containing the column names and an iterable containing the data to be listed πŸ’…

class ironicclient.osc.v1.baremetal_volume_target.UnsetBaremetalVolumeTarget(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command <#ironicclient.osc.command.Command>

unsetting baremetal volume target properties 🧚 the un-set, the un-slay, the un-everything.

  • get_parser(prog_name: str) -> ArgumentParser β€” returns an argparse.ArgumentParser 🌈
  • log: logging.Logger = <Logger ironicclient.osc.v1.baremetal_volume_target.UnsetBaremetalVolumeTarget (WARNING)> β€” logger, WARNING, chef's kiss
  • take_action(parsed_args: Namespace) -> None β€” "Override to do something useful." and "The returned value will be returned by the program." πŸ’œ

Module contents

Submodules

ironicclient.osc.command module

Typed base command classes for ironicclient OSC commands. πŸŽ€

okay so this is the whole point: these subclass osc-lib's command classes and annotate app so that self.app.client_manager.baremetal is statically known to be ironicclient.v1.client.Client <#ironicclient.v1.client.Client>, which removes the need for # type: ignore[attr-defined] everywhere across the command implementations 😭 literally deleting busywork.

See <https://review.opendev.org/c/openstack/python-openstackclient/+/970681> for the equivalent pattern in python-openstackclient πŸ‘‘


class ironicclient.osc.command.Command(app: _app.App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command

  • app: _App β€” the annotated app attribute, typed and everything ✨
  • log = <Logger ironicclient.osc.command.Command (WARNING)> β€” a WARNING-level logger, just sitting there

class ironicclient.osc.command.Lister(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command, Lister

  • log = <Logger ironicclient.osc.command.Lister (WARNING)> β€” logger, WARNING, as promised πŸ’…

class ironicclient.osc.command.ShowOne(app: App, app_args: Namespace | None, cmd_name: str | None = None)

Bases: Command, ShowOne

  • log = <Logger ironicclient.osc.command.ShowOne (WARNING)> β€” logger, WARNING, and that's the whole class body bestie 🫢

ironicclient.osc.plugin module

OpenStackClient plugin for Bare Metal service. πŸ¦‹

class ironicclient.osc.plugin.ReplaceLatestVersion(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None, deprecated=False)

Bases: Action

Replaces the latest keyword by the last known version 🌟

the lore: OSC cannot accept the literal "latest" as a supported API version, because it breaks the major version detection (OSC tries to load configuration options from the setuptools entrypoint openstack.baremetal.vlatest). So this action swaps "latest" out for the latest known version, and sets the global OS_BAREMETAL_API_LATEST flag appropriately πŸ”₯ icon behavior honestly.


  • build_option_parser(parser: ArgumentParser) -> ArgumentParser β€” hook to add global options πŸŽ€
  • make_client(instance: ClientManager) -> Client <#ironicclient.v1.client.Client> β€” returns a baremetal service client ✨ that's literally it, that's the function

Module contents

ironicclient.v1 package

Submodules

ironicclient.v1.allocation module

class ironicclient.osc.v1... β†’ sorry bestie, actual one: ironicclient.v1.allocation.Allocation(manager: ManagerProtocol <#ironicclient.common.apiclient.base.ManagerProtocol>, info: dict[str, Any], loaded: bool = False)

Bases: Resource <#ironicclient.common.base.Resource>

(pink flag: no body text in the original here, so no lore to spill β€” it's just the class declaration, take it as-is πŸ’…)


class ironicclient.v1.allocation.AllocationManager(api: SessionClient <#ironicclient.common.http.SessionClient>)

Bases: CreateManager <#ironicclient.common.base.CreateManager>[Allocation]

  • delete(allocation_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None β€” deletes the Allocation πŸ’€

Parameters:

  • allocation_id β€” the UUID or name of an allocation
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. if you don't specify it, the client's default is used
  • global_request_id β€” string containing the global request ID header value (in the form "req-<UUID>") to use for the request
  • get(allocation_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource <#ironicclient.common.base.Resource> | None β€” gets an allocation with the specified identifier 🌸

Parameters:

  • allocation_id β€” the UUID or name of an allocation
  • fields β€” optional, a list with a specified set of fields of the resource to be returned. can not be used when 'detail' is set 🫢
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. if you don't specify it, the client's default is used
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request. πŸ”‘

Returns β€” an Allocation object. πŸ’–

✨ list(...) ✨

list(resource_class: str | None = None, state: str | None = None, node: str | None = None, limit: int | None = None, marker: str | None = None, sort_key: str | None = None, sort_dir: str | None = None, fields: list[str] | None = None, owner: str | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Allocation]

Retrieve a list of allocations. Bestie, this is your shopping list of allocations. πŸ›οΈ

Parameters

  • resource_class β€” Optional, get allocations with this resource class.
  • state β€” Optional, get allocations in this state. One of allocating, active or error. Pick your vibe. πŸ’…
  • node β€” UUID or name of the node of the allocation. Which node? That node. πŸ‘€
  • marker β€” Optional, the UUID of an allocation, eg the last allocation from a previous result set. Return the next result set. It's the "continue where we left off" button. ⏭️
  • limit β€” The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of allocations to return.
    2. limit == 0, return the entire list of allocations.
    3. limit == None, the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned.
  • owner β€” Optional, project that owns the allocation. Find your allocation's parent. 🫢
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used. Choose your API era. ✨
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” A list of allocations. ✨

Raises InvalidAttribute if a subset of fields is requested with detail option set. πŸ’€

resource_class β€” alias of Allocation. 🫢

🌸 update(...) 🌸

update(allocation_id: str, patch: list[dict[str, Any]], os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource

Updates the Allocation. Only 'name' and 'extra' field are allowed. 🚨 Like, the API will literally not let you edit anything else, so don't even try.

Parameters

  • allocation_id β€” The UUID or name of an allocation.
  • patch β€” a json PATCH document to apply to this allocation.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

🧚 wait(...) 🧚

wait(allocation_id: str, timeout: int | float = 0, poll_interval: int | float = 1, poll_delay_function: Callable[[int | float], object] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

Wait for the Allocation to become active. It's giving "girl, just wait" energy. ⏳

Parameters

  • timeout β€” timeout in seconds, no timeout if 0. Zero means forever, which is a choice. πŸ•°οΈ
  • poll_interval β€” interval in seconds between polls.
  • poll_delay_function β€” function to use to wait between polls (defaults to time.sleep). Should take one argument - delay time in seconds. Any exceptions raised inside it will abort the wait. So if your custom function throws, the whole wait is cancelled. No cap. πŸ’€
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” updated Allocation object. πŸ’–

Raises StateTransitionFailed if allocation reaches the error state. 😭
Raises StateTransitionTimeout on timeout. πŸ’€

πŸ¦‹ ironicclient.v1.chassis module πŸ¦‹

class ironicclient.v1.chassis.Chassis(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.chassis.ChassisManager(api: SessionClient)

Bases: CreateManager[Chassis]

delete(chassis_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

get(chassis_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

πŸŽ€ list(...) πŸŽ€

list(marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Chassis]

Retrieve a list of chassis. Chassis is already plural, bestie β€” don't @ me. πŸ’…

Parameters

  • marker β€” Optional, the UUID of a chassis, eg the last chassis from a previous result set. Return the next result set.
  • limit β€” The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of chassis to return.
    2. limit == 0, return the entire list of chassis.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about chassis. The tea. β˜•
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set. So pick one, okay? πŸ™…
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” A list of chassis. ✨

πŸ“± list_nodes(...) πŸ“±

list_nodes(chassis_id: str, marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, associated: bool | str | None = None, maintenance: bool | str | None = None, provision_state: str | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Chassis]

List all the nodes for a given chassis. It's giving "who's in this chassis's group chat?" πŸ“±

Parameters

  • chassis_id β€” The UUID of the chassis.
  • marker β€” Optional, the UUID of a node, eg the last node from a previous result set. Return the next result set.
  • limit β€” The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of nodes to return.
    2. limit == 0, return the entire list of nodes.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about nodes.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • associated β€” Optional. Either a Boolean or a string representation of a Boolean that indicates whether to return a list of associated (True or "True") or unassociated (False or "False") nodes. Yes, both the bool and the string work. Versatile. πŸ’
  • maintenance β€” Optional. Either a Boolean or a string representation of a Boolean that indicates whether to return nodes in maintenance mode (True or "True"), or not in maintenance mode (False or "False"). Same deal. πŸ”§
  • provision_state β€” Optional. String value to get only nodes in that provision state. Filter by state, queen. πŸ‘‘
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing the global request ID header value (in the form "req-<UUID>") to use for the request.

Returns β€” a list of nodes. (yes, "nodes", that's literally what the docs say on the chassis manager β€” we did not write that, we just report it πŸ’€)

  • resource_class β€” alias of Chassis
update(chassis_id: str, patch: list[dict[str, Any]], os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource

🧚 ironicclient.v1.client module

class ironicclient.v1.client.Client(endpoint_override: str | None = None, *args: Any, **kwargs: Any)

Bases: object

The main-character client for the Ironic v1 API πŸ‘‘ this is the thing you actually instantiate, bestie.

Parameters

  • endpoint_override (string) β€” A user-supplied endpoint URL for the ironic service.
  • session β€” A keystoneauth Session object β€” and it must be provided as a keyword argument, no cap, don't try to sneak it in positionally.

property current_api_version: str | list[str]

Returns the current API version in use. ✨

This is the version of the REST API that the API client is presently set to request. Heads up: this value can change as a result of API version negotiation β€” it's not frozen the second you set it.

property is_api_version_negotiated: bool

Returns True if microversion negotiation has already happened. Simple as that 🫢

negotiate_api_version() -> str

Triggers negotiation with the remote API endpoint.

Returns β€” the negotiated API version.


πŸŽ€ ironicclient.v1.conductor module

class ironicclient.v1.conductor.Conductor(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.conductor.ConductorManager(api: SessionClient)

Bases: Manager[Conductor]

get(hostname: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

list(marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, fields: list[str] | None = None, detail: bool = False, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Conductor]

Retrieve a list of conductors πŸŽ›οΈ literally just the conductors, in a list.

Parameters

  • marker β€” Optional, the hostname of a conductor, e.g. the last conductor from a previous result set. Returns the next result set. (pagination's finest πŸ’…)
  • limit β€” Optional. The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of ports to return.
    2. limit == 0, return the entire list of ports.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • detail β€” Optional, boolean whether to return detailed information about conductors.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing the global request ID header value (in the form "req-<UUID>") to use for the request.

Returns β€” A list of conductors.

  • resource_class β€” alias of Conductor

🌈 ironicclient.v1.create_resources module

Okay this module is the whole "make a bunch of stuff from a dict / from a file" situation and honestly it's giving bulk-import energy πŸ”₯

create_chassis(client: Client, chassis_list: list[dict[str, object]]) -> list[Exception]

Create chassis from dictionaries.

Parameters

  • client β€” ironic client instance.
  • chassis_list β€” list of dictionaries to be POSTed to /chassis endpoint; if some of them contain a "nodes" key, its content is POSTed separately to the /nodes endpoint.

Returns β€” array of exceptions encountered during creation. (not the created things β€” the exceptions. feel that 🫠)

create_nodes(client: Client, node_list: list[dict[str, object]], chassis_uuid: str | None = None) -> list[Exception]

Create nodes from dictionaries.

Parameters

  • client β€” ironic client instance.
  • node_list β€” list of dictionaries to be POSTed to /nodes endpoint; if some of them contain a "ports" key, its content is POSTed separately to /ports endpoint.
  • chassis_uuid β€” UUID of a chassis the nodes should be associated with.

Returns β€” array of exceptions encountered during creation.

create_portgroups(client: Client, portgroup_list: list[dict[str, object]], node_uuid: str) -> list[Exception]

Create port groups from dictionaries.

Parameters

  • client β€” ironic client instance.
  • portgroup_list β€” list of dictionaries to be POSTed to /portgroups endpoint; if some of them contain a "ports" key, its content is POSTed separately to /ports endpoint.
  • node_uuid β€” UUID of a node the port groups should be associated with.

Returns β€” array of exceptions encountered during creation.

create_ports(client: Client, port_list: list[dict[str, object]], node_uuid: str, portgroup_uuid: str | None = None) -> list[Exception]

Create ports from dictionaries.

Parameters

  • client β€” ironic client instance.
  • port_list β€” list of dictionaries to be POSTed to /ports endpoint.
  • node_uuid β€” UUID of a node the ports should be associated with.
  • portgroup_uuid β€” UUID of a port group the ports should be associated with, if they are its members.

Returns β€” array of exceptions encountered during creation.

create_resources(client: Client, filenames: list[str]) -> None

Create resources using their JSON or YAML descriptions 🌸 the "here's a file, go wild" entry point.

Parameters

  • client β€” an instance of ironic client;
  • filenames β€” a list of filenames containing JSON or YAML resources definitions.

Raises β€” ClientException if any operation during files processing/resource creation fails. So like, keep an eye on that one.

create_single_chassis(client: Client, **params: Any) -> str

Call the client to create a chassis.

Parameters

  • client β€” ironic client instance.
  • params β€” dictionary to be POSTed to /chassis endpoint, excluding the "nodes" key.

Returns β€” UUID of the created chassis or None in case of exception, and an exception, if it appears.

Raises β€” InvalidAttribute, if some parameters passed to client's create_method are invalid.

Raises β€” ClientException, if the creation of the chassis fails.

create_single_handler(resource_type: str) -> Callable[[Callable[[...], str]], Callable[[...], tuple[str | None, Exception | None]]]

Catch errors of the creation of a single resource 🧚 the decorator of all time, honestly.

This decorator appends an error (which is an instance of some client exception class) to the return value of the create_method, changing the return value from just UUID to (UUID, error), and does some exception handling.

Parameters

  • resource_type β€” string value, the type of the resource being created, e.g. 'node', used purely for exception messages.

create_single_node(client: Client, **params: Any) -> str

Call the client to create a node.

Parameters

  • client β€” ironic client instance.
  • params β€” dictionary to be POSTed to /nodes endpoint, excluding "ports" and "portgroups" keys.

Returns β€” UUID of the created node or None in case of exception, and an exception, if it appears.

Raises β€” InvalidAttribute, if some parameters passed to client's create_method are invalid.

Raises β€” ClientException, if the creation of the node fails.

create_single_port(client: Client, **params: Any) -> str

Call the client to create a port.

Parameters

  • client β€” ironic client instance.
  • params β€” dictionary to be POSTed to /ports endpoint.

Returns β€” UUID of the created port or None in case of exception, and an exception, if it appears.

Raises β€” InvalidAttribute, if some parameters passed to client's create_method are invalid.

Raises β€” ClientException, if the creation of the port fails.

create_single_portgroup(client: Client, **params: Any) -> str

Call the client to create a port group.

Parameters

  • client β€” ironic client instance.
  • params β€” dictionary to be POSTed to /portgroups endpoint, excluding the "ports" key.

Returns β€” UUID of the created port group or None in case of exception, and an exception, if it appears.

Raises InvalidAttribute, if some parameters passed to client's create_method are invalid.

Raises ClientException, if the creation of the portgroup fails.


ironicclient.v1.create_resources.load_from_file(filename: str) -> dict[str, object]

Okay so this one literally just deserializes JSON or YAML from a file πŸ“

Parameters

  • filename β€” name of the file containing JSON or YAML.

Returns

a dictionary deserialized from JSON or YAML.

Raises ClientException if the file can not be loaded or if its contents is not a valid JSON or YAML, or if the file extension is not supported.


πŸš€ ironicclient.v1.deploy_template module

class ironicclient.v1.deploy_template.DeployTemplate(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.deploy_template.DeployTemplateManager(api: SessionClient)

Bases: CreateManager[DeployTemplate]

delete(template_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

get(template_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

list(limit: int | None = None, marker: str | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[DeployTemplate]

Retrieve a list of deploy templates πŸŽ€

Parameters

  • marker β€” Optional, the UUID of a deploy template, eg the last template from a previous result set. Return the next result set.
  • limit β€” the maximum number of results to return per request, if:
    1. limit > 0, the maximum number of deploy templates to return.
    2. limit == 0, return the entire list of deploy templates.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about deploy templates.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns

A list of deploy templates.

resource_class

alias of DeployTemplate

update(template_id: str, patch: list[dict[str, Any]], os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource


πŸ”§ ironicclient.v1.driver module

class ironicclient.v1.driver.Driver(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.driver.DriverManager(api: SessionClient)

Bases: Manager[Driver]

delete(driver_name: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

get(driver_name: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None, fields: list[str] | None = None) -> Resource | None

get_vendor_passthru_methods(driver_name: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, Any]

list(driver_type: str | None = None, detail: bool | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None, fields: list[str] | None = None) -> list[Driver]

Retrieve a list of drivers πŸ’…

Parameters

  • driver_type β€” Optional, string to filter the drivers by type. Value should be 'classic' or 'dynamic'.
  • detail β€” Optional, flag whether to return detailed information about drivers. Default is None means not to send the arg to the server due to older versions of the server cannot handle filtering on detail. (yes, that sentence is a whole mood 😭)
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.

Returns

A list of drivers.

properties(driver_name: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, str]

raid_logical_disk_properties(driver_name: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, str]

Returns the RAID logical disk properties for the driver. ✨

Parameters

  • driver_name β€” Name of the driver.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns

A dictionary containing the properties that can be mentioned for RAID logical disks and a textual description for them. It returns an empty dictionary on error.

resource_class

alias of Driver

update(driver_name: str, patch: list[dict[str, Any]], http_method: str = 'PATCH', os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource

vendor_passthru(driver_name: str, method: str, args: dict[str, Any] | None = None, http_method: str | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

Issue requests for vendor-specific actions on a given driver. This is the "call the driver and ask it to do a thing" button 🫢

Parameters

  • driver_name β€” The name of the driver.
  • method β€” Name of the vendor method.
  • args β€” Optional. The arguments to be passed to the method.
  • http_method β€” The HTTP method to use on the request. Defaults to POST.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

πŸ“£ ironicclient.v1.events module

class ironicclient.v1.events.Event(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.events.EventManager(api: SessionClient)

Bases: CreateManager[Event]

resource_class

alias of Event


πŸ” ironicclient.v1.inspection_rule module

class ironicclient.v1.inspection_rule.InspectionRule(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.inspection_rule.InspectionRuleManager(api: SessionClient)

Bases: CreateManager[InspectionRule]

delete(rule_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

get(rule_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

list(limit: int | None = None, marker: str | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[InspectionRule]

Retrieve a list of rules.

Parameters

  • marker β€” Optional, the UUID of a deploy template, eg the last template from a previous result set. Return the next result set. πŸ‘‰ literally just "next page bestie"
  • limit β€” the max number of results to return per request, and here's the vibe check on how it behaves:
    1. limit > 0, the maximum number of rules to return.
    2. limit == 0, return the entire list of rules. (all of them. every single one. godspeed 🫑)
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about rules.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set. ⚠️ like, pick one, bestie.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

πŸ“¦ Returns

A list of rules. that's it, that's the return πŸ’…


πŸŽ€ resource_class

alias of InspectionRule β€” no cap, it's just the same thing wearing a different outfit ✨

πŸ› οΈ update

update(rule_id: str, patch: list[dict[str, Any]], os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource

🌸 ironicclient.v1.node module

okay this is the node era of the client and it's honestly kind of the main character πŸ‘‘

class ironicclient.v1.node.Node(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource 🫢

class ironicclient.v1.node.NodeManager(api: SessionClient)

Bases: CreateManager[Node]

This is the manager, aka the one who actually does stuff. Her methods, in order, no crumbs:


πŸ¦‹ add_trait

add_trait(node_ident: str, trait: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node | None

Add a trait to a node. giving the node a little personality sticker 🌈

Parameters

  • node_ident β€” node UUID or name.
  • trait β€” trait to add to the node.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

delete

delete(node_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

get

get(node_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node | None

πŸ”§ get_bios_setting

get_bios_setting(node_ident: str, name: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, str] | None

Get a BIOS setting from a node. one (1) setting, very demure πŸ’…

Parameters

  • node_ident β€” node UUID or name.
  • name β€” BIOS setting name to get from the node.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

get_boot_device

get_boot_device(node_uuid: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, str | bool]

get_by_instance_uuid

get_by_instance_uuid(instance_uuid: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node

get_console

get_console(node_uuid: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, bool | dict[str, str] | None]

πŸ“œ get_history_event

get_history_event(node_ident: str, event: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, str]

Get a single event record for a node.

Provides the ability to request, and return a node's single event history entry. it's giving scrapbook page energy πŸŽ€

Parameters

  • node_ident β€” The name or UUID of the node.
  • event β€” The UUID of the event entry as listed in the node event history list.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

πŸ“œ get_history_list

get_history_list(node_ident: str, detail: bool = False, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[dict[str, str]]

Get node history event list.

Provides the ability to query a node event history list from the API and return the API response to the caller. the whole timeline, bestie ✨

Requires API version 1.78. do not forget, she will not work otherwise πŸ’€

Parameters

  • node_ident β€” The name or UUID of the node.
  • detail β€” If detailed data should be returned in the event list entry. Default False.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

πŸ” get_inventory

get_inventory(node_ident: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, Any]

Get the hardware inventory of the node. everything she's made of, lowkey iconic πŸ”₯

Requires API version 1.81. yes, actually. no, you can't skip it πŸ™ˆ

Parameters

  • node_ident β€” The name or UUID of the node.
  • os_ironic_api_version β€” String version (e.g. "1.81") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

get_supported_boot_devices

get_supported_boot_devices(node_uuid: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, list[str]]

🏷️ get_traits

get_traits(node_ident: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[str]

Get traits for a node. all her little badges πŸŽ€

Parameters

  • node_ident β€” node UUID or name.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

get_vendor_passthru_methods

get_vendor_passthru_methods(node_ident: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> dict[str, dict[str, bool | str | list[str]]]

inject_nmi

inject_nmi(node_uuid: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node | None

πŸ“‹ list

list(associated: bool | str | None = None, maintenance: bool | str | None = None, marker: str | None = None, limit: int | None = None, detail: bool = False, sort_key: str | None = None, sort_dir: str | None = None, fields: list[str] | None = None, provision_state: str | None = None, driver: str | None = None, resource_class: str | None = None, chassis: str | None = None, fault: str | None = None, os_ironic_api_version: str | None = None, conductor_group: str | None = None, conductor: str | None = None, owner: str | None = None, retired: bool | str | None = None, lessee: str | None = None, shards: list[str] | None = None, sharded: bool | str | None = None, parent_node: str | None = None, include_children: bool | None = None, description_contains: str | None = None, global_request_id: str | None = None, instance_name: str | None = None) -> list[Node]

Retrieve a list of nodes. The big one. The whole roster. πŸ‘‘

Parameters

  • associated β€” Optional. Either a Boolean or a string representation of a Boolean that indicates whether to return a list of associated (True or "True") or unassociated (False or "False") nodes.
  • maintenance β€” Optional. Either a Boolean or a string representation of a Boolean that indicates whether to return nodes in maintenance mode (True or "True"), or not in maintenance mode (False or "False").
  • retired β€” Optional. Either a Boolean or a string representation of a Boolean that indicates whether to return retired nodes (True or "True").
  • provision_state β€” Optional. String value to get only nodes in that provision state.
  • marker β€” Optional, the UUID of a node, eg the last node from a previous result set. Return the next result set.
  • limit β€” .INDENT 2.0 The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of nodes to return.
    2. limit == 0, return the entire list of nodes.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • detail β€” Optional, boolean whether to return detailed information about nodes.
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • driver β€” Optional. String value to get only nodes using that driver.
  • resource_class β€” Optional. String value to get only nodes with the given resource class set.
  • chassis β€” Optional, the UUID of a chassis. Used to get only nodes of this chassis.
  • fault β€” Optional. String value to get only nodes with specified fault.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.
  • conductor_group β€” Optional. String value to get only nodes with the given conductor group set.
  • conductor β€” Optional. String value to get only nodes mapped to the given conductor.
  • owner β€” Optional. String value to get only nodes mapped to a specific owner.
  • lessee β€” Optional. String value to get only nodes mapped to a specific lessee.
  • shards β€” Optional. A list with a specified set of shards to limit node returns to.
  • sharded β€” Optional. Boolean value, when true get only nodes with a non-null node.shard value, when false get only nodes with a null node.shard value. None is a noop. with a non-null node.shard value.
  • parent_node β€” Optional. String value used to retrieve child nodes with the supplied parent node.
  • include_children β€” Optional. Boolean Value, only True is valid. Tells the ironic API to enumerate all child nodes which are normally hidden from the node list.
  • description_contains β€” Optional. String value to get nodes with description contains specified value.
  • instance_name β€” Optional. String value to get only nodes with the given instance_name set.

Returns A list of nodes.


🌸 list_bios_settings 🌸

list_bios_settings(node_ident: str, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[dict[str, str | int | bool | list[str] | None]]

List all BIOS settings from a node.

Parameters

  • node_ident β€” node UUID or name.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.
  • detail β€” Optional, boolean whether to return detailed information about bios settings.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.

πŸ¦‹ list_children_of_node πŸ¦‹

list_children_of_node(node_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[str]

Get a list of child nodes for the supplied node_id.

Parameters

  • node_id β€” The name or UUID of a node.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns A list of UUIDs representing child nodes for the supplied node_id..


⭐ list_firmware_components ⭐

list_firmware_components(node_ident: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[dict[str, str]]

List all firmware components from a node.

Parameters

  • node_ident β€” node UUID or name.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

πŸŽ€ list_ports πŸŽ€

list_ports(node_id: str, marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Port <#ironicclient.v1.port.Port>]

List all the ports for a given node.

Parameters

  • node_id β€” Name or UUID of the node.
  • marker β€” Optional, the UUID of a port, eg the last port from a previous result set. Return the next result set.
  • limit β€” .INDENT 2.0 The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of ports to return.
    2. limit == 0, return the entire list of ports.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about ports.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns A list of ports.


πŸ’œ list_volume_connectors πŸ’œ

list_volume_connectors(node_id: str, marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[VolumeConnector <#ironicclient.v1.volume_connector.VolumeConnector>]

List all the volume connectors for a given node.

Parameters

  • node_id β€” Name or UUID of the node.
  • marker β€” Optional, the UUID of a volume connector, eg the last volume connector from a previous result set. Return the next result set.
  • limit β€” .INDENT 2.0 The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of volume connectors to return.
    2. limit == 0, return the entire list of volume connectors.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about volume connectors.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns A list of volume connectors.


🌈 list_volume_targets 🌈

list_volume_targets(node_id: str, marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[VolumeTarget <#ironicclient.v1.volume_target.VolumeTarget>]

List all the volume targets for a given node.

Parameters

  • node_id β€” Name or UUID of the node.
  • marker β€” optional, and it's the UUID of a volume target, like the last volume target from a previous result set. It returns the next result set. Pagination slay πŸ’…
  • limit β€” the maximum number of results to return per request, if:
    1. limit > 0 β†’ that's the maximum number of volume targets to return.
    2. limit == 0 β†’ return the entire list of volume targets. all of them. the whole buffet πŸ“
    3. limit param is NOT specified (None) β†’ the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” optional, the field used for sorting.
  • sort_dir β€” optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” optional, boolean for whether to return detailed information about volume targets.
  • fields β€” optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set. pick one, bestie, you can't have both πŸ™ˆ
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns πŸ’«

A list of volume targets. that's it, that's the tea πŸŽ€


remove_all_traits

remove_all_traits(node_ident: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

Remove all traits from a node. like, every single one. scorched earth, but make it polite ✨

Parameters

  • node_ident β€” node UUID or name.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

remove_trait

remove_trait(node_ident: str, trait: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

Remove one trait from a node. surgical. precise. iconic πŸ’…

Parameters

  • node_ident β€” node UUID or name.
  • trait β€” trait to remove from the node.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

resource_class

alias of Node. that's literally the whole vibe check, it's just a nickname for Node πŸ¦‹

set_boot_device

set_boot_device(node_uuid: str, boot_device: str, persistent: bool = False, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node <#ironicclient.v1.node.Node> | None

(no extra description on this one in the source β€” the signature is the whole meal, bestie 🫢)

set_boot_mode

set_boot_mode(node_id: str, state: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node <#ironicclient.v1.node.Node> | None

Sets boot mode for a node. very main character energy for a firmware setting πŸ”₯

Parameters

  • node_id β€” Node identifier
  • state β€” one of target boot modes, 'uefi' or 'bios'
  • os_ironic_api_version β€” string version (e.g. "1.76") to use for the request. If not specified, the client's default is used. (yes, "1.76" β€” that's the example this one uses, not a typo, don't come for me 😭)
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.
Raises ValueError if boot mode is not one of 'uefi' / 'bios' β€” so don't be creative with it πŸ™ˆ

Returns

The status of the request.

set_console_mode

set_console_mode(node_uuid: str, enabled: bool | str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node <#ironicclient.v1.node.Node> | None

Set the console mode for the node. on or off, that's the whole plot 🌸

Parameters

  • node_uuid β€” The UUID of the node.
  • enabled β€” Either a Boolean or a string representation of a Boolean. True to enable the console; False to disable.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

set_maintenance

set_maintenance(node_id: str, state: bool | str, maint_reason: str | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node <#ironicclient.v1.node.Node> | None

Set the maintenance mode for the node. sometimes a node just needs a little spa day πŸ’†β€β™€οΈ

Parameters

  • node_id β€” The UUID of the node.
  • state β€” the maintenance mode; either a Boolean or a string representation of a Boolean (eg, 'true', 'on', 'false', 'off'). True to put the node in maintenance mode; False to take the node out of maintenance mode.
  • maint_reason β€” Optional string. Reason for putting node into maintenance mode. receipts, basically πŸ“
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.
Raises InvalidAttribute if state is an invalid string (that doesn't represent a Boolean). so like… don't pass 'maybe' πŸ’€

set_power_state

set_power_state(node_id: str, state: str, soft: bool = False, timeout: int | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Node <#ironicclient.v1.node.Node> | None

Sets power state for a node. the classic on/off/reboot situation, but make it graceful ✨

Parameters

  • node_id β€” Node identifier
  • state β€” one of target power state, 'on', 'off', or 'reboot'
  • soft β€” the flag for graceful power 'off' or 'reboot'
  • timeout β€” the timeout (in seconds) positive integer value (> 0)
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.
Raises ValueError if 'soft' or 'timeout' option is invalid β€” so no negative seconds, no nonsense, we're not doing that today 🚫

Returns

The status of the request.

set_provision_state

set_provision_state(node_uuid: str, state: str, configdrive: str | dict[str, Any] | list[Any] | bytes | None = None, cleansteps: list[dict[str, Any]] | None = None, rescue_password: str | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None, deploysteps: list[dict[str, Any]] | None = None, servicesteps: list[dict[str, Any]] | None = None, runbook: str | None = None, disable_ramdisk: bool | str | None = None) -> Node <#ironicclient.v1.node.Node> | None

Set the provision state for the node. this is the big one, the main event, the finale of the whole node lifecycle πŸ‘‘

Parameters

  • node_uuid β€” The UUID or name of the node. (yes, or name, she's flexible πŸ’œ)
  • state β€” the desired provision state. One of 'active', 'deleted', 'rebuild', 'inspect', 'provide', 'manage', 'clean', 'abort', 'rescue', 'unrescue'.
  • configdrive β€” one of:
    • a gzipped, base64-encoded configuration drive string
    • a dictionary to build config drive from
    • a path to the configuration drive file (ISO 9660 or VFAT)
    • a path to a directory containing the config drive files
    • a path to a JSON file to build config from

In case it's a directory, a config drive will be generated from it. In case it's a dictionary or a JSON file, a config drive will be generated on the server side (requires API version 1.56). This is only valid when setting state to 'active'. so basically don't get cute with it at other states πŸŽ€

  • cleansteps β€” the clean steps as a list of clean-step dictionaries; each dictionary should have keys 'interface' and 'step', and optional key 'args'. This must be specified (and is only valid) when setting provision-state to 'clean'. required AND exclusive, she's high maintenance and she's worth it πŸ’…
  • rescue_password β€” a string to be used as the login password inside the rescue ramdisk once a node is rescued. This must be specified (and is only valid) when setting 'state' to 'rescue'.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.
heads up bestie: deploysteps, servicesteps, runbook and disable_ramdisk are all up there in the signature, but the source doesn't spell out descriptions for them here β€” so I'm not out here inventing lore πŸ™ˆ
  • deploysteps β€” the deploy steps, as a list of deploy-step dictionaries πŸ’… each dict needs the keys 'interface', 'step', 'priority', plus an optional 'args' key. This one's optional, and it's only valid when you're setting provision-state to 'active' or 'rebuild'.
  • servicesteps β€” the service steps, as a list of service-step dictionaries πŸŽ€ each dict needs 'interface', 'step', and an optional 'args' key, for when you're setting an 'active' node to 'service'.
  • runbook β€” the identifier of a predefined runbook to use for provisioning. iykyk.
  • disable_ramdisk β€” a Boolean; if you set it to true it will not boot the ironic-python-agent for cleaning. Only valid when setting 'state' to 'clean' or 'service', and only for steps explicitly marked as not requiring the ironic-python-agent can you use this one πŸ™ˆ

Raises InvalidAttribute if there was an error with the clean steps or deploy steps β€” so like, if you fumbled something, it tells you.

Returns the status of the request ✨


set_secure_boot

set_secure_boot(node_id: str, state: bool | str,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Node <#ironicclient.v1.node.Node> | None

Set the secure boot state for the node. Locking it down, bestie πŸ”’

Parameters

  • node_id β€” the UUID of the node.
  • state β€” the secure boot state; either a Boolean or a string representation of a Boolean (eg, 'true', 'on', 'false', 'off'). True to turn secure boot on; False to turn secure boot off. Simple as that.
  • os_ironic_api_version β€” string version (e.g. "1.76") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

Raises InvalidAttribute if state is an invalid string (like, one that doesn't represent a Boolean). No vibes-based guessing allowed πŸ’€


set_target_raid_config

set_target_raid_config(node_ident: str, target_raid_config:
dict[str, Any], os_ironic_api_version: str | None = None,
global_request_id: str | None = None) -> Node <#ironicclient.v1
.node.Node> | None

Sets target_raid_config for a node. RAID glow-up incoming 🌸

Parameters

  • node_ident β€” Node identifier
  • target_raid_config β€” a dictionary with the target RAID configuration; may be empty.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” status of the request 🫢


set_traits

set_traits(node_ident: str, traits: list[str],
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Node <#ironicclient.v1.node.Node> | None

Set traits for a node. Giving that node a whole personality ✨

Heads up though: this removes any existing traits and adds the traits passed in to this method. It's giving clean slate, not merge 😭

Parameters

  • node_ident β€” node UUID or name.
  • traits β€” list of traits to add to the node.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

states

states(node_uuid: str, os_ironic_api_version: str | None = None,
global_request_id: str | None = None) -> Node <#ironicclient.v1
.node.Node> | None

That's it, that's the whole entry. Iconic minimalism πŸ’…


update

update(node_id: str, patch: list[dict[str, Any]] | dict[str, Any]
| None, http_method: str = 'PATCH', os_ironic_api_version: str |
None = None, reset_interfaces: bool | None = None,
global_request_id: str | None = None) -> Node <#ironicclient.v1
.node.Node> | None

No prose here either β€” just the signature, and http_method defaults to 'PATCH' in case you were wondering πŸŽ€


validate

validate(node_uuid: str, os_ironic_api_version: str | None =
None, global_request_id: str | None = None) -> Node <#
ironicclient.v1.node.Node> | None

Yep, same energy. Short and sweet πŸ¦‹


vendor_passthru

vendor_passthru(node_id: str, method: str, args: dict[str, Any] |
None = None, http_method: str | None = None,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Node <#ironicclient.v1.node.Node> | None

Issue requests for vendor-specific actions on a given node. The back door for vendor stuff πŸ‘‘

Parameters

  • node_id β€” the UUID of the node.
  • method β€” name of the vendor method.
  • args β€” optional. The arguments to be passed to the method.
  • http_method β€” the HTTP method to use on the request. Defaults to POST.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

vif_attach

vif_attach(node_ident: str, vif_id: str, os_ironic_api_version:
str | None = None, global_request_id: str | None = None,
**kwargs: str) -> None

Attach VIF to a given node. Matchmaker, matchmaker πŸ’–

Parameters

  • node_ident β€” the UUID or Name of the node.
  • vif_id β€” the UUID or Name of the VIF to attach.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.
  • kwargs β€” a dictionary containing the attributes of the resource that will be created.

vif_detach

vif_detach(node_ident: str, vif_id: str, os_ironic_api_version:
str | None = None, global_request_id: str | None = None) -> None

Detach VIF from a given node. Breaking up, but make it network config πŸ’”

Parameters

  • node_ident β€” the UUID or Name of the node.
  • vif_id β€” the UUID or Name of the VIF to detach.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

vif_list

vif_list(node_ident: str, os_ironic_api_version: str | None =
None, global_request_id: str | None = None) -> list[Node <#
ironicclient.v1.node.Node>]

List VIFs attached to a given node. Roll call πŸ“‹

Parameters

  • node_ident β€” the UUID or Name of the node.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

wait_for_provision_state

wait_for_provision_state(node_ident: str | list[str],
expected_state: str, timeout: int | float = 0, poll_interval: int
| float = 2, poll_delay_function: Callable[[int | float], object]
| None = None, fail_on_unexpected_state: bool = True,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> None

Helper function to wait for nodes to reach a given state. The "are we there yet" of the Ironic world πŸš—

It polls the Ironic API in a loop until the node gets to the requested state.

Fails in the following cases:

  • Timeout (if provided) is reached ⏰
  • Node's last_error gets set to a non-empty value
  • Unexpected stable state is reached and fail_on_unexpected_state is on
  • Error state is reached (if it's not equal to expected_state)

Parameters

  • node_ident β€” node UUID or name (one or a list)
  • expected_state β€” expected final provision state
  • timeout β€” timeout in seconds, no timeout if 0
  • poll_interval β€” interval in seconds between 2 poll
  • poll_delay_function β€” function to use to wait between polls (defaults to time.sleep). Should take one argument β€” delay time in seconds. Any exceptions raised inside it will abort the wait.
  • fail_on_unexpected_state β€” whether to fail if the nodes reaches a different stable state.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing global request ID header value (in form "req-<UUID>") to use for the request.

Raises StateTransitionFailed if node reached an error state 😭

Raises StateTransitionTimeout on timeout πŸ’€

ironicclient.v1.port module πŸ¦‹

class ironicclient.v1.port.Port(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.port.Port(
    manager: ManagerProtocol,
    info: dict[str, Any],
    loaded: bool = False,
)

okay so it's a Resource subclass, that's the whole personality πŸ’…


class ironicclient.v1.port.PortManager(api: SessionClient)

Bases: CreateManager[Port]

class ironicclient.v1.port.PortManager(api: SessionClient)

delete(port_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

delete(
    port_id: str,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> None

get(port_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Port | None

get(
    port_id: str,
    fields: list[str] | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> Port | None

get_by_address(address: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Port

get_by_address(
    address: str,
    fields: list[str] | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> Port

list(address: str | None = None, limit: int | None = None, marker: str | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, node: str | None = None, portgroup: str | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Port]

list(
    address: str | None = None,
    limit: int | None = None,
    marker: str | None = None,
    sort_key: str | None = None,
    sort_dir: str | None = None,
    detail: bool = False,
    fields: list[str] | None = None,
    node: str | None = None,
    portgroup: str | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> list[Port]

Retrieve a list of ports. ✨

Parameters

  • address β€” Optional, MAC address of a port, to get the port which has this MAC address 🫢
  • marker β€” Optional, the UUID of a port, eg the last port from a previous result set. Return the next result set.
  • limit β€” the max number of results to return per request, if:
    1. limit > 0, the maximum number of ports to return.
    2. limit == 0, return the entire list of ports.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about ports.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • node β€” Optional, name or UUID of a node. Used to get ports of this node.
  • portgroup β€” Optional, name or UUID of a portgroup. Used to get ports of this portgroup.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns

A list of ports πŸŽ€

resource_class

alias of Port

update(port_id: str, patch: list[dict[str, Any]], os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Port

update(
    port_id: str,
    patch: list[dict[str, Any]],
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> Port

ironicclient.v1.portgroup module 🌸

class ironicclient.v1.portgroup.Portgroup(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource

class ironicclient.v1.portgroup.Portgroup(
    manager: ManagerProtocol,
    info: dict[str, Any],
    loaded: bool = False,
)

class ironicclient.v1.portgroup.PortgroupManager(api: SessionClient)

Bases: CreateManager[Portgroup]

class ironicclient.v1.portgroup.PortgroupManager(api: SessionClient)

delete(portgroup_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

delete(
    portgroup_id: str,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> None

Delete the Portgroup from the DB. it's gone, bestie, poof πŸ’€

Parameters

  • portgroup_id β€” The UUID or name of a portgroup.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

get(portgroup_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Portgroup | None

get(
    portgroup_id: str,
    fields: list[str] | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> Portgroup | None

Get a port group with the specified identifier πŸ”

Parameters

  • portgroup_id β€” The UUID or name of a portgroup.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns

a Portgroup object 🫢

get_by_address(address: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Portgroup

get_by_address(
    address: str,
    fields: list[str] | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> Portgroup

Get a port group with the specified MAC address πŸŽ€

Parameters

  • address β€” The MAC address of a portgroup.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns

a Portgroup object πŸ’–

list(node: str | None = None, address: str | None = None, limit: int | None = None, marker: str | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, shards: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Portgroup]

list(
    node: str | None = None,
    address: str | None = None,
    limit: int | None = None,
    marker: str | None = None,
    sort_key: str | None = None,
    sort_dir: str | None = None,
    detail: bool = False,
    fields: list[str] | None = None,
    shards: list[str] | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> list[Portgroup]

Retrieve a list of portgroups. ✨

Parameters

  • node β€” Optional, UUID or name of a node, to get the portgroups for that node.
  • address β€” Optional, MAC address of a portgroup, to get the portgroup which has this MAC address.
  • marker β€” Optional, the UUID of a portgroup, eg the last portgroup from a previous result set. Return the next result set.
  • limit β€” the max number of results to return per request, if:
    1. limit > 0, the maximum number of portgroups to return.
    2. limit == 0, return the entire list of portgroups.
    3. limit == None, the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about portgroups.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • shards β€” Optional, a list of shards to filter portgroups by. Only portgroups associated with nodes in these shards will be returned.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns

A list of portgroups 🌈

Raises InvalidAttribute if a subset of fields is requested with detail option set.

fr fr do NOT set detail and pass a fields subset at the same time, it will throw at you and it will not be cute 😭

list_ports(portgroup_id: str, marker: str | None = None, limit: int | None = None, sort_key: str | None = None, sort_dir: str | None = None, detail: bool = False, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[Portgroup]

list_ports(
    portgroup_id: str,
    marker: str | None = None,
    limit: int | None = None,
    sort_key: str | None = None,
    sort_dir: str | None = None,
    detail: bool = False,
    fields: list[str] | None = None,
    os_ironic_api_version: str | None = None,
    global_request_id: str | None = None,
) -> list[Portgroup]

List all the ports for a given portgroup πŸ¦‹

Parameters

  • portgroup_id β€” Name or UUID of the portgroup.
  • marker β€” Optional, the UUID of a port, eg the last port from a previous result set. Return the next result set.
  • limit β€” the max number of results to return per request, if:
    1. limit > 0, the maximum number of ports to return.
    2. limit == 0, return the entire list of ports.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” optional, the field you wanna sort by.
    • sort_dir β€” optional, which direction to sort: either 'asc' (the default, bestie πŸ’…) or 'desc'.
    • detail β€” optional boolean, do you want the detailed tea about the ports or not.
    • fields β€” optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set β€” pick one, not both, no cap πŸ™…
    • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. Don't specify it and the client's default is used.
    • global_request_id β€” string containing the global request ID header value (in the form "req-<UUID>") to use for the request.

Returns

A list of ports. that's it, that's the payoff πŸŽ€

resource_class

alias of Portgroup β€” literally the same thing wearing a different name, iykyk ✨

update(portgroup_id: str, patch: list[dict[str, Any]], os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Portgroup

Update the Portgroup. glow-up time πŸ’…

Parameters

  • portgroup_id β€” the UUID or name of a portgroup.
  • patch β€” the patch request with the updates in it.
  • os_ironic_api_version β€” string version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing the global request ID header value (in the form "req-<UUID>") to use for the request.

πŸ¦‹ ironicclient.v1.resource_fields module

class ironicclient.v1.resource_fields.Resource(field_ids: list[str], sort_excluded: list[str] | None = None, override_labels: dict[str, str] | None = None)

Bases: object β€” yes literally just object, humble of it honestly 🫢

Resource class

So this class is the whole manager of the various fields that a resource (think Chassis, Node, Port) contains. Each individual field is made of a 'field_id' (that's the key) and a 'label' (that's the value). The caller only provides the 'field_ids' when instantiating the object β€” the labels come along for the ride.

The ordering of the 'field_ids' is preserved exactly as the caller specified it. no shuffling, no sorting, we respect the order periodt πŸ‘‘

It also gives you the ability to exclude some of these fields when they're being used for sorting. handy.

FIELDS: dict[str, str] β€” the full lookup table, in all its glory:

FIELDS: dict[str, str] = {'actions': 'Actions', 'address': 'Address', 'alive': 'Alive', 'allocation_uuid': 'Allocation UUID', 'allowable_values': 'Allowable Values', 'async': 'Async', 'attach': 'Response is attachment', 'attribute_type': 'Attribute Type', 'automated_clean': 'Automated Clean', 'bios_interface': 'BIOS Interface', 'boot_index': 'Boot Index', 'boot_interface': 'Boot Interface', 'boot_mode': 'Boot Mode', 'candidate_nodes': 'Candidate Nodes', 'category': 'Category', 'chassis_uuid': 'Chassis UUID', 'children': 'Child Nodes', 'clean_step': 'Clean Step', 'conditions': 'Conditions', 'conductor': 'Conductor', 'conductor_group': 'Conductor Group', 'connector_id': 'Connector ID', 'console_enabled': 'Console Enabled', 'console_interface': 'Console Interface', 'count': 'Count', 'created_at': 'Created At', 'default_bios_interface': 'Default BIOS Interface', 'default_boot_interface': 'Default Boot Interface', 'default_console_interface': 'Default Console Interface', 'default_deploy_interface': 'Default Deploy Interface', 'default_firmware_interface': 'Default Firmware 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_rescue_interface': 'Default Rescue Interface', 'default_storage_interface': 'Default Storage Interface', 'default_vendor_interface': 'Default Vendor Interface', 'deploy_interface': 'Deploy Interface', 'deploy_step': 'Deploy Step', 'description': 'Description', 'disable_power_off': 'Disable Power Off', 'disable_ramdisk': 'Disable Ramdisk', 'driver': 'Driver', 'driver_info': 'Driver Info', 'driver_internal_info': 'Driver Internal Info', 'drivers': 'Drivers', 'duration_seconds': 'Duration (seconds)', 'enabled_bios_interfaces': 'Enabled BIOS Interfaces', 'enabled_boot_interfaces': 'Enabled Boot Interfaces', 'enabled_console_interfaces': 'Enabled Console Interfaces', 'enabled_deploy_interfaces': 'Enabled Deploy Interfaces', 'enabled_firmware_interfaces': 'Enabled Firmware 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_rescue_interfaces': 'Enabled Rescue Interfaces', 'enabled_storage_interfaces': 'Enabled Storage Interfaces', 'enabled_vendor_interfaces': 'Enabled Vendor Interfaces', 'event': 'Description of the event', 'event_type': 'Event Origin Type', 'extra': 'Extra', 'fault': 'Fault', 'firmware_interface': 'Firmware Interface', 'health': 'Health', 'hostname': 'Hostname', 'hosts': 'Active host(s)', 'http_methods': 'Supported HTTP methods', 'id': 'ID', 'inspect_interface': 'Inspect Interface', 'inspection_finished_at': 'Inspection Finished At', 'inspection_started_at': 'Inspection Started At', 'instance_info': 'Instance Info', 'instance_name': 'Instance Name', 'instance_uuid': 'Instance UUID', 'internal_info': 'Internal Info', 'is_smartnic': 'Is Smart NIC port', 'last_error': 'Last Error', 'lessee': 'Lessee', 'local_link_connection': 'Local Link Connection', 'lower_bound': 'Lower Bound', 'maintenance': 'Maintenance', 'maintenance_reason': 'Maintenance Reason', 'management_interface': 'Management Interface', 'max_length': 'Maximum Length', 'min_length': 'Minimum Length', 'mode': 'Mode', 'name': 'Name', 'network_data': 'Network Configuration', 'network_interface': 'Network Interface', 'node_uuid': 'Node UUID', 'owner': 'Owner', 'parent_node': 'Parent Node', 'phase': 'Phase', 'physical_network': 'Physical Network', 'portgroup_uuid': 'Portgroup UUID', 'power_interface': 'Power Interface', 'power_state': 'Power State', 'priority': 'Priority', 'project': 'Project', 'properties': 'Properties', 'protected': 'Protected', 'protected_reason': 'Protected Reason', 'provision_state': 'Provisioning State', 'provision_updated_at': 'Provision Updated At', 'public': 'Public', 'pxe_enabled': 'PXE boot enabled', 'raid_config': 'Current RAID configuration', 'raid_interface': 'RAID Interface', 'read_only': 'Read Only', 'rescue_interface': 'Rescue Interface', 'reservation': 'Reservation', 'reset_required': 'Reset Required', 'resource_class': 'Resource Class', 'retired': 'Retired', 'retired_reason': 'Retired Reason', 'secure_boot': 'Secure Boot', 'sensitive': 'Sensitive', 'severity': 'Severity', 'standalone_ports_supported': 'Standalone Ports Supported', 'state': 'State', 'steps': 'Steps', 'storage_interface': 'Storage Interface', 'target_power_state': 'Target Power State', 'target_provision_state': 'Target Provision State', 'target_raid_config': 'Target RAID configuration', 'traits': 'Traits', 'type': 'Type', 'unique': 'Unique', 'updated_at': 'Updated At', 'upper_bound': 'Upper Bound', 'user': 'User', 'uuid': 'UUID', 'value': 'Value', 'vendor': 'Vendor', 'vendor_interface': 'Vendor Interface', 'volume_id': 'Volume ID', 'volume_type': 'Driver Volume Type'}

Properties β€” little computed cuties, all tuples of str:

  • fields: tuple[str, ...]
  • labels: tuple[str, ...]
  • sort_fields: tuple[str, ...]
  • sort_labels: tuple[str, ...]

🌈 ironicclient.v1.runbook module

class ironicclient.v1.runbook.Runbook(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource (ironicclient.common.base.Resource) 🧚

class ironicclient.v1.runbook.RunbookManager(api: SessionClient)

Bases: CreateManager[Runbook] (ironicclient.common.base.CreateManager) πŸ‘‘

add_trait(runbook_ident: str, trait: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Runbook | None

Add a trait to a runbook. give it a little accessory πŸ’…

Requires API version 1.112 or later. no version, no trait, that's the rule bestie.

Parameters

  • runbook_ident β€” runbook UUID or name.
  • trait β€” the trait to add to the runbook.
  • os_ironic_api_version β€” string version (e.g. "1.112") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing the global request ID header value (in the form "req-<UUID>") to use for the request.

delete(runbook_id: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> None

get(runbook_id: str, fields: list[str] | None = None, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> Resource | None

get_traits(runbook_ident: str, os_ironic_api_version: str | None = None, global_request_id: str | None = None) -> list[str]

Get traits for a runbook. the full accessory collection πŸ”₯

Requires API version 1.112 or later. same deal, don't forget it.

Parameters

  • runbook_ident β€” runbook UUID or name.
  • os_ironic_api_version β€” string version (e.g. "1.112") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” string containing the global request ID header value (in the form "req-<UUID>") to use for the request.
list(limit: int | None = None, marker: str | None = None,
sort_key: str | None = None, sort_dir: str | None = None, detail:
bool = False, fields: list[str] | None = None,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None, project: str | None = None, public: bool | None =
None) -> list[Runbook]

Okay so this is the runbook list β€” retrieve a list of runbooks ✨ (and yeah, project and public are sitting right there in the signature, the param list below just doesn't spell them out β€” clock the signature, bestie πŸ‘€).

Parameters:

  • marker β€” Optional, the UUID of a deploy template, eg the last template from a previous result set. Return the next result set.
  • limit β€” The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of runbooks to return.
    2. limit == 0, return the entire list of runbooks.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about runbooks.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” a list of runbooks. slay πŸ’…

remove_all_traits(runbook_ident: str, os_ironic_api_version: str
| None = None, global_request_id: str | None = None) -> None

Remove all the traits from a runbook. Like, every single one, gone πŸ’€

Requires API version 1.112 or later. Don't skip the vibe check on that one, fr fr.

Parameters:

  • runbook_ident β€” runbook UUID or name.
  • os_ironic_api_version β€” String version (e.g. "1.112") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.
remove_trait(runbook_ident: str, trait: str,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> None

Remove one trait from a runbook β€” targeted, surgical, main character energy 🎯

Also requires API version 1.112 or later, same deal as above.

Parameters:

  • runbook_ident β€” runbook UUID or name.
  • trait β€” trait to remove from the runbook.
  • os_ironic_api_version β€” String version (e.g. "1.112") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

resource_class β€” alias of Runbook. That's it, that's the whole thing 🫢

update(runbook_id: str, patch: list[dict[str, Any]],
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Resource

🌈 ironicclient.v1.shard module 🌈

class ironicclient.v1.shard.Shard(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource πŸ’œ

class ironicclient.v1.shard.ShardManager(api: SessionClient)

Bases: Manager[Shard]

list(os_ironic_api_version: str | None = None, global_request_id:
str | None = None) -> list[Shard]

Retrieve a list of shards ✨

Parameters:

  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” A list of conductors.

Not even joking, that's what it says. Shards in, conductors out 😭 iconic documentation moment, we keep it exactly as it is πŸ’€

resource_class β€” alias of Shard.


πŸ¦‹ ironicclient.v1.utils module πŸ¦‹

(that's the whole section babe, it's just vibes and a heading πŸ’…)


πŸŽ€ ironicclient.v1.volume_connector module πŸŽ€

class ironicclient.v1.volume_connector.VolumeConnector(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource 🌸

class ironicclient.v1.volume_connector.VolumeConnectorManager(api: SessionClient)

Bases: CreateManager[VolumeConnector]

delete(volume_connector_id: str, os_ironic_api_version: str |
None = None, global_request_id: str | None = None) -> None
get(volume_connector_id: str, fields: list[str] | None = None,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Resource | None
list(node: str | None = None, limit: int | None = None, marker:
str | None = None, sort_key: str | None = None, sort_dir: str |
None = None, detail: bool = False, fields: list[str] | None =
None, os_ironic_api_version: str | None = None,
global_request_id: str | None = None) -> list[VolumeConnector]

Retrieve a list of volume connector. Yes, connector, singular-ish, we don't judge grammar here 🫢

Parameters:

  • node β€” Optional, UUID or name of a node, to get volume connectors for this node only.
  • marker β€” Optional, the UUID of a volume connector, eg the last volume connector from a previous result set. Return the next result set.
  • limit β€” The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of volume connectors to return.
    2. limit == 0, return the entire list of volume connectors.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” Optional, direction of sorting, either 'asc' (the default) or 'desc'.
  • detail β€” Optional, boolean whether to return detailed information about volume connectors.
  • fields β€” Optional, a list with a specified set of fields of the resource to be returned. Can not be used when 'detail' is set.
  • os_ironic_api_version β€” String version (e.g. "1.35") to use for the request. If not specified, the client's default is used.
  • global_request_id β€” String containing global request ID header value (in form "req-<UUID>") to use for the request.

Returns β€” A list of volume connectors. periodt πŸ’…

resource_class β€” alias of VolumeConnector.

update(volume_connector_id: str, patch: list[dict[str, Any]],
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Resource

πŸ”₯ ironicclient.v1.volume_target module πŸ”₯

class ironicclient.v1.volume_target.VolumeTarget(manager: ManagerProtocol, info: dict[str, Any], loaded: bool = False)

Bases: Resource ⭐

class ironicclient.v1.volume_target.VolumeTargetManager(api: SessionClient)

Bases: CreateManager[VolumeTarget]

delete(volume_target_id: str, os_ironic_api_version: str | None =
None, global_request_id: str | None = None) -> None
get(volume_target_id: str, fields: list[str] | None = None,
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Resource | None
list(node: str | None = None, limit: int | None = None, marker:
str | None = None, sort_key: str | None = None, sort_dir: str |
None = None, detail: bool = False, fields: list[str] | None =
None, os_ironic_api_version: str | None = None,
global_request_id: str | None = None) -> list[VolumeTarget]

Retrieve a list of volume target 🌈

Parameters:

  • node β€” Optional, UUID or name of a node, to get volume targets for this node only.
  • marker β€” Optional, the UUID of a volume target, eg the last volume target from a previous result set. Return the next result set.
  • limit β€” The maximum number of results to return per request, if:
    1. limit > 0, the maximum number of volume targets to return.
    2. limit == 0, return the entire list of volume targets.
    3. limit param is NOT specified (None), the number of items returned respect the maximum imposed by the Ironic API (see Ironic's api.max_limit option).
  • sort_key β€” Optional, field used for sorting.
  • sort_dir β€” optional, and it's literally just the direction of sorting: either 'asc' (which is the default, bestie) or 'desc'. that's it. πŸ’…
  • detail β€” optional boolean, and it controls whether you get detailed info about volume targets. fancy mode: on or off πŸŽ€
  • fields β€” optional, a list with a specified set of fields of the resource to be returned. ⚠️ heads up: can not be used when 'detail' is set. pick a lane, queen.
  • os_ironic_api_version β€” a String version (e.g. "1.35") to use for the request. if you don't specify it, the client's default is what you get. no cap ✨
  • global_request_id β€” a String containing the global request ID header value (in form "req-<UUID>") to use for the request. tracking queen πŸ‘‘

Returns

a list of volume targets. that's the whole payoff. πŸ¦‹

resource_class

alias of VolumeTarget. it's giving "same energy, different name" πŸ’«

update(volume_target_id: str, patch: list[dict[str, Any]],
os_ironic_api_version: str | None = None, global_request_id: str
| None = None) -> Resource

πŸ“š Module contents

okay so this section is lowkey the index of everything β€” it says Module contents, then Submodules, and then it dishes out each submodule one by one. let's go 🌈

🧩 ironicclient.client module

ironicclient.client.Client

Client(version: str, endpoint_override: str | None = None,
session: Session | None = None, *args: Any, **kwargs: Any) -> Client

create a client of an appropriate version.

🫢 real talk: this call requires a session. if you want it to be created for you, use get_client instead.

Parameters

  • endpoint_override β€” a bare metal endpoint to use.
  • session β€” a keystoneauth session to use. this argument is actually required and is marked optional only for backward compatibility. the audacity, honestly 😭
  • args β€” other arguments to pass to the HTTP client. not recommended, use kwargs instead. please, i'm begging πŸ₯Ί
  • kwargs β€” other keyword arguments to pass to the HTTP client (e.g. insecure).

ironicclient.client.get_client

get_client(api_version: str, auth_type: str | None = None,
os_ironic_api_version: str | None = None, max_retries: int | None = None,
retry_interval: int | None = None, session: Session | None = None,
valid_interfaces: str | list[str] | None = None, interface: str |
list[str] | None = None, service_type: str | None = None, region_name:
str | None = None, additional_headers: dict[str, str] | None = None,
global_request_id: str | None = None, **kwargs: Any) -> Client

get an authenticated client, based on the credentials. this is the one that does the whole glow-up for you ✨

Parameters

  • api_version β€” the API version to use. Valid value: '1'. yes, just the one. iconic minimalism πŸ’…
  • auth_type β€” type of keystoneauth auth plugin loader to use.
  • os_ironic_api_version β€” ironic API version to use.
  • max_retries β€” maximum number of retries in case of conflict error. perseverance queen πŸ”₯
  • retry_interval β€” amount of time (in seconds) between retries in case of conflict error.
  • session β€” an existing keystoneauth session. will be created from kwargs if not provided. she's flexible like that 🧚
  • valid_interfaces β€” list of valid endpoint interfaces to use if the bare metal endpoint is not provided.
  • interface β€” an alias for valid_interfaces. twins fr fr πŸ‘―
  • service_type β€” bare metal endpoint service type.
  • region_name β€” name of the region to use when searching the bare metal endpoint. geographically slaying 🌸
  • additional_headers β€” additional headers that should be attached to every request passing through the client. headers of the same name specified per request will take priority. main character headers only πŸ‘‘
  • global_request_id β€” a header (in the form of req-$uuid) that will be passed on all requests. enables cross project request id tracking. that's cross-project, bestie, she's connected 🌐
  • kwargs β€” all the other params that are passed to keystoneauth for session construction.

πŸ’€ ironicclient.exc module

ironicclient.exc.AmbigiousAuthSystem

alias of AmbiguousAuthSystem. yes the typo is canon, we do not touch it. πŸ™ˆ

exception ironicclient.exc.AmbiguousAuthSystem

Bases: ClientException

could not obtain token and endpoint using provided credentials. the credentials said "no ❀️" 😭

exception ironicclient.exc.InvalidAttribute

Bases: ClientException

(it's giving mysterious. no description given, just vibes πŸ’€)

exception ironicclient.exc.StateTransitionFailed

Bases: ClientException

failed to reach a requested provision state. so close, yet so far πŸ₯²

exception ironicclient.exc.StateTransitionTimeout

Bases: ClientException

timed out while waiting for a requested provision state. she waited, she ghosted πŸ’”

ironicclient.exc.from_response

from_response(response: Response, message: str | None = None,
traceback: str | None = None, method: str | None = None,
url: str | None = None) -> HttpError

return an HttpError instance based on response from httplib/requests. turning that L into a legible error message 🫢


🐚 ironicclient.shell module

class ironicclient.shell.App

Bases: App

build_option_parser

build_option_parser(description: str | None, version: str | None,
argparse_kwargs: dict[str, object] | None = None) -> ArgumentParser

return an argparse option parser for this application.

subclasses may override this method to extend the parser with more global options. go off, subclass πŸ’…

Parameters

  • description (str) β€” full description of the application
  • version (str) β€” version number for the application
  • argparse_kwargs β€” extra keyword argument passed to the ArgumentParser constructor

initialize_app

initialize_app(argv: list[str]) -> None

hook for subclasses to take global initialization action after the arguments are parsed but before a command is run. invoked only once, even in interactive mode. one and done, no reruns ✨

Parameters

  • argv β€” List of arguments, including the subcommand to run. Empty for interactive mode.

class ironicclient.shell.ClientManager

ClientManager(cloud_region: CloudRegion, options: Namespace)

Bases: object

property baremetal: Client

class ironicclient.shell.CommandManager

CommandManager(namespace: str | None = None, convert_underscores: bool = True,
*, ignored_modules: Iterable[str] | None = None)

Bases: CommandManager

load_commands

load_commands(namespace: str) -> None

load all the commands from an entrypoint πŸ“₯

Parameters

  • namespace β€” The namespace to load commands from.

Returns

  • None

ironicclient.shell.main

main(argv: list[str] = ['-M', 'man', 'doc/source', '.sphinx/man', '-v']) -> int

(that default argv is not a drill, it's literally right there πŸŽ€)


πŸ”Ž INDICES AND TABLES

the navigation trio, absolutely serving:

  • Index
  • Module Index
  • Search Page

πŸ–‹οΈ Author

Author name not set β€” anonymous icon behavior, honestly kind of mysterious πŸ’œ

OpenStack Foundation


okay bestie that's the whole page, we ate and left zero crumbs πŸ“βœ¨ this was the 6.3.0 version of PYTHON-IRONICCLIENT(1), dated Jan 02, 1980 (yes, really, the date is camp πŸ’€), and it's filed under the name PYTHON-IRONICCLIENT(1). mwah, go build something iconic πŸ«ΆπŸ‘‘

πŸ“¦ where this page comes from