Revision 9353adde
b/lib/masterd/iallocator.py | ||
---|---|---|
547 | 547 |
return value |
548 | 548 |
|
549 | 549 |
@staticmethod |
550 |
def _ComputeStorageDataFromNodeInfo(node_info, node_name, has_lvm):
|
|
551 |
"""Extract storage data from node info (_not_ legacy node info).
|
|
550 |
def _ComputeStorageDataFromSpaceInfo(space_info, node_name, has_lvm):
|
|
551 |
"""Extract storage data from node info. |
|
552 | 552 |
|
553 |
@type node_info: see result of the RPC call node info |
|
554 |
@param node_info: the result of the RPC call node info |
|
553 |
@type space_info: see result of the RPC call node info |
|
554 |
@param space_info: the storage reporting part of the result of the RPC call |
|
555 |
node info |
|
555 | 556 |
@type node_name: string |
556 | 557 |
@param node_name: the node's name |
557 | 558 |
@type has_lvm: boolean |
... | ... | |
561 | 562 |
free_spindles) |
562 | 563 |
|
563 | 564 |
""" |
564 |
(_, space_info, _) = node_info |
|
565 | 565 |
# TODO: replace this with proper storage reporting |
566 | 566 |
if has_lvm: |
567 | 567 |
lvm_vg_info = utils.storage.LookupSpaceInfoByStorageType( |
... | ... | |
633 | 633 |
nresult.Raise("Can't get data for node %s" % ninfo.name) |
634 | 634 |
node_iinfo[nuuid].Raise("Can't get node instance info from node %s" % |
635 | 635 |
ninfo.name) |
636 |
(_, _, (hv_info, )) = nresult.payload
|
|
636 |
(_, space_info, (hv_info, )) = nresult.payload
|
|
637 | 637 |
|
638 | 638 |
mem_free = self._GetAttributeFromHypervisorNodeData(hv_info, ninfo.name, |
639 | 639 |
"memory_free") |
... | ... | |
641 | 641 |
(i_p_mem, i_p_up_mem, mem_free) = self._ComputeInstanceMemory( |
642 | 642 |
i_list, node_iinfo, nuuid, mem_free) |
643 | 643 |
(total_disk, free_disk, total_spindles, free_spindles) = \ |
644 |
self._ComputeStorageDataFromNodeInfo(nresult.payload, ninfo.name,
|
|
645 |
has_lvm) |
|
644 |
self._ComputeStorageDataFromSpaceInfo(space_info, ninfo.name,
|
|
645 |
has_lvm)
|
|
646 | 646 |
|
647 | 647 |
# compute memory used by instances |
648 | 648 |
pnr_dyn = { |
b/test/py/ganeti.masterd.iallocator_unittest.py | ||
---|---|---|
196 | 196 |
"type": constants.ST_LVM_PV, |
197 | 197 |
"storage_free": 33, |
198 | 198 |
"storage_size": 44}] |
199 |
self.node_info = ("123", self.space_info, ({},)) |
|
200 | 199 |
|
201 | 200 |
def testComputeStorageDataFromNodeInfoDefault(self): |
202 | 201 |
has_lvm = False |
203 | 202 |
node_name = "mynode" |
204 | 203 |
(total_disk, free_disk, total_spindles, free_spindles) = \ |
205 | 204 |
iallocator.IAllocator._ComputeStorageDataFromNodeInfo( |
206 |
self.node_info, node_name, has_lvm)
|
|
205 |
self.space_info, node_name, has_lvm)
|
|
207 | 206 |
# FIXME: right now, iallocator ignores anything else than LVM, adjust |
208 | 207 |
# this test once that arbitrary storage is supported |
209 | 208 |
self.assertEqual(0, free_disk) |
... | ... | |
214 | 213 |
node_name = "mynode" |
215 | 214 |
(total_disk, free_disk, total_spindles, free_spindles) = \ |
216 | 215 |
iallocator.IAllocator._ComputeStorageDataFromNodeInfo( |
217 |
self.node_info, node_name, has_lvm)
|
|
216 |
self.space_info, node_name, has_lvm)
|
|
218 | 217 |
self.assertEqual(self.free_storage_lvm, free_disk) |
219 | 218 |
self.assertEqual(self.total_storage_lvm, total_disk) |
220 | 219 |
|
Also available in: Unified diff