diff options
| author | Scott Moser <smoser@ubuntu.com> | 2011-09-20 03:23:34 -0400 |
|---|---|---|
| committer | Scott Moser <smoser@ubuntu.com> | 2011-09-20 03:23:34 -0400 |
| commit | 2eb2120f98cfe70ce67325ffe26cfb5cc86c6356 (patch) | |
| tree | 8b2f431f158878864fa5b44abfc035270a834513 /bin | |
| parent | b399ac7b6e80d16fddd61c9b2d505cff09cb8889 (diff) | |
| parent | dcd646e6610e2a5cc6da78220ab0c8acde48d401 (diff) | |
| download | nova-2eb2120f98cfe70ce67325ffe26cfb5cc86c6356.tar.gz nova-2eb2120f98cfe70ce67325ffe26cfb5cc86c6356.tar.xz nova-2eb2120f98cfe70ce67325ffe26cfb5cc86c6356.zip | |
merge with trunk r1601
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/nova-manage | 66 |
1 files changed, 55 insertions, 11 deletions
diff --git a/bin/nova-manage b/bin/nova-manage index 089b2eeae..1f4aa8a78 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -61,6 +61,7 @@ import math import netaddr from optparse import OptionParser import os +import StringIO import sys import time @@ -274,6 +275,58 @@ class ShellCommands(object): arguments: path""" exec(compile(open(path).read(), path, 'exec'), locals(), globals()) + @args('--filename', dest='filename', metavar='<path>', default=False, + help='Export file path') + def export(self, filename): + """Export Nova users into a file that can be consumed by Keystone""" + + def create_file(filename): + data = generate_data() + with open(filename, 'w') as f: + f.write(data.getvalue()) + + def tenants(data, am): + for project in am.get_projects(): + print >> data, ("tenant add '%s'" % + (project.name)) + for u in project.member_ids: + user = am.get_user(u) + print >> data, ("user add '%s' '%s' '%s'" % + (user.name, user.access, project.name)) + print >> data, ("credentials add 'EC2' '%s:%s' '%s' '%s'" % + (user.access, project.id, user.secret, project.id)) + + def roles(data, am): + for role in am.get_roles(): + print >> data, ("role add '%s'" % (role)) + + def grant_roles(data, am): + roles = am.get_roles() + for project in am.get_projects(): + for u in project.member_ids: + user = am.get_user(u) + for role in db.user_get_roles_for_project(ctxt, u, + project.id): + print >> data, ("role grant '%s', '%s', '%s')," % + (user.name, role, project.name)) + print >> data + + def generate_data(): + data = StringIO.StringIO() + am = manager.AuthManager() + tenants(data, am) + roles(data, am) + grant_roles(data, am) + data.seek(0) + return data + + ctxt = context.get_admin_context() + if filename: + create_file(filename) + else: + data = generate_data() + print data.getvalue() + class RoleCommands(object): """Class for managing roles.""" @@ -685,7 +738,7 @@ class NetworkCommands(object): help='Multi host') @args('--dns1', dest="dns1", metavar="<DNS Address>", help='First DNS') @args('--dns2', dest="dns2", metavar="<DNS Address>", help='Second DNS') - @args('--uuid', dest="net_uuid", metavar="<network uuid>", + @args('--uuid', dest="uuid", metavar="<network uuid>", help='Network UUID') @args('--project_id', dest="project_id", metavar="<project id>", help='Project id') @@ -710,16 +763,7 @@ class NetworkCommands(object): bridge_required = ['nova.network.manager.FlatManager', 'nova.network.manager.FlatDHCPManager'] if FLAGS.network_manager in bridge_required: - # TODO(tr3buchet) - swap print statement and following line for - # raise statement in diablo 4 - print _('--bridge parameter required or FLAG ' - 'flat_network_bridge must be set to create networks\n' - 'WARNING! ACHTUNG! Setting the bridge to br100 ' - 'automatically is deprecated and will be removed in ' - 'Diablo milestone 4. Prepare yourself accordingly.') - time.sleep(10) - bridge = 'br100' - #raise exception.NetworkNotCreated(req='--bridge') + raise exception.NetworkNotCreated(req='--bridge') bridge_interface = bridge_interface or FLAGS.flat_interface or \ FLAGS.vlan_interface |
