summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-11-07 13:37:23 +0000
committerGerrit Code Review <review@openstack.org>2017-11-07 13:37:23 +0000
commitbdfa1655ad1072447ded5b56a85dfc1da9767858 (patch)
treeadb81d99e49412c9b75ace6704223319a6adc60d
parent98ad00fe69523dcf69f5f06df0247be7a7fb171e (diff)
parent07290220762e023f1e197a7d854228d4d09fce7a (diff)
downloadpython-ironicclient-bdfa1655ad1072447ded5b56a85dfc1da9767858.tar.gz
Merge "Add ability to provide configdrive when rebuilding with OSC"
-rw-r--r--ironicclient/osc/plugin.py2
-rwxr-xr-xironicclient/osc/v1/baremetal_node.py21
-rw-r--r--ironicclient/tests/unit/osc/v1/test_baremetal_node.py21
-rw-r--r--releasenotes/notes/osc-node-rebuild-configdrive-8979d5b1373e8d5f.yaml7
4 files changed, 46 insertions, 5 deletions
diff --git a/ironicclient/osc/plugin.py b/ironicclient/osc/plugin.py
index 5723672..4f604e0 100644
--- a/ironicclient/osc/plugin.py
+++ b/ironicclient/osc/plugin.py
@@ -26,7 +26,7 @@ LOG = logging.getLogger(__name__)
CLIENT_CLASS = 'ironicclient.v1.client.Client'
API_VERSION_OPTION = 'os_baremetal_api_version'
API_NAME = 'baremetal'
-LAST_KNOWN_API_VERSION = 34
+LAST_KNOWN_API_VERSION = 35
LATEST_VERSION = "1.{}".format(LAST_KNOWN_API_VERSION)
API_VERSIONS = {
'1.%d' % i: CLIENT_CLASS
diff --git a/ironicclient/osc/v1/baremetal_node.py b/ironicclient/osc/v1/baremetal_node.py
index b3b5d38..1e558f0 100755
--- a/ironicclient/osc/v1/baremetal_node.py
+++ b/ironicclient/osc/v1/baremetal_node.py
@@ -27,6 +27,12 @@ from ironicclient import exc
from ironicclient.v1 import resource_fields as res_fields
from ironicclient.v1 import utils as v1_utils
+CONFIG_DRIVE_ARG_HELP = _(
+ "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. In case it's "
+ "a directory, a config drive will be generated from it.")
+
class ProvisionStateBaremetalNode(command.Command):
"""Base provision state class"""
@@ -483,10 +489,7 @@ class DeployBaremetalNode(ProvisionStateWithWait):
'--config-drive',
metavar='<config-drive>',
default=None,
- help=_("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. In case it's "
- "a directory, a config drive will be generated from it. "))
+ help=CONFIG_DRIVE_ARG_HELP)
return parser
@@ -898,6 +901,16 @@ class RebuildBaremetalNode(ProvisionStateWithWait):
log = logging.getLogger(__name__ + ".RebuildBaremetalNode")
PROVISION_STATE = 'rebuild'
+ def get_parser(self, prog_name):
+ parser = super(RebuildBaremetalNode, self).get_parser(prog_name)
+
+ parser.add_argument(
+ '--config-drive',
+ metavar='<config-drive>',
+ default=None,
+ help=CONFIG_DRIVE_ARG_HELP)
+ return parser
+
class SetBaremetalNode(command.Command):
"""Set baremetal properties"""
diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
index 33fcac6..a14f7ea 100644
--- a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
+++ b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
@@ -1489,6 +1489,23 @@ class TestRebuildBaremetalProvisionState(TestBaremetal):
# Get the command object to test
self.cmd = baremetal_node.RebuildBaremetalNode(self.app, None)
+ def test_rebuild_baremetal_provision_state_active_and_configdrive(self):
+ arglist = ['node_uuid',
+ '--config-drive', 'path/to/drive']
+ verifylist = [
+ ('node', 'node_uuid'),
+ ('provision_state', 'rebuild'),
+ ('config_drive', 'path/to/drive'),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ self.baremetal_mock.node.set_provision_state.assert_called_once_with(
+ 'node_uuid', 'rebuild',
+ cleansteps=None, configdrive='path/to/drive')
+
def test_rebuild_no_wait(self):
arglist = ['node_uuid']
verifylist = [
@@ -1500,6 +1517,10 @@ class TestRebuildBaremetalProvisionState(TestBaremetal):
self.cmd.take_action(parsed_args)
+ self.baremetal_mock.node.set_provision_state.assert_called_once_with(
+ 'node_uuid', 'rebuild',
+ cleansteps=None, configdrive=None)
+
self.baremetal_mock.node.wait_for_provision_state.assert_not_called()
def test_rebuild_baremetal_provision_state_active_and_wait(self):
diff --git a/releasenotes/notes/osc-node-rebuild-configdrive-8979d5b1373e8d5f.yaml b/releasenotes/notes/osc-node-rebuild-configdrive-8979d5b1373e8d5f.yaml
new file mode 100644
index 0000000..db4e525
--- /dev/null
+++ b/releasenotes/notes/osc-node-rebuild-configdrive-8979d5b1373e8d5f.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Adds the ability to specify a configuration drive when
+ rebuilding a node, via the ``--config-drive`` option to the
+ ``openstack baremetal node rebuild`` command. This is available starting
+ with ironic API version 1.35.