diff --git a/doc/source/command-objects/address-scope.rst b/doc/source/command-objects/address-scope.rst index d7eac28316..2f922353b0 100644 --- a/doc/source/command-objects/address-scope.rst +++ b/doc/source/command-objects/address-scope.rst @@ -46,3 +46,19 @@ Create new address scope .. describe:: New address scope name + +address scope delete +-------------------- + +Delete an address scope + +.. program:: address scope delete +.. code:: bash + + os address scope delete + + +.. _address_scope_delete-address-scope: +.. describe:: + + Address scope to delete (name or ID) diff --git a/openstackclient/network/v2/address_scope.py b/openstackclient/network/v2/address_scope.py index eba889514d..361fd3600a 100644 --- a/openstackclient/network/v2/address_scope.py +++ b/openstackclient/network/v2/address_scope.py @@ -94,3 +94,22 @@ class CreateAddressScope(command.ShowOne): data = utils.get_item_properties(obj, columns, formatters={}) return columns, data + + +class DeleteAddressScope(command.Command): + """Delete an address scope""" + + def get_parser(self, prog_name): + parser = super(DeleteAddressScope, self).get_parser(prog_name) + parser.add_argument( + 'address_scope', + metavar="", + help=_("Address scope to delete (name or ID)") + ) + + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.network + obj = client.find_address_scope(parsed_args.address_scope) + client.delete_address_scope(obj) diff --git a/openstackclient/tests/network/v2/test_address_scope.py b/openstackclient/tests/network/v2/test_address_scope.py index f37512cd5d..3168ea3f6f 100644 --- a/openstackclient/tests/network/v2/test_address_scope.py +++ b/openstackclient/tests/network/v2/test_address_scope.py @@ -162,3 +162,34 @@ class TestCreateAddressScope(TestAddressScope): }) self.assertEqual(self.columns, columns) self.assertEqual(self.data, data) + + +class TestDeleteAddressScope(TestAddressScope): + + # The address scope to delete. + _address_scope = ( + network_fakes.FakeAddressScope.create_one_address_scope()) + + def setUp(self): + super(TestDeleteAddressScope, self).setUp() + self.network.delete_address_scope = mock.Mock(return_value=None) + self.network.find_address_scope = mock.Mock( + return_value=self._address_scope) + + # Get the command object to test + self.cmd = address_scope.DeleteAddressScope(self.app, self.namespace) + + def test_delete(self): + arglist = [ + self._address_scope.name, + ] + verifylist = [ + ('address_scope', self._address_scope.name), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + self.network.delete_address_scope.assert_called_once_with( + self._address_scope) + self.assertIsNone(result) diff --git a/setup.cfg b/setup.cfg index de8f716501..ae9842301b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -320,6 +320,7 @@ openstack.image.v2 = openstack.network.v2 = address_scope_create = openstackclient.network.v2.address_scope:CreateAddressScope + address_scope_delete = openstackclient.network.v2.address_scope:DeleteAddressScope ip_floating_create = openstackclient.network.v2.floating_ip:CreateFloatingIP ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP