adding tabular output to swauth-list
swauth-list now shows lists of accounts, users and groups in a tabular format (default). JSON and plain-text options are still available Change-Id: I897009f5f6c05aa4c14e306bb6ad35234e993fcd Signed-off-by: Thiago da Silva <thiago@redhat.com> Reviewed-on: http://review.gluster.org/6347 Reviewed-by: Luis Pabon <lpabon@redhat.com> Tested-by: Luis Pabon <lpabon@redhat.com>
This commit is contained in:
parent
3796a1c757
commit
ba6171a2df
@ -26,6 +26,7 @@ from sys import argv, exit
|
||||
from swift.common.bufferedhttp import http_connect_raw as http_connect
|
||||
from swift.common.utils import urlparse
|
||||
|
||||
from prettytable import PrettyTable
|
||||
|
||||
if __name__ == '__main__':
|
||||
gettext.install('swauth', unicode=1)
|
||||
@ -34,11 +35,11 @@ Usage: %prog [options] [account] [user]
|
||||
|
||||
If [account] and [user] are omitted, a list of accounts will be output.
|
||||
|
||||
If [account] is included but not [user], an account's information will be
|
||||
output, including a list of users within the account.
|
||||
If [account] is included but not [user], a list of users within the account
|
||||
will be output.
|
||||
|
||||
If [account] and [user] are included, the user's information will be output,
|
||||
including a list of groups the user belongs to.
|
||||
If [account] and [user] are included, a list of groups the user belongs to
|
||||
will be ouptput.
|
||||
|
||||
If the [user] is '.groups', the active groups for the account will be listed.
|
||||
'''.strip())
|
||||
@ -46,6 +47,10 @@ If the [user] is '.groups', the active groups for the account will be listed.
|
||||
action='store_true', default=False, help='Changes the output from '
|
||||
'JSON to plain text. This will cause an account to list only the '
|
||||
'users and a user to list only the groups.')
|
||||
parser.add_option('-j', '--json', dest='json_format',
|
||||
action='store_true', default=False, help='Output in JSON format. '
|
||||
'This will print all information about given account or user, '
|
||||
'including stored password.')
|
||||
parser.add_option('-A', '--admin-url', dest='admin_url',
|
||||
default='http://127.0.0.1:8080/auth/', help='The URL to the auth '
|
||||
'subsystem (default: http://127.0.0.1:8080/auth/')
|
||||
@ -82,5 +87,12 @@ If the [user] is '.groups', the active groups for the account will be listed.
|
||||
info = json.loads(body)
|
||||
for group in info[['accounts', 'users', 'groups'][len(args)]]:
|
||||
print group['name']
|
||||
else:
|
||||
elif options.json_format:
|
||||
print body
|
||||
else:
|
||||
info = json.loads(body)
|
||||
h = ['accounts', 'users', 'groups'][len(args)]
|
||||
table = PrettyTable([h.title()])
|
||||
for group in info[h]:
|
||||
table.add_row([group['name']])
|
||||
print table
|
||||
|
@ -23,6 +23,7 @@ BuildRequires: python-setuptools
|
||||
Requires : memcached
|
||||
Requires : openssl
|
||||
Requires : python
|
||||
Requires : python-prettytable
|
||||
Requires : openstack-swift = 1.10.0
|
||||
Requires : openstack-swift-account = 1.10.0
|
||||
Requires : openstack-swift-container = 1.10.0
|
||||
|
@ -33,6 +33,10 @@ class Utils:
|
||||
def deleteAccount(self,account_name,authurl='http://127.0.0.1:8080/auth/',user=config['admin_user'],key=config['admin_key']):
|
||||
return commands.getstatusoutput('swauth-delete-account %s -A %s -U %s -K %s' % (account_name,authurl, user, key))
|
||||
|
||||
@classmethod
|
||||
def listAccounts(self,authurl='http://127.0.0.1:8080/auth/',user=config['admin_user'],key=config['admin_key']):
|
||||
return commands.getstatusoutput('swauth-list -A %s -U %s -K %s' % (authurl, user, key))
|
||||
|
||||
@classmethod
|
||||
def swauthPrep(self,authurl='http://127.0.0.1:8080/auth/',user=config['admin_user'],key=config['admin_key']):
|
||||
return commands.getstatusoutput('swauth-prep -A %s -U %s -K %s' % (authurl, user, key))
|
||||
@ -56,8 +60,8 @@ class Utils:
|
||||
@classmethod
|
||||
def cleanAll(self):
|
||||
#TODO:It's a dirty hack,any suggestions?
|
||||
commands.getstatusoutput('rm -rf '+os.path.join(config['devices'], config['gsmetadata_volume'], '*'))
|
||||
commands.getstatusoutput('rm -rf '+os.path.join(config['devices'], config['gsmetadata_volume'], '.*'))
|
||||
commands.getstatusoutput('sudo rm -rf '+os.path.join(config['devices'], config['gsmetadata_volume'], '*'))
|
||||
return commands.getstatusoutput('sudo rm -rf '+os.path.join(config['devices'], config['gsmetadata_volume'], '.*'))
|
||||
|
||||
|
||||
class TestSwauthPrep(unittest.TestCase):
|
||||
@ -158,6 +162,15 @@ class TestAccount(unittest.TestCase):
|
||||
self.assertNotEqual(status, 0, 'account deletion failed for accountdoesnotexist'+output)
|
||||
#TODO:more cases
|
||||
|
||||
def testListAcounts(self):
|
||||
(status,output)=Utils.addAccount('test')
|
||||
self.assertEqual(status, 0, 'account creation failed'+output)
|
||||
|
||||
(status,output)=Utils.listAccounts()
|
||||
self.assertEqual(output,
|
||||
'+----------+\n| Accounts |\n+----------+\n| test |\n+----------+',
|
||||
'swauth-list failed:\n%s' % output)
|
||||
|
||||
|
||||
class TestUser(unittest.TestCase):
|
||||
|
||||
|
@ -11,3 +11,4 @@ nosehtmloutput
|
||||
sphinx>=1.1.2
|
||||
mock>=0.8.0
|
||||
python-keystoneclient
|
||||
prettytable
|
||||
|
Loading…
Reference in New Issue
Block a user