summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago da Silva <thiago@redhat.com>2014-01-23 13:43:28 -0500
committerChetan Risbud <crisbud@redhat.com>2014-02-05 06:23:04 -0800
commit3ee9a70402764f21dbea387aa75d81999b224beb (patch)
treeefb73e2ba522b97a5a9300a267188b7ac86bf891
parentec2c548af9067e73e9e6c6a34a1438a3ff7e94a2 (diff)
adding error handling to gswauth-cleanup-tokens tool
added input validation for a couple of options and error handling in case a non-existing account name is provided Change-Id: I6d703d584552fc7b7574f34e79ed25a2982b6d5e Signed-off-by: Thiago da Silva <thiago@redhat.com> Reviewed-on: http://review.gluster.org/6767 Reviewed-by: Prashanth Pai <ppai@redhat.com> Tested-by: Prashanth Pai <ppai@redhat.com> Reviewed-by: pushpesh sharma <psharma@redhat.com> Tested-by: pushpesh sharma <psharma@redhat.com> Reviewed-by: Chetan Risbud <crisbud@redhat.com>
-rwxr-xr-xgluster/swift/common/middleware/gswauth/bin/gswauth-cleanup-tokens29
-rw-r--r--test/functional_auth/gswauth/test_gswauth_cli.py8
2 files changed, 27 insertions, 10 deletions
diff --git a/gluster/swift/common/middleware/gswauth/bin/gswauth-cleanup-tokens b/gluster/swift/common/middleware/gswauth/bin/gswauth-cleanup-tokens
index 3f3593b..ce18501 100755
--- a/gluster/swift/common/middleware/gswauth/bin/gswauth-cleanup-tokens
+++ b/gluster/swift/common/middleware/gswauth/bin/gswauth-cleanup-tokens
@@ -60,19 +60,39 @@ if __name__ == '__main__':
parser.parse_args(['-h'])
if options.admin_key is None:
parser.parse_args(['-h'])
+
options.admin_url = options.admin_url.rstrip('/')
if not options.admin_url.endswith('/v1.0'):
options.admin_url += '/v1.0'
options.admin_user = '.super_admin:.super_admin'
- options.token_life = timedelta(0, float(options.token_life))
- options.sleep = float(options.sleep)
+
+ try:
+ options.token_life = timedelta(0, float(options.token_life))
+ options.sleep = float(options.sleep)
+ except ValueError:
+ parser.parse_args(['-h'])
+
conn = Connection(options.admin_url, options.admin_user, options.admin_key)
if options.purge_account:
marker = None
while True:
if options.verbose:
print 'GET %s?marker=%s' % (options.purge_account, marker)
- objs = conn.get_container(options.purge_account, marker=marker)[1]
+ try:
+ objs = conn.get_container(options.purge_account,
+ marker=marker)[1]
+ except ClientException, e:
+ if e.http_status == 404:
+ exit('Account %s not found.' % (options.purge_account))
+ elif e.http_status == 401:
+ exit('Cleanup tokens failed: 401 Unauthorized: ' \
+ 'Invalid user/key provided')
+ else:
+ exit('Purging %s failed with status '
+ 'code %d' % (options.purge_account, e.http_status))
+ except socket.error, (errno, msg):
+ exit('Token clean-up failed: %s. ' \
+ 'Check that the admin_url is valid' % msg)
if objs:
marker = objs[-1]['name']
else:
@@ -112,7 +132,8 @@ if __name__ == '__main__':
exit('Container %s not found. gswauth-prep needs to be '
'rerun' % (container))
elif e.http_status == 401:
- exit('Cleanup tokens failed: 401 Unauthorized: Invalid user/key provided')
+ exit('Cleanup tokens failed: 401 Unauthorized: ' \
+ 'Invalid user/key provided')
else:
exit('Object listing on container %s failed with status '
'code %d' % (container, e.http_status))
diff --git a/test/functional_auth/gswauth/test_gswauth_cli.py b/test/functional_auth/gswauth/test_gswauth_cli.py
index 040b577..bc55ed9 100644
--- a/test/functional_auth/gswauth/test_gswauth_cli.py
+++ b/test/functional_auth/gswauth/test_gswauth_cli.py
@@ -766,15 +766,11 @@ class TestCleanUPToken(unittest.TestCase):
#https://bugs.launchpad.net/gluster-swift/+bug/1271550
#cleanup token with token-life option non numeric value
(status,output)=Utils.cleanToken(option='token-life', value='notanumaric')
- self.assertNotEqual(status, 0, 'clean up success with token-life option token-life non numeric value'+output)
- self.assertEqual('ValueError' in output,True, 'clean up \
- success with token-life option non numeric value: '+output)
+ self.assertEqual('Usage:' in output, True, 'clean up success with token-life option non numeric value'+output)
#cleanup token with sleep option non numeric value
(status,output)=Utils.cleanToken(option='sleep', value='notanumeric')
- self.assertNotEqual(status, 0, 'clean up failed with sleep option non numeric value'+output)
- self.assertEqual('ValueError' in output,True, 'clean up \
- success with token-life option non numeric value: '+output)
+ self.assertEqual('Usage:' in output, True, 'clean up success with sleep option non numeric value'+output)
def testSetAccountService(self):
self.setTestAccUserEnv()