Revision 099b433b kamaki/cli/commands/cyclades.py

b/kamaki/cli/commands/cyclades.py
44 44
from kamaki.clients.cyclades import CycladesClient
45 45
from kamaki.cli.argument import (
46 46
    FlagArgument, ValueArgument, KeyValueArgument, RepeatableArgument,
47
    ProgressBarArgument, DateArgument, IntArgument)
47
    ProgressBarArgument, DateArgument, IntArgument, StatusArgument)
48 48
from kamaki.cli.commands import _command_init, errors, addLogSettings
49 49
from kamaki.cli.commands import (
50 50
    _optional_output_cmd, _optional_json, _name_filter, _id_filter)
......
69 69
    '  [mode=]MODE: permission in octal (e.g., 0777)',
70 70
    'e.g., -p /tmp/my.file,owner=root,mode=0777']
71 71

  
72
server_states = ('BUILD', 'ACTIVE', 'STOPPED', 'REBOOT')
73

  
72 74

  
73 75
class _service_wait(object):
74 76

  
......
277 279
    @errors.cyclades.connection
278 280
    @errors.cyclades.server_id
279 281
    def _run(self, server_id):
280
        vm = self.client.get_server_nics(server_id)
281 282
        if self['nics']:
282
            self._print(vm.get('attachments', []))
283
            self._print(
284
                self.client.get_server_nics(server_id), self.print_dict)
283 285
        elif self['network_id']:
284 286
            self._print(
285 287
                self.client.get_server_network_nics(
......
288 290
            self._print(
289 291
                self.client.get_server_stats(server_id), self.print_dict)
290 292
        else:
293
            vm = self.client.get_server_details(server_id)
291 294
            uuids = self._uuids2usernames([vm['user_id'], vm['tenant_id']])
292 295
            vm['user_id'] += ' (%s)' % uuids[vm['user_id']]
293 296
            vm['tenant_id'] += ' (%s)' % uuids[vm['tenant_id']]
......
295 298

  
296 299
    def main(self, server_id):
297 300
        super(self.__class__, self)._run()
298
        choose_one = ('nics', 'vnc', 'stats')
301
        choose_one = ('nics', 'stats', 'diagnostics')
299 302
        count = len([a for a in choose_one if self[a]])
300 303
        if count > 1:
301 304
            raise CLIInvalidArgument('Invalid argument compination', details=[
......
773 776

  
774 777
@command(server_cmds)
775 778
class server_wait(_init_cyclades, _server_wait):
776
    """Wait for server to finish (BUILD, STOPPED, REBOOT, ACTIVE)"""
779
    """Wait for server to change its status (default: BUILD)"""
777 780

  
778 781
    arguments = dict(
779 782
        timeout=IntArgument(
780
            'Wait limit in seconds (default: 60)', '--timeout', default=60)
783
            'Wait limit in seconds (default: 60)', '--timeout', default=60),
784
        server_status=StatusArgument(
785
            'Status to wait for (%s, default: %s)' % (
786
                ', '.join(server_states), server_states[0]),
787
            '--status',
788
            valid_states=server_states)
781 789
    )
782 790

  
783 791
    @errors.generic.all
......
793 801
                'status is already %s' % (
794 802
                    server_id, current_status, r['status']))
795 803

  
796
    def main(self, server_id, current_status='BUILD'):
804
    def main(self, server_id):
797 805
        super(self.__class__, self)._run()
798
        self._run(server_id=server_id, current_status=current_status)
806
        self._run(server_id=server_id, current_status=self['server_status'])
799 807

  
800 808

  
801 809
@command(flavor_cmds)

Also available in: Unified diff