diff --git a/ironicclient/osc/v1/baremetal_create.py b/ironicclient/osc/v1/baremetal_create.py index c16db10b9..5d23ddbf2 100644 --- a/ironicclient/osc/v1/baremetal_create.py +++ b/ironicclient/osc/v1/baremetal_create.py @@ -10,69 +10,28 @@ # License for the specific language governing permissions and limitations # under the License. -import argparse import logging +from osc_lib.command import command + from ironicclient.common.i18n import _ -from ironicclient import exc -from ironicclient.osc.v1 import baremetal_node from ironicclient.v1 import create_resources -class CreateBaremetal(baremetal_node.CreateBaremetalNode): - """Create resources from files or Register a new node (DEPRECATED). - - Create resources from files (by only specifying the files) or register - a new node by specifying one or more optional arguments (DEPRECATED, - use 'openstack baremetal node create' instead). - """ +class CreateBaremetal(command.Command): + """Create resources from files""" log = logging.getLogger(__name__ + ".CreateBaremetal") - def get_description(self): - return _("Create resources from files (by only specifying the files) " - "or register a new node by specifying one or more optional " - "arguments (DEPRECATED, use 'openstack baremetal node " - "create' instead)") - - # TODO(vdrok): Remove support for new node creation after 11-July-2017 - # during the 'Queens' cycle. def get_parser(self, prog_name): parser = super(CreateBaremetal, self).get_parser(prog_name) - # NOTE(vdrok): It is a workaround to allow --driver to be optional for - # openstack create command while creation of nodes via this command is - # not removed completely - parser = argparse.ArgumentParser(parents=[parser], - conflict_handler='resolve', - description=self.__doc__) + parser.add_argument( - '--driver', - metavar='', - help=_('Specify this and any other optional arguments if you want ' - 'to create a node only. Note that this is deprecated; ' - 'please use "openstack baremetal node create" instead.')) - parser.add_argument( - "resource_files", metavar="", default=[], nargs="*", + "resource_files", metavar="", nargs="+", help=_("File (.yaml or .json) containing descriptions of the " - "resources to create. Can be specified multiple times. If " - "you want to create resources, only specify the files. Do " - "not specify any of the optional arguments.")) + "resources to create. Can be specified multiple times.")) return parser def take_action(self, parsed_args): - if parsed_args.driver: - self.log.warning("This command is deprecated. Instead, use " - "'openstack baremetal node create'.") - return super(CreateBaremetal, self).take_action(parsed_args) - if not parsed_args.resource_files: - raise exc.ValidationError(_( - "If --driver is not supplied to openstack create command, " - "it is considered that it will create ironic resources from " - "one or more .json or .yaml files, but no files provided.")) create_resources.create_resources(self.app.client_manager.baremetal, parsed_args.resource_files) - # NOTE(vdrok): CreateBaremetal is still inherited from ShowOne class, - # which requires the return value of the function to be of certain - # type, leave this workaround until creation of nodes is removed and - # then change it so that this inherits from command.Command - return tuple(), tuple() diff --git a/ironicclient/osc/v1/baremetal_node.py b/ironicclient/osc/v1/baremetal_node.py index 49e1e20a8..b3b5d387d 100755 --- a/ironicclient/osc/v1/baremetal_node.py +++ b/ironicclient/osc/v1/baremetal_node.py @@ -470,18 +470,6 @@ class DeleteBaremetalNode(command.Command): raise exc.ClientException("\n".join(failures)) -class DeleteBaremetal(DeleteBaremetalNode): - """Unregister a baremetal node. DEPRECATED""" - - # TODO(thrash): Remove after 11-July-2017 during the 'Queens' cycle. - log = logging.getLogger(__name__ + ".DeleteBaremetal") - - def take_action(self, parsed_args): - self.log.warning("This command is deprecated. Instead, use " - "'openstack baremetal node delete'.") - super(DeleteBaremetal, self).take_action(parsed_args) - - class DeployBaremetalNode(ProvisionStateWithWait): """Set provision state of baremetal node to 'deploy'""" @@ -656,18 +644,6 @@ class ListBaremetalNode(command.Lister): 'Properties': oscutils.format_dict},) for s in data)) -class ListBaremetal(ListBaremetalNode): - """List baremetal nodes. DEPRECATED""" - - # TODO(thrash): Remove after 11-July-2017 during the 'Queens' cycle. - log = logging.getLogger(__name__ + ".ListBaremetal") - - def take_action(self, parsed_args): - self.log.warning("This command is deprecated. Instead, use " - "'openstack baremetal node list'.") - return super(ListBaremetal, self).take_action(parsed_args) - - class MaintenanceSetBaremetalNode(command.Command): """Set baremetal node to maintenance mode""" @@ -1157,18 +1133,6 @@ class SetBaremetalNode(command.Command): self.log.warning("Please specify what to set.") -class SetBaremetal(SetBaremetalNode): - """Set baremetal properties. DEPRECATED""" - - # TODO(thrash): Remove after 11-July-2017 during the 'Queens' cycle. - log = logging.getLogger(__name__ + ".SetBaremetal") - - def take_action(self, parsed_args): - self.log.warning("This command is deprecated. Instead, use " - "'openstack baremetal node set'.") - return super(SetBaremetal, self).take_action(parsed_args) - - class ShowBaremetalNode(command.ShowOne): """Show baremetal node details""" @@ -1223,18 +1187,6 @@ class ShowBaremetalNode(command.ShowOne): return self.dict2columns(node) -class ShowBaremetal(ShowBaremetalNode): - """Show baremetal node details. DEPRECATED""" - - # TODO(thrash): Remove after 11-July-2017 during the 'Queens' cycle. - log = logging.getLogger(__name__ + ".ShowBaremetal") - - def take_action(self, parsed_args): - self.log.warning("This command is deprecated. Instead, use " - "'openstack baremetal node show'.") - return super(ShowBaremetal, self).take_action(parsed_args) - - class UndeployBaremetalNode(ProvisionStateWithWait): """Set provision state of baremetal node to 'deleted'""" @@ -1448,18 +1400,6 @@ class UnsetBaremetalNode(command.Command): self.log.warning("Please specify what to unset.") -class UnsetBaremetal(UnsetBaremetalNode): - """Unset baremetal properties. DEPRECATED""" - - # TODO(thrash): Remove after 11-July-2017 during the 'Queens' cycle. - log = logging.getLogger(__name__ + ".UnsetBaremetal") - - def take_action(self, parsed_args): - self.log.warning("This command is deprecated. Instead, use " - "'openstack baremetal node unset'.") - super(UnsetBaremetal, self).take_action(parsed_args) - - class ValidateBaremetalNode(command.Lister): """Validate a node's driver interfaces""" diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_create.py b/ironicclient/tests/unit/osc/v1/test_baremetal_create.py index f3cfbf111..893de9f12 100644 --- a/ironicclient/tests/unit/osc/v1/test_baremetal_create.py +++ b/ironicclient/tests/unit/osc/v1/test_baremetal_create.py @@ -11,10 +11,10 @@ # under the License. # -import copy import mock -from ironicclient import exc +from osc_lib.tests import utils as oscutils + from ironicclient.osc.v1 import baremetal_create from ironicclient.tests.unit.osc.v1 import fakes as baremetal_fakes from ironicclient.v1 import create_resources @@ -25,46 +25,11 @@ class TestBaremetalCreate(baremetal_fakes.TestBaremetal): super(TestBaremetalCreate, self).setUp() self.cmd = baremetal_create.CreateBaremetal(self.app, None) - def test_baremetal_create_with_driver(self): - self.baremetal_mock = self.app.client_manager.baremetal - self.baremetal_mock.reset_mock() - self.baremetal_mock.node.create.return_value = ( - baremetal_fakes.FakeBaremetalResource( - None, - copy.deepcopy(baremetal_fakes.BAREMETAL), - loaded=True, - )) - - arglist = ['--driver', 'fake_driver'] - verifylist = [('driver', 'fake_driver')] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # DisplayCommandBase.take_action() returns two tuples - columns, data = self.cmd.take_action(parsed_args) - - self.assertEqual(('chassis_uuid', - 'instance_uuid', - 'maintenance', - 'name', - 'power_state', - 'provision_state', - 'uuid'), columns) - self.assertEqual( - (baremetal_fakes.baremetal_chassis_uuid_empty, - baremetal_fakes.baremetal_instance_uuid, - baremetal_fakes.baremetal_maintenance, - baremetal_fakes.baremetal_name, - baremetal_fakes.baremetal_power_state, - baremetal_fakes.baremetal_provision_state, - baremetal_fakes.baremetal_uuid), tuple(data)) - - self.baremetal_mock.node.create.assert_called_once_with( - driver='fake_driver') - def test_baremetal_create_no_args(self): - parsed_args = self.check_parser(self.cmd, [], []) - self.assertRaises(exc.ValidationError, - self.cmd.take_action, parsed_args) + arglist = [] + verifylist = [] + self.assertRaises(oscutils.ParserException, self.check_parser, + self.cmd, arglist, verifylist) @mock.patch.object(create_resources, 'create_resources', autospec=True) def test_baremetal_create_resource_files(self, mock_create): @@ -72,7 +37,6 @@ class TestBaremetalCreate(baremetal_fakes.TestBaremetal): verifylist = [('resource_files', ['file.yaml', 'file.json'])] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - # DisplayCommandBase.take_action() returns two tuples - self.assertEqual((tuple(), tuple()), self.cmd.take_action(parsed_args)) + self.cmd.take_action(parsed_args) mock_create.assert_called_once_with(self.app.client_manager.baremetal, ['file.yaml', 'file.json']) diff --git a/releasenotes/notes/remove-deprecated-osc-cmd-6dc980299d2fbde4.yaml b/releasenotes/notes/remove-deprecated-osc-cmd-6dc980299d2fbde4.yaml new file mode 100644 index 000000000..264912440 --- /dev/null +++ b/releasenotes/notes/remove-deprecated-osc-cmd-6dc980299d2fbde4.yaml @@ -0,0 +1,24 @@ +--- +upgrade: + - | + The following previously deprecated commands were removed: + + * ``openstack baremetal delete`` + * ``openstack baremetal list`` + * ``openstack baremetal show`` + * ``openstack baremetal set`` + * ``openstack baremetal unset`` + + The equivalent commands are: + + * ``openstack baremetal node delete`` + * ``openstack baremetal node list`` + * ``openstack baremetal node show`` + * ``openstack baremetal node set`` + * ``openstack baremetal node unset`` + + The support of creating a single node by ``openstack baremetal create`` + is removed, the equivalent command is ``openstack baremetal node create``. + The only valid usage of ``openstack baremetal create`` now is to create + various resources (chassis, node, port, portgroup, etc.) from resource + file(s). diff --git a/setup.cfg b/setup.cfg index 37e95777f..940a55577 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,14 +35,12 @@ openstack.baremetal.v1 = baremetal_chassis_show = ironicclient.osc.v1.baremetal_chassis:ShowBaremetalChassis baremetal_chassis_unset = ironicclient.osc.v1.baremetal_chassis:UnsetBaremetalChassis baremetal_create = ironicclient.osc.v1.baremetal_create:CreateBaremetal - baremetal_delete = ironicclient.osc.v1.baremetal_node:DeleteBaremetal baremetal_driver_list = ironicclient.osc.v1.baremetal_driver:ListBaremetalDriver baremetal_driver_passthru_call = ironicclient.osc.v1.baremetal_driver:PassthruCallBaremetalDriver baremetal_driver_passthru_list = ironicclient.osc.v1.baremetal_driver:PassthruListBaremetalDriver baremetal_driver_property_list = ironicclient.osc.v1.baremetal_driver:ListBaremetalDriverProperty baremetal_driver_raid_property_list = ironicclient.osc.v1.baremetal_driver:ListBaremetalDriverRaidProperty baremetal_driver_show = ironicclient.osc.v1.baremetal_driver:ShowBaremetalDriver - baremetal_list = ironicclient.osc.v1.baremetal_node:ListBaremetal baremetal_node_abort = ironicclient.osc.v1.baremetal_node:AbortBaremetalNode baremetal_node_adopt = ironicclient.osc.v1.baremetal_node:AdoptBaremetalNode baremetal_node_boot_device_set = ironicclient.osc.v1.baremetal_node:BootdeviceSetBaremetalNode @@ -98,9 +96,6 @@ openstack.baremetal.v1 = baremetal_volume_target_set = ironicclient.osc.v1.baremetal_volume_target:SetBaremetalVolumeTarget baremetal_volume_target_show = ironicclient.osc.v1.baremetal_volume_target:ShowBaremetalVolumeTarget baremetal_volume_target_unset = ironicclient.osc.v1.baremetal_volume_target:UnsetBaremetalVolumeTarget - baremetal_set = ironicclient.osc.v1.baremetal_node:SetBaremetal - baremetal_show = ironicclient.osc.v1.baremetal_node:ShowBaremetal - baremetal_unset = ironicclient.osc.v1.baremetal_node:UnsetBaremetal [pbr] autodoc_index_modules = True