Revision 4b413e49 lib/cmdlib.py
b/lib/cmdlib.py | ||
---|---|---|
40 | 40 |
import tempfile |
41 | 41 |
import shutil |
42 | 42 |
import itertools |
43 |
import operator |
|
43 | 44 |
|
44 | 45 |
from ganeti import ssh |
45 | 46 |
from ganeti import utils |
... | ... | |
3770 | 3771 |
nodenames = self.acquired_locks[locking.LEVEL_NODE] |
3771 | 3772 |
volumes = self.rpc.call_node_volumes(nodenames) |
3772 | 3773 |
|
3773 |
ilist = [self.cfg.GetInstanceInfo(iname) for iname |
|
3774 |
in self.cfg.GetInstanceList()] |
|
3774 |
ilist = self.cfg.GetAllInstancesInfo() |
|
3775 | 3775 |
|
3776 |
lv_by_node = dict([(inst, inst.MapLVsByNode()) for inst in ilist]) |
|
3776 |
vol2inst = dict(((node, vol), inst.name) |
|
3777 |
for inst in ilist.values() |
|
3778 |
for (node, vols) in inst.MapLVsByNode().items() |
|
3779 |
for vol in vols) |
|
3777 | 3780 |
|
3778 | 3781 |
output = [] |
3779 | 3782 |
for node in nodenames: |
... | ... | |
3785 | 3788 |
self.LogWarning("Can't compute volume data on node %s: %s", node, msg) |
3786 | 3789 |
continue |
3787 | 3790 |
|
3788 |
node_vols = nresult.payload[:]
|
|
3789 |
node_vols.sort(key=lambda vol: vol['dev'])
|
|
3791 |
node_vols = sorted(nresult.payload,
|
|
3792 |
key=operator.itemgetter("dev"))
|
|
3790 | 3793 |
|
3791 | 3794 |
for vol in node_vols: |
3792 | 3795 |
node_output = [] |
... | ... | |
3802 | 3805 |
elif field == "size": |
3803 | 3806 |
val = int(float(vol['size'])) |
3804 | 3807 |
elif field == "instance": |
3805 |
for inst in ilist: |
|
3806 |
if node not in lv_by_node[inst]: |
|
3807 |
continue |
|
3808 |
if vol['name'] in lv_by_node[inst][node]: |
|
3809 |
val = inst.name |
|
3810 |
break |
|
3811 |
else: |
|
3812 |
val = '-' |
|
3808 |
val = vol2inst.get((node, vol["vg"] + "/" + vol["name"]), "-") |
|
3813 | 3809 |
else: |
3814 | 3810 |
raise errors.ParameterError(field) |
3815 | 3811 |
node_output.append(str(val)) |
Also available in: Unified diff