Skip to content

Commit d6321c0

Browse files
committed
Add token delete command for identity v2
Identity v2 has undocumented support for token delete and keystoneclient also has support. Change-Id: Ib98d17958ceb88f7b63471691dee71fdb884ce2e Closes-Bug: #1318442
1 parent 870e7dd commit d6321c0

4 files changed

Lines changed: 46 additions & 0 deletions

File tree

‎openstackclient/identity/v2_0/token.py‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import logging
1919
import six
2020

21+
from cliff import command
2122
from cliff import show
2223

2324

@@ -36,3 +37,24 @@ def take_action(self, parsed_args):
3637
token = identity_client.service_catalog.get_token()
3738
token['project_id'] = token.pop('tenant_id')
3839
return zip(*sorted(six.iteritems(token)))
40+
41+
42+
class DeleteToken(command.Command):
43+
"""Delete token command"""
44+
45+
log = logging.getLogger(__name__ + '.DeleteToken')
46+
47+
def get_parser(self, prog_name):
48+
parser = super(DeleteToken, self).get_parser(prog_name)
49+
parser.add_argument(
50+
'token',
51+
metavar='<token>',
52+
help='Token to be deleted',
53+
)
54+
return parser
55+
56+
def take_action(self, parsed_args):
57+
self.log.debug('take_action(%s)' % parsed_args)
58+
identity_client = self.app.client_manager.identity
59+
identity_client.tokens.delete(parsed_args.token)
60+
return

‎openstackclient/tests/identity/v2_0/fakes.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ def __init__(self, **kwargs):
9090
self.services.resource_class = fakes.FakeResource(None, {})
9191
self.tenants = mock.Mock()
9292
self.tenants.resource_class = fakes.FakeResource(None, {})
93+
self.tokens = mock.Mock()
94+
self.tokens.resource_class = fakes.FakeResource(None, {})
9395
self.users = mock.Mock()
9496
self.users.resource_class = fakes.FakeResource(None, {})
9597
self.ec2 = mock.Mock()

‎openstackclient/tests/identity/v2_0/test_token.py‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,24 @@ def test_token_create(self):
5454
identity_fakes.user_id,
5555
)
5656
self.assertEqual(data, datalist)
57+
58+
59+
class TestTokenDelete(TestToken):
60+
61+
TOKEN = 'fob'
62+
63+
def setUp(self):
64+
super(TestTokenDelete, self).setUp()
65+
self.tokens_mock = self.app.client_manager.identity.tokens
66+
self.tokens_mock.reset_mock()
67+
self.tokens_mock.delete.return_value = True
68+
self.cmd = token.DeleteToken(self.app, None)
69+
70+
def test_token_create(self):
71+
arglist = [self.TOKEN]
72+
verifylist = [('token', self.TOKEN)]
73+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
74+
75+
self.cmd.take_action(parsed_args)
76+
77+
self.tokens_mock.delete.assert_called_with(self.TOKEN)

‎setup.cfg‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ openstack.identity.v2_0 =
152152
service_show =openstackclient.identity.v2_0.service:ShowService
153153

154154
token_create =openstackclient.identity.v2_0.token:CreateToken
155+
token_delete =openstackclient.identity.v2_0.token:DeleteToken
155156

156157
user_role_list = openstackclient.identity.v2_0.role:ListUserRole
157158

0 commit comments

Comments
 (0)