Revision 4500650c

b/snf-cyclades-app/synnefo/api/management/commands/network-list.py
34 34
from optparse import make_option
35 35

  
36 36
from django.core.management.base import BaseCommand, CommandError
37
from synnefo.management.common import format_bool, filter_results, UUIDCache
37
from synnefo.management.common import (format_bool, filter_results, UUIDCache,
38
                                       Omit)
38 39
from synnefo.db.models import Network
39 40
from synnefo.management.common import pprint_table
40 41

  
......
60 61
            dest='public',
61 62
            default=False,
62 63
            help="List only public networks"),
64
        make_option('--user',
65
            dest='user',
66
            help="List only networks of the specified user"
67
                 " (uuid or display name"),
63 68
        make_option('--ipv6',
64 69
            action='store_true',
65 70
            dest='ipv6',
......
71 76
                 " that displayed entries must satisfy. e.g."
72 77
                 " --filter-by \"name=Network-1,link!=prv0\"."
73 78
                 " Available keys are: %s" % ", ".join(FIELDS)),
74
        make_option(
75
            '--uuids',
79
        make_option('--displayname',
76 80
            action='store_true',
77
            dest='use_uuids',
81
            dest='displayname',
78 82
            default=False,
79
            help="Display UUIDs instead of user emails"),
83
            help="Display both uuid and display name"),
80 84
        )
81 85

  
82 86
    def handle(self, *args, **options):
83 87
        if args:
84 88
            raise CommandError("Command doesn't accept any arguments")
85 89

  
86
        use_uuids = options["use_uuids"]
90
        ucache = UUIDCache()
91

  
87 92
        if options['deleted']:
88 93
            networks = Network.objects.all()
89 94
        else:
......
92 97
        if options['public']:
93 98
            networks = networks.filter(public=True)
94 99

  
100
        user = options['user']
101
        if user:
102
            if '@' in user:
103
                user = ucache.get_user(user)
104
            networks = networks.filter(userid=user)
105

  
95 106
        filter_by = options['filter_by']
96 107
        if filter_by:
97 108
            networks = filter_results(networks, filter_by)
98 109

  
99
        headers = ['id', 'name', 'flavor', 'owner',
100
                  'mac_prefix', 'dhcp', 'state', 'link', 'vms', 'public']
110
        displayname = options['displayname']
111

  
112
        headers = filter(lambda x: x is not Omit,
113
                        ['id',
114
                         'name',
115
                         'flavor',
116
                         'owner_uuid',
117
                         'owner_name' if displayname else Omit,
118
                         'mac_prefix',
119
                         'dhcp',
120
                         'state',
121
                         'link',
122
                         'vms',
123
                         'public',
124
                         ])
101 125

  
102 126
        if options['ipv6']:
103 127
            headers.extend(['IPv6 Subnet', 'IPv6 Gateway'])
104 128
        else:
105 129
            headers.extend(['IPv4 Subnet', 'IPv4 Gateway'])
106 130

  
107
        if not use_uuids:
108
            ucache = UUIDCache()
109

  
110 131
        table = []
111 132
        for network in networks.order_by("id"):
112
            user = network.userid
113
            if not use_uuids:
114
                user = ucache.get_user(network.userid)
115

  
116
            fields = [str(network.id),
117
                      network.name,
118
                      network.flavor,
119
                      user or '',
120
                      network.mac_prefix or '',
121
                      str(network.dhcp),
122
                      network.state,
123
                      network.link or '',
124
                      str(network.machines.count()),
125
                      format_bool(network.public)]
133
            uuid = network.userid
134
            if displayname:
135
                dname = ucache.get_user(uuid)
136

  
137
            fields = filter(lambda x: x is not Omit,
138
                            [str(network.id),
139
                             network.name,
140
                             network.flavor,
141
                             uuid or '-',
142
                             dname or '-' if displayname else Omit,
143
                             network.mac_prefix or '-',
144
                             str(network.dhcp),
145
                             network.state,
146
                             network.link or '-',
147
                             str(network.machines.count()),
148
                             format_bool(network.public),
149
                             ])
126 150

  
127 151
            if options['ipv6']:
128 152
                fields.extend([network.subnet6 or '', network.gateway6 or ''])
b/snf-cyclades-app/synnefo/api/management/commands/server-inspect.py
37 37

  
38 38
from synnefo.lib.utils import merge_time
39 39
from synnefo.logic.rapi import GanetiApiError
40
from synnefo.management.common import Omit
40 41
from synnefo.management import common
41 42

  
42 43

  
......
61 62
            dest='jobs',
62 63
            default=False,
63 64
            help="Show non-archived jobs concerning server."),
64
        make_option('--uuids',
65
        make_option('--displayname',
65 66
            action='store_true',
66
            dest='use_uuids',
67
            dest='displayname',
67 68
            default=False,
68
            help="Display UUIDs instead of user emails"),
69
            help="Display both uuid and display name"),
69 70
    )
70 71

  
71 72
    def handle(self, *args, **options):
......
74 75

  
75 76
        vm = common.get_vm(args[0])
76 77

  
78
        displayname = options['displayname']
79

  
80
        ucache = common.UUIDCache()
81

  
77 82
        try:
78 83
            image = common.get_image(vm.imageid, vm.userid)['name']
79 84
        except:
80 85
            image = vm.imageid
81 86

  
82 87
        sep = '-' * 80 + '\n'
83
        labels = ('name', 'owner', 'flavor', 'image', 'state', 'backend',
84
                  'deleted', 'action', 'backendjobid', 'backendopcode',
85
                  'backendjobstatus', 'backend_time')
86

  
87
        user = vm.userid
88
        if options['use_uuids'] is False:
89
            ucache = common.UUIDCache()
90
            user = ucache.get_user(vm.userid)
91

  
92
        fields = (vm.name, user, vm.flavor.name, image,
93
                  common.format_vm_state(vm), str(vm.backend),
94
                  str(vm.deleted), str(vm.action), str(vm.backendjobid),
95
                  str(vm.backendopcode), str(vm.backendjobstatus),
96
                  str(vm.backendtime))
88
        labels = filter(lambda x: x is not Omit,
89
                        ['name', 'owner_uuid',
90
                         'owner_name' if displayname else Omit,
91
                         'flavor', 'image', 'state', 'backend', 'deleted',
92
                         'action', 'backendjobid', 'backendopcode',
93
                         'backendjobstatus', 'backend_time'])
94

  
95
        uuid = vm.userid
96
        if displayname:
97
            dname = ucache.get_user(uuid)
98

  
99
        fields = filter(lambda x: x is not Omit,
100
                        [vm.name, uuid, dname if displayname else Omit,
101
                         vm.flavor.name, image, common.format_vm_state(vm),
102
                         str(vm.backend), str(vm.deleted), str(vm.action),
103
                         str(vm.backendjobid), str(vm.backendopcode),
104
                         str(vm.backendjobstatus), str(vm.backendtime)])
97 105

  
98 106
        self.stdout.write(sep)
99 107
        self.stdout.write('State of Server in DB\n')
b/snf-cyclades-app/synnefo/api/management/commands/server-list.py
34 34
from optparse import make_option
35 35

  
36 36
from django.core.management.base import BaseCommand, CommandError
37
from synnefo.management.common import (format_vm_state, get_backend,
37
from synnefo.management.common import (format_vm_state, get_backend, Omit,
38 38
                                       filter_results, pprint_table, UUIDCache)
39 39
from synnefo.api.util import get_image
40 40
from synnefo.db.models import VirtualMachine
......
72 72
        make_option('--backend-id',
73 73
            dest='backend_id',
74 74
            help="List only servers of the specified backend"),
75
        make_option('--user',
76
            dest='user',
77
            help="List only servers of the specified user (uuid or email)"),
75 78
        make_option('--filter-by',
76 79
            dest='filter_by',
77 80
            help="Filter results. Comma seperated list of key `cond` val pairs"
78 81
                 " that displayed entries must satisfy. e.g."
79 82
                 " --filter-by \"operstate=STARTED,id>=22\"."
80 83
                 " Available keys are: %s" % ", ".join(FIELDS)),
81
        make_option(
82
            '--uuids',
84
        make_option('--displayname',
83 85
            action='store_true',
84
            dest='use_uuids',
86
            dest='displayname',
85 87
            default=False,
86
            help="Display UUIDs instead of user emails"),
88
            help="Display both uuid and display name"),
87 89
    )
88 90

  
89 91
    def handle(self, *args, **options):
90 92
        if args:
91 93
            raise CommandError("Command doesn't accept any arguments")
92 94

  
93
        use_uuids = options["use_uuids"]
95
        ucache = UUIDCache()
96

  
94 97
        if options['backend_id']:
95 98
            backend = get_backend(options['backend_id'])
96 99
            servers = backend.virtual_machines
......
108 111
        if options['build']:
109 112
            servers = servers.filter(operstate='BUILD')
110 113

  
114
        user = options['user']
115
        if user:
116
            if '@' in user:
117
                user = ucache.get_user(user)
118
            servers = servers.filter(userid=user)
119

  
111 120
        filter_by = options['filter_by']
112 121
        if filter_by:
113 122
            servers = filter_results(servers, filter_by)
114 123

  
124
        displayname = options['displayname']
125

  
115 126
        cache = ImageCache()
116
        if not use_uuids:
117
            ucache = UUIDCache()
118 127

  
119
        headers = ('id', 'name', 'owner', 'flavor', 'image', 'state',
120
                   'backend')
128
        headers = filter(lambda x: x is not Omit,
129
                        ['id',
130
                         'name',
131
                         'owner_uuid',
132
                         'owner_name' if displayname else Omit,
133
                         'flavor',
134
                         'image',
135
                         'state',
136
                         'backend',
137
                          ])
121 138

  
122 139
        table = []
123 140
        for server in servers.order_by('id'):
......
132 149

  
133 150
            state = format_vm_state(server)
134 151

  
135
            user = server.userid
136
            if not use_uuids:
137
                user = ucache.get_user(server.userid)
138

  
139
            fields = (str(server.id), name, user, flavor, image,
140
                      state, str(server.backend))
152
            uuid = server.userid
153
            if displayname:
154
                dname = ucache.get_user(server.userid)
155

  
156
            fields = filter(lambda x: x is not Omit,
157
                            [str(server.id),
158
                             name,
159
                             uuid,
160
                             dname if displayname else Omit,
161
                             flavor,
162
                             image,
163
                             state,
164
                             str(server.backend),
165
                            ])
141 166
            table.append(fields)
142 167

  
143 168
        separator = " | " if options['csv'] else None
b/snf-cyclades-app/synnefo/logic/management/commands/network-inspect.py
36 36
from optparse import make_option
37 37

  
38 38
from django.core.management.base import BaseCommand, CommandError
39
from synnefo.management.common import get_network, UUIDCache
39
from synnefo.management.common import get_network, UUIDCache, Omit
40 40

  
41 41
from synnefo.db.models import (Backend, BackendNetwork,
42 42
                               pooled_rapi_client)
......
48 48
    help = "Inspect a network on DB and Ganeti."
49 49

  
50 50
    option_list = BaseCommand.option_list + (
51
        make_option('--uuids',
51
        make_option('--displayname',
52 52
            action='store_true',
53
            dest='use_uuids',
53
            dest='displayname',
54 54
            default=False,
55
            help="Display UUIDs instead of user emails"),
56
        )
55
            help="Display both uuid and display name"),
56
    )
57 57

  
58 58
    def handle(self, *args, **options):
59 59
        write = self.stdout.write
......
62 62

  
63 63
        net = get_network(args[0])
64 64

  
65
        ucache = UUIDCache()
66

  
67
        displayname = options['displayname']
68

  
65 69
        sep = '-' * 80 + '\n'
66
        labels = ('name', 'backend-name', 'state', 'owner', 'subnet',
67
                  'gateway', 'mac_prefix', 'link', 'public', 'dhcp', 'flavor',
68
                  'deleted', 'action', 'pool')
69

  
70
        user = net.userid
71
        if options['use_uuids'] is False:
72
            ucache = UUIDCache()
73
            user = ucache.get_user(net.userid)
74

  
75
        fields = (net.name, net.backend_id, net.state, user or '',
76
                  str(net.subnet), str(net.gateway), str(net.mac_prefix),
77
                  str(net.link), str(net.public),  str(net.dhcp),
78
                  str(net.flavor), str(net.deleted), str(net.action),
79
                  str(splitPoolMap(net.get_pool().to_map(), 64)))
70
        labels = filter(lambda x: x is not Omit,
71
                        ['name', 'backend-name', 'state', 'owner uuid',
72
                         'owner_name' if displayname else Omit, 'subnet',
73
                         'gateway', 'mac_prefix', 'link', 'public', 'dhcp',
74
                         'flavor', 'deleted', 'action', 'pool'])
75

  
76
        uuid = net.userid
77
        if displayname:
78
            dname = ucache.get_user(uuid)
79

  
80
        fields = filter(lambda x: x is not Omit,
81
                        [net.name, net.backend_id, net.state, uuid or '-',
82
                         dname or '-' if displayname else Omit,
83
                         str(net.subnet), str(net.gateway), str(net.mac_prefix),
84
                         str(net.link), str(net.public),  str(net.dhcp),
85
                         str(net.flavor), str(net.deleted), str(net.action),
86
                         str(splitPoolMap(net.get_pool().to_map(), 64))])
80 87

  
81 88
        write(sep)
82 89
        write('State of Network in DB\n')
b/snf-cyclades-app/synnefo/management/common.py
268 268
                                            uuid=uuid)
269 269
            except Exception as e:
270 270
                log.error("Can not get display name for uuid %s: %s", uuid, e)
271
                return uuid
271
                self.users[uuid] = "-"
272 272

  
273 273
        return self.users[uuid]
274

  
275

  
276
class Omit(object):
277
    pass

Also available in: Unified diff