diff options
author | Zuul <zuul@review.openstack.org> | 2017-11-07 13:37:23 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-11-07 13:37:23 +0000 |
commit | bdfa1655ad1072447ded5b56a85dfc1da9767858 (patch) | |
tree | adb81d99e49412c9b75ace6704223319a6adc60d | |
parent | 98ad00fe69523dcf69f5f06df0247be7a7fb171e (diff) | |
parent | 07290220762e023f1e197a7d854228d4d09fce7a (diff) | |
download | python-ironicclient-bdfa1655ad1072447ded5b56a85dfc1da9767858.tar.gz |
Merge "Add ability to provide configdrive when rebuilding with OSC"
-rw-r--r-- | ironicclient/osc/plugin.py | 2 | ||||
-rwxr-xr-x | ironicclient/osc/v1/baremetal_node.py | 21 | ||||
-rw-r--r-- | ironicclient/tests/unit/osc/v1/test_baremetal_node.py | 21 | ||||
-rw-r--r-- | releasenotes/notes/osc-node-rebuild-configdrive-8979d5b1373e8d5f.yaml | 7 |
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. |