diff --git a/openstackclient/identity/v2_0/token.py b/openstackclient/identity/v2_0/token.py index a0433c9654..793354cf6f 100644 --- a/openstackclient/identity/v2_0/token.py +++ b/openstackclient/identity/v2_0/token.py @@ -18,6 +18,7 @@ import logging import six +from cliff import command from cliff import show @@ -36,3 +37,24 @@ class CreateToken(show.ShowOne): token = identity_client.service_catalog.get_token() token['project_id'] = token.pop('tenant_id') return zip(*sorted(six.iteritems(token))) + + +class DeleteToken(command.Command): + """Delete token command""" + + log = logging.getLogger(__name__ + '.DeleteToken') + + def get_parser(self, prog_name): + parser = super(DeleteToken, self).get_parser(prog_name) + parser.add_argument( + 'token', + metavar='<token>', + help='Token to be deleted', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + identity_client.tokens.delete(parsed_args.token) + return diff --git a/openstackclient/tests/identity/v2_0/fakes.py b/openstackclient/tests/identity/v2_0/fakes.py index 231fa1a5e7..e57a5b3006 100644 --- a/openstackclient/tests/identity/v2_0/fakes.py +++ b/openstackclient/tests/identity/v2_0/fakes.py @@ -90,6 +90,8 @@ class FakeIdentityv2Client(object): self.services.resource_class = fakes.FakeResource(None, {}) self.tenants = mock.Mock() self.tenants.resource_class = fakes.FakeResource(None, {}) + self.tokens = mock.Mock() + self.tokens.resource_class = fakes.FakeResource(None, {}) self.users = mock.Mock() self.users.resource_class = fakes.FakeResource(None, {}) self.ec2 = mock.Mock() diff --git a/openstackclient/tests/identity/v2_0/test_token.py b/openstackclient/tests/identity/v2_0/test_token.py index a156cdc641..e1967537b2 100644 --- a/openstackclient/tests/identity/v2_0/test_token.py +++ b/openstackclient/tests/identity/v2_0/test_token.py @@ -54,3 +54,24 @@ class TestTokenCreate(TestToken): identity_fakes.user_id, ) self.assertEqual(data, datalist) + + +class TestTokenDelete(TestToken): + + TOKEN = 'fob' + + def setUp(self): + super(TestTokenDelete, self).setUp() + self.tokens_mock = self.app.client_manager.identity.tokens + self.tokens_mock.reset_mock() + self.tokens_mock.delete.return_value = True + self.cmd = token.DeleteToken(self.app, None) + + def test_token_create(self): + arglist = [self.TOKEN] + verifylist = [('token', self.TOKEN)] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + self.cmd.take_action(parsed_args) + + self.tokens_mock.delete.assert_called_with(self.TOKEN) diff --git a/setup.cfg b/setup.cfg index 5a4fa743fe..a1252cb8fe 100644 --- a/setup.cfg +++ b/setup.cfg @@ -152,6 +152,7 @@ openstack.identity.v2_0 = service_show =openstackclient.identity.v2_0.service:ShowService token_create =openstackclient.identity.v2_0.token:CreateToken + token_delete =openstackclient.identity.v2_0.token:DeleteToken user_role_list = openstackclient.identity.v2_0.role:ListUserRole