summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authortermie <github@anarkystic.com>2011-11-14 15:50:46 -0800
committertermie <github@anarkystic.com>2011-11-14 15:50:46 -0800
commit1335e4c2ea5a9edac23d00a235016d88887fb701 (patch)
tree4a26ac423782fcc486c8e33d80f913e0e9e881b1 /bin
parent9d998211529fb6de24d7a62718ad2a850f19557e (diff)
downloadkeystone-1335e4c2ea5a9edac23d00a235016d88887fb701.tar.gz
keystone-1335e4c2ea5a9edac23d00a235016d88887fb701.tar.xz
keystone-1335e4c2ea5a9edac23d00a235016d88887fb701.zip
cli for adding users, tenants, extras
Diffstat (limited to 'bin')
-rwxr-xr-xbin/keystone5
-rwxr-xr-xbin/ksl75
2 files changed, 77 insertions, 3 deletions
diff --git a/bin/keystone b/bin/keystone
index 8347fe22..f902c31b 100755
--- a/bin/keystone
+++ b/bin/keystone
@@ -28,7 +28,8 @@ if __name__ == '__main__':
conf = len(sys.argv) > 1 and sys.argv[1] or default_conf
app = deploy.loadapp('config:%s' % conf)
+ options = deploy.appconfig('config:%s' % conf)
server = wsgi.Server()
- server.start(app, int(app.options['public_port']))
- server.start(app, int(app.options['admin_port']))
+ server.start(app, int(options['public_port']))
+ server.start(app, int(options['admin_port']))
server.wait()
diff --git a/bin/ksl b/bin/ksl
index e8f2587a..46b89136 100755
--- a/bin/ksl
+++ b/bin/ksl
@@ -5,9 +5,16 @@ import sys
import cli.app
import cli.log
+from keystonelight import client
+
DEFAULT_PARAMS = (
- (('--url',), {'dest': 'url', 'action': 'store'}),
+ (('--config',), {'dest': 'configfile',
+ 'action': 'store',
+ 'default': './etc/default.conf'}),
+ (('--url',), {'dest': 'url',
+ 'action': 'store',
+ 'default': 'http://localhost:5000'}),
(('--token',), {'dest': 'token', 'action': 'store'}),
)
@@ -21,6 +28,20 @@ class BaseApp(cli.log.LoggingApp):
for args, kw in DEFAULT_PARAMS:
self.add_param(*args, **kw)
+ def _parse_keyvalues(self, args):
+ kv = {}
+ for x in args:
+ key, value = x.split('=', 1)
+ # make lists if there are multiple values
+ if key in kv:
+ if type(kv) is type(tuple()):
+ kv[key] = kv[key] + (value,)
+ else:
+ kv[key] = (kv[key], value)
+ else:
+ kv[key] = value
+ return kv
+
class LoadData(BaseApp):
def __init__(self, *args, **kw):
@@ -33,7 +54,59 @@ class LoadData(BaseApp):
pass
+class CrudCommands(BaseApp):
+ ACTION_MAP = {}
+
+ def __init__(self, *args, **kw):
+ super(CrudCommands, self).__init__(*args, **kw)
+ self.add_default_params()
+ self.add_param('action')
+ self.add_param('keyvalues', nargs='+')
+
+ def main(self):
+ """Given some keyvalues create the appropriate data in Keystone Light."""
+ c = client.HttpClient(self.params.url, token=self.params.token)
+ action_name = self.ACTION_MAP[self.params.action]
+ kv = self._parse_keyvalues(self.params.keyvalues)
+ resp = getattr(c, action_name)(**kv)
+ print resp
+
+
+class UserCommands(CrudCommands):
+ ACTION_MAP = {'add': 'create_user',
+ 'create': 'create_user',}
+
+
+class TenantCommands(CrudCommands):
+ ACTION_MAP = {'add': 'create_tenant',
+ 'create': 'create_tenant',}
+
+
+class ExtrasCommands(CrudCommands):
+ ACTION_MAP = {'add': 'create_extras',
+ 'create': 'create_extras',}
+
+
+class Auth(BaseApp):
+ def __init__(self, *args, **kw):
+ super(Auth, self).__init__(*args, **kw)
+ self.add_default_params()
+ self.add_param('keyvalues', nargs='+')
+
+ def main(self):
+ """Attempt to authenticate against the Keystone Light API."""
+ c = client.HttpClient(self.params.url, token=self.params.token)
+ kv = self._parse_keyvalues(self.params.keyvalues)
+ resp = c.authenticate(**kv)
+ print resp
+
+
+
CMDS = {'loaddata': LoadData,
+ 'user': UserCommands,
+ 'tenant': TenantCommands,
+ 'extras': ExtrasCommands,
+ 'auth': Auth,
}