Revision ac6a221f snf-cyclades-app/synnefo/management/pprint.py
b/snf-cyclades-app/synnefo/management/pprint.py | ||
---|---|---|
41 | 41 |
from synnefo.db.pools import bitarray_to_map |
42 | 42 |
|
43 | 43 |
from synnefo.logic.rapi import GanetiApiError |
44 |
from synnefo.logic.reconciliation import nics_from_instance |
|
44 |
from synnefo.logic.reconciliation import (nics_from_instance, |
|
45 |
disks_from_instance) |
|
45 | 46 |
from synnefo.management.common import get_image |
46 | 47 |
|
47 | 48 |
|
... | ... | |
259 | 260 |
return |
260 | 261 |
raise e |
261 | 262 |
|
262 |
nics = nics_from_instance(vm_info)
|
|
263 |
disks = disks_from_instance(vm_info)
|
|
263 | 264 |
try: |
264 |
gnt_nic = filter(lambda nic: nic.get("name") == port.backend_uuid,
|
|
265 |
nics)[0]
|
|
266 |
gnt_nic["instance"] = vm_info["name"]
|
|
265 |
gnt_disk = filter(lambda disk: disk.get("name") == port.backend_uuid,
|
|
266 |
disks)[0]
|
|
267 |
gnt_disk["instance"] = vm_info["name"]
|
|
267 | 268 |
except IndexError: |
268 | 269 |
stdout.write("Port %s is not attached to instance %s\n" % |
269 | 270 |
(port.id, vm.id)) |
270 | 271 |
return |
271 |
pprint_table(stdout, gnt_nic.items(), None, separator=" | ",
|
|
272 |
pprint_table(stdout, gnt_disk.items(), None, separator=" | ",
|
|
272 | 273 |
title=title) |
273 | 274 |
|
274 | 275 |
vm.put_client(client) |
... | ... | |
382 | 383 |
separator=" | ", |
383 | 384 |
title="Ganeti Job %s" % server_job["id"]) |
384 | 385 |
server.put_client(client) |
386 |
|
|
387 |
|
|
388 |
def pprint_volume(volume, display_mails=False, stdout=None, title=None): |
|
389 |
if stdout is None: |
|
390 |
stdout = sys.stdout |
|
391 |
if title is None: |
|
392 |
title = "State of volume %s in DB" % volume.id |
|
393 |
|
|
394 |
ucache = UserCache(ASTAKOS_AUTH_URL, ASTAKOS_TOKEN) |
|
395 |
userid = volume.userid |
|
396 |
|
|
397 |
volume_dict = OrderedDict([ |
|
398 |
("id", volume.id), |
|
399 |
("size", volume.size), |
|
400 |
("disk_template", volume.disk_template), |
|
401 |
("disk_provider", volume.disk_provider), |
|
402 |
("server_id", volume.machine_id), |
|
403 |
("userid", volume.userid), |
|
404 |
("username", ucache.get_name(userid) if display_mails else None), |
|
405 |
("name", volume.name), |
|
406 |
("state", volume.status), |
|
407 |
("deleted", volume.deleted), |
|
408 |
("backendjobid", volume.backendjobid), |
|
409 |
]) |
|
410 |
|
|
411 |
pprint_table(stdout, volume_dict.items(), None, separator=" | ", |
|
412 |
title=title) |
|
413 |
|
|
414 |
|
|
415 |
def pprint_volume_in_ganeti(volume, stdout=None, title=None): |
|
416 |
if stdout is None: |
|
417 |
stdout = sys.stdout |
|
418 |
if title is None: |
|
419 |
title = "State of volume %s in Ganeti" % volume.id |
|
420 |
|
|
421 |
vm = volume.machine |
|
422 |
if vm is None: |
|
423 |
stdout.write("volume is not attached to any instance.\n") |
|
424 |
return |
|
425 |
|
|
426 |
client = vm.get_client() |
|
427 |
try: |
|
428 |
vm_info = client.GetInstance(vm.backend_vm_id) |
|
429 |
except GanetiApiError as e: |
|
430 |
if e.code == 404: |
|
431 |
stdout.write("Volume seems attached to server %s, but" |
|
432 |
" server does not exist in backend.\n" |
|
433 |
% vm) |
|
434 |
return |
|
435 |
raise e |
|
436 |
|
|
437 |
disks = disks_from_instance(vm_info) |
|
438 |
try: |
|
439 |
gnt_disk = filter(lambda disk: |
|
440 |
disk.get("name") == volume.backend_volume_uuid, |
|
441 |
disks)[0] |
|
442 |
gnt_disk["instance"] = vm_info["name"] |
|
443 |
except IndexError: |
|
444 |
stdout.write("Volume %s is not attached to instance %s\n" % (volume.id, |
|
445 |
vm.id)) |
|
446 |
return |
|
447 |
pprint_table(stdout, gnt_disk.items(), None, separator=" | ", |
|
448 |
title=title) |
|
449 |
|
|
450 |
vm.put_client(client) |
Also available in: Unified diff