~rackspace-ozone/rackspace-nova/development

« back to all changes in this revision

Viewing changes to bin/nova-manage

  • Committer: paul at openstack
  • Date: 2011-09-26 18:57:03 UTC
  • mfrom: (1098.1.519 nova)
  • Revision ID: paul@openstack.org-20110926185703-ad3bthrj309itbrw
merging Diablo

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
import netaddr
62
62
from optparse import OptionParser
63
63
import os
 
64
import StringIO
64
65
import sys
65
66
import time
66
67
 
274
275
        arguments: path"""
275
276
        exec(compile(open(path).read(), path, 'exec'), locals(), globals())
276
277
 
 
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"""
 
282
 
 
283
        def create_file(filename):
 
284
            data = generate_data()
 
285
            with open(filename, 'w') as f:
 
286
                f.write(data.getvalue())
 
287
 
 
288
        def tenants(data, am):
 
289
            for project in am.get_projects():
 
290
                print >> data, ("tenant add '%s'" %
 
291
                               (project.name))
 
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))
 
298
 
 
299
        def roles(data, am):
 
300
            for role in am.get_roles():
 
301
                print >> data, ("role add '%s'" % (role))
 
302
 
 
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,
 
309
                                                              project.id):
 
310
                        print >> data, ("role grant '%s', '%s', '%s')," %
 
311
                                       (user.name, role, project.name))
 
312
            print >> data
 
313
 
 
314
        def generate_data():
 
315
            data = StringIO.StringIO()
 
316
            am = manager.AuthManager()
 
317
            tenants(data, am)
 
318
            roles(data, am)
 
319
            grant_roles(data, am)
 
320
            data.seek(0)
 
321
            return data
 
322
 
 
323
        ctxt = context.get_admin_context()
 
324
        if filename:
 
325
            create_file(filename)
 
326
        else:
 
327
            data = generate_data()
 
328
            print data.getvalue()
 
329
 
277
330
 
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.')
720
 
                time.sleep(10)
721
 
                bridge = 'br100'
722
 
                #raise exception.NetworkNotCreated(req='--bridge')
 
766
                raise exception.NetworkNotCreated(req='--bridge')
723
767
 
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)