Revision 3185cd6d kamaki/cli/commands/cyclades.py

b/kamaki/cli/commands/cyclades.py
59 59
    \n* to set authentication token: /config set cloud.<cloud>.token <token>'
60 60

  
61 61
howto_personality = [
62
    'Defines a file to be injected to VMs personality.',
63
    'Personality value syntax: PATH,[SERVER_PATH,[OWNER,[GROUP,[MODE]]]]',
64
    '  PATH: of local file to be injected',
62
    'Defines a file to be injected to VMs file system.',
63
    'syntax:  PATH,[SERVER_PATH,[OWNER,[GROUP,[MODE]]]]',
64
    '  PATH: local file to be injected (relative or absolute)',
65 65
    '  SERVER_PATH: destination location inside server Image',
66
    '  OWNER: user id of destination file owner',
67
    '  GROUP: group id or name to own destination file',
66
    '  OWNER: VMs user id of the remote destination file',
67
    '  GROUP: VMs group id or name of the destination file',
68 68
    '  MODEL: permition in octal (e.g. 0777 or o+rwx)']
69 69

  
70 70

  
71
class _server_wait(object):
71
class _service_wait(object):
72 72

  
73 73
    wait_arguments = dict(
74 74
        progress_bar=ProgressBarArgument(
75
            'do not show progress bar',
76
            ('-N', '--no-progress-bar'),
77
            False
78
        )
75
            'do not show progress bar', ('-N', '--no-progress-bar'), False)
79 76
    )
80 77

  
81
    def _wait(self, server_id, currect_status):
78
    def _wait(self, service, service_id, status_method, currect_status):
82 79
        (progress_bar, wait_cb) = self._safe_progress_bar(
83
            'Server %s still in %s mode' % (server_id, currect_status))
80
            '%s %s still in %s mode' % (service, service_id, currect_status))
84 81

  
85 82
        try:
86
            new_mode = self.client.wait_server(
87
                server_id,
88
                currect_status,
89
                wait_cb=wait_cb)
90
        except Exception:
91
            raise
83
            new_mode = status_method(
84
                service_id, currect_status, wait_cb=wait_cb)
92 85
        finally:
93 86
            self._safe_progress_bar_finish(progress_bar)
94 87
        if new_mode:
95
            print('Server %s is now in %s mode' % (server_id, new_mode))
88
            self.error('%s %s is now in %s mode' % (
89
                service, service_id, new_mode))
96 90
        else:
97 91
            raiseCLIError(None, 'Time out')
98 92

  
99 93

  
100
class _network_wait(object):
94
class _server_wait(_service_wait):
101 95

  
102
    wait_arguments = dict(
103
        progress_bar=ProgressBarArgument(
104
            'do not show progress bar',
105
            ('-N', '--no-progress-bar'),
106
            False
107
        )
108
    )
96
    def _wait(self, server_id, currect_status):
97
        super(_server_wait, self)._wait(
98
            'Server', server_id, self.client.wait_server, currect_status)
109 99

  
110
    def _wait(self, net_id, currect_status):
111
        (progress_bar, wait_cb) = self._safe_progress_bar(
112
            'Network %s still in %s mode' % (net_id, currect_status))
113 100

  
114
        try:
115
            new_mode = self.client.wait_network(
116
                net_id,
117
                currect_status,
118
                wait_cb=wait_cb)
119
        except Exception:
120
            raise
121
        finally:
122
            self._safe_progress_bar_finish(progress_bar)
123
        if new_mode:
124
            print('Network %s is now in %s mode' % (net_id, new_mode))
125
        else:
126
            raiseCLIError(None, 'Time out')
101
class _network_wait(_service_wait):
102

  
103
    def _wait(self, net_id, currect_status):
104
        super(_network_wait, self)._wait(
105
            'Network', net_id, self.client.wait_network, currect_status)
127 106

  
128 107

  
129 108
class _init_cyclades(_command_init):
......
131 110
    @addLogSettings
132 111
    def _run(self, service='compute'):
133 112
        if getattr(self, 'cloud', None):
134
            base_url = self._custom_url(service)\
135
                or self._custom_url('cyclades')
113
            base_url = self._custom_url(service) or self._custom_url(
114
                'cyclades')
136 115
            if base_url:
137
                token = self._custom_token(service)\
138
                    or self._custom_token('cyclades')\
139
                    or self.config.get_cloud('token')
140
                self.client = CycladesClient(
141
                    base_url=base_url, token=token)
116
                token = self._custom_token(service) or self._custom_token(
117
                    'cyclades') or self.config.get_cloud('token')
118
                self.client = CycladesClient(base_url=base_url, token=token)
142 119
                return
143 120
        else:
144 121
            self.cloud = 'default'
......
207 184

  
208 185
    def _filter_by_image(self, servers):
209 186
        iid = self['image_id']
210
        new_servers = []
211
        for srv in servers:
212
            if srv['image']['id'] == iid:
213
                new_servers.append(srv)
214
        return new_servers
187
        return [srv for srv in servers if srv['image']['id'] == iid]
215 188

  
216 189
    def _filter_by_flavor(self, servers):
217 190
        fid = self['flavor_id']
218
        new_servers = []
219
        for srv in servers:
220
            if '%s' % srv['flavor']['id'] == '%s' % fid:
221
                new_servers.append(srv)
222
        return new_servers
191
        return [srv for srv in servers if (
192
            '%s' % srv['image']['id'] == '%s' % fid)]
223 193

  
224 194
    def _filter_by_metadata(self, servers):
225 195
        new_servers = []
......
327 297
                raiseCLIError(
328 298
                    None,
329 299
                    '--personality: File %s does not exist' % path,
330
                    importance=1,
331
                    details=howto_personality)
300
                    importance=1, details=howto_personality)
332 301
            self._value.append(dict(path=path))
333 302
            with open(path) as f:
334 303
                self._value[i]['contents'] = b64encode(f.read())
......
581 550
    @errors.cyclades.connection
582 551
    @errors.cyclades.server_id
583 552
    def _run(self, server_id):
584
        print(self.client.get_firewall_profile(server_id))
553
        self.writeln(self.client.get_firewall_profile(server_id))
585 554

  
586 555
    def main(self, server_id):
587 556
        super(self.__class__, self)._run()
......
601 570
    @errors.cyclades.server_id
602 571
    def _run(self, server_id):
603 572
        reply = self.client.list_server_nics(int(server_id))
604
        self._print(
605
            reply, with_enumeration=self['enum'] and len(reply) > 1)
573
        self._print(reply, with_enumeration=self['enum'] and (reply) > 1)
606 574

  
607 575
    def main(self, server_id):
608 576
        super(self.__class__, self)._run()
......
881 849
        for net in networks:
882 850
            v = net.get(key, None)
883 851
            if v:
884
                net[key] += ' (%s)' % uuids[net[key]]
852
                net[key] += ' (%s)' % uuids[v]
885 853
        return networks
886 854

  
887 855
    @errors.generic.all
......
1044 1012
        if not num_of_disconnected:
1045 1013
            raise ClientError(
1046 1014
                'Network Interface %s not found on server %s' % (
1047
                    nic_id,
1048
                    server_id),
1015
                    nic_id, server_id),
1049 1016
                status=404)
1050 1017
        print('Disconnected %s connections' % num_of_disconnected)
1051 1018

  
......
1123 1090
class server_ip_create(_init_cyclades, _optional_json):
1124 1091
    """Create a new floating IP"""
1125 1092

  
1126
    arguments = dict(
1127
        pool=ValueArgument('Source IP pool', ('--pool'), None)
1128
    )
1093
    arguments = dict(pool=ValueArgument('Source IP pool', ('--pool'), None))
1129 1094

  
1130 1095
    @errors.generic.all
1131 1096
    @errors.cyclades.connection

Also available in: Unified diff