274
275
arguments: path"""
275
276
exec(compile(open(path).read(), path, 'exec'), locals(), globals())
278
@args('--filename', dest='filename', metavar='<path>', default=False,
279
help='Export file path')
280
def export(self, filename):
281
"""Export Nova users into a file that can be consumed by Keystone"""
283
def create_file(filename):
284
data = generate_data()
285
with open(filename, 'w') as f:
286
f.write(data.getvalue())
288
def tenants(data, am):
289
for project in am.get_projects():
290
print >> data, ("tenant add '%s'" %
292
for u in project.member_ids:
293
user = am.get_user(u)
294
print >> data, ("user add '%s' '%s' '%s'" %
295
(user.name, user.access, project.name))
296
print >> data, ("credentials add 'EC2' '%s:%s' '%s' '%s'" %
297
(user.access, project.id, user.secret, project.id))
300
for role in am.get_roles():
301
print >> data, ("role add '%s'" % (role))
303
def grant_roles(data, am):
304
roles = am.get_roles()
305
for project in am.get_projects():
306
for u in project.member_ids:
307
user = am.get_user(u)
308
for role in db.user_get_roles_for_project(ctxt, u,
310
print >> data, ("role grant '%s', '%s', '%s')," %
311
(user.name, role, project.name))
315
data = StringIO.StringIO()
316
am = manager.AuthManager()
319
grant_roles(data, am)
323
ctxt = context.get_admin_context()
325
create_file(filename)
327
data = generate_data()
328
print data.getvalue()
278
331
class RoleCommands(object):
279
332
"""Class for managing roles."""
685
738
help='Multi host')
686
739
@args('--dns1', dest="dns1", metavar="<DNS Address>", help='First DNS')
687
740
@args('--dns2', dest="dns2", metavar="<DNS Address>", help='Second DNS')
688
@args('--uuid', dest="net_uuid", metavar="<network uuid>",
741
@args('--uuid', dest="uuid", metavar="<network uuid>",
689
742
help='Network UUID')
690
743
@args('--project_id', dest="project_id", metavar="<project id>",
691
744
help='Project id')
710
763
bridge_required = ['nova.network.manager.FlatManager',
711
764
'nova.network.manager.FlatDHCPManager']
712
765
if FLAGS.network_manager in bridge_required:
713
# TODO(tr3buchet) - swap print statement and following line for
714
# raise statement in diablo 4
715
print _('--bridge parameter required or FLAG '
716
'flat_network_bridge must be set to create networks\n'
717
'WARNING! ACHTUNG! Setting the bridge to br100 '
718
'automatically is deprecated and will be removed in '
719
'Diablo milestone 4. Prepare yourself accordingly.')
722
#raise exception.NetworkNotCreated(req='--bridge')
766
raise exception.NetworkNotCreated(req='--bridge')
724
768
bridge_interface = bridge_interface or FLAGS.flat_interface or \
725
769
FLAGS.vlan_interface
1648
1692
def _print_instance_types(self, name, val):
1649
1693
deleted = ('', ', inactive')[val["deleted"] == 1]
1650
1694
print ("%s: Memory: %sMB, VCPUS: %s, Storage: %sGB, FlavorID: %s, "
1651
"Swap: %sGB, RXTX Quota: %sGB, RXTX Cap: %sMB%s") % (
1695
"Swap: %sMB, RXTX Quota: %sGB, RXTX Cap: %sMB%s") % (
1652
1696
name, val["memory_mb"], val["vcpus"], val["local_gb"],
1653
1697
val["flavorid"], val["swap"], val["rxtx_quota"],
1654
1698
val["rxtx_cap"], deleted)