Revision c3d42104 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( |
... | ... | |
290 | 292 |
elif self['diagnostics']: |
291 | 293 |
self._print(self.client.get_server_diagnostics(server_id)) |
292 | 294 |
else: |
295 |
vm = self.client.get_server_details(server_id) |
|
293 | 296 |
uuids = self._uuids2usernames([vm['user_id'], vm['tenant_id']]) |
294 | 297 |
vm['user_id'] += ' (%s)' % uuids[vm['user_id']] |
295 | 298 |
vm['tenant_id'] += ' (%s)' % uuids[vm['tenant_id']] |
... | ... | |
297 | 300 |
|
298 | 301 |
def main(self, server_id): |
299 | 302 |
super(self.__class__, self)._run() |
300 |
choose_one = ('nics', 'vnc', 'stats')
|
|
303 |
choose_one = ('nics', 'stats', 'diagnostics')
|
|
301 | 304 |
count = len([a for a in choose_one if self[a]]) |
302 | 305 |
if count > 1: |
303 | 306 |
raise CLIInvalidArgument('Invalid argument compination', details=[ |
... | ... | |
775 | 778 |
|
776 | 779 |
@command(server_cmds) |
777 | 780 |
class server_wait(_init_cyclades, _server_wait): |
778 |
"""Wait for server to finish (BUILD, STOPPED, REBOOT, ACTIVE)"""
|
|
781 |
"""Wait for server to change its status (default: BUILD)"""
|
|
779 | 782 |
|
780 | 783 |
arguments = dict( |
781 | 784 |
timeout=IntArgument( |
782 |
'Wait limit in seconds (default: 60)', '--timeout', default=60) |
|
785 |
'Wait limit in seconds (default: 60)', '--timeout', default=60), |
|
786 |
server_status=StatusArgument( |
|
787 |
'Status to wait for (%s, default: %s)' % ( |
|
788 |
', '.join(server_states), server_states[0]), |
|
789 |
'--status', |
|
790 |
valid_states=server_states) |
|
783 | 791 |
) |
784 | 792 |
|
785 | 793 |
@errors.generic.all |
... | ... | |
795 | 803 |
'status is already %s' % ( |
796 | 804 |
server_id, current_status, r['status'])) |
797 | 805 |
|
798 |
def main(self, server_id, current_status='BUILD'):
|
|
806 |
def main(self, server_id): |
|
799 | 807 |
super(self.__class__, self)._run() |
800 |
self._run(server_id=server_id, current_status=current_status)
|
|
808 |
self._run(server_id=server_id, current_status=self['server_status'])
|
|
801 | 809 |
|
802 | 810 |
|
803 | 811 |
@command(flavor_cmds) |
Also available in: Unified diff