Revision 20529708 lib/masterd/iallocator.py
b/lib/masterd/iallocator.py | ||
---|---|---|
543 | 543 |
(node_name, attr, value)) |
544 | 544 |
return value |
545 | 545 |
|
546 |
@staticmethod |
|
547 |
def _ComputeStorageData(node_info, node_name, has_lvm): |
|
548 |
"""Extract storage data from the node info. |
|
549 |
|
|
550 |
@type node_info: see result of RPC call 'node info' |
|
551 |
@param node_info: the node's live information |
|
552 |
@type node_name: string |
|
553 |
@param node_name: the node's name |
|
554 |
@type has_lvm: boolean |
|
555 |
@param has_lvm: whether or not lvm storage info was requested |
|
556 |
@rtype: 4-tuple of integers |
|
557 |
@return: tuple of storage info (total_disk, free_disk, total_spindles, |
|
558 |
free_spindles) |
|
559 |
|
|
560 |
""" |
|
561 |
# TODO: replace this with proper storage reporting |
|
562 |
if has_lvm: |
|
563 |
total_disk = IAllocator._GetAttributeFromNodeData(node_info, node_name, |
|
564 |
"storage_size") |
|
565 |
free_disk = IAllocator._GetAttributeFromNodeData(node_info, node_name, |
|
566 |
"storage_free") |
|
567 |
total_spindles = IAllocator._GetAttributeFromNodeData( |
|
568 |
node_info, node_name, "spindles_total") |
|
569 |
free_spindles = IAllocator._GetAttributeFromNodeData( |
|
570 |
node_info, node_name, "spindles_free") |
|
571 |
else: |
|
572 |
# we didn't even ask the node for VG status, so use zeros |
|
573 |
total_disk = free_disk = 0 |
|
574 |
total_spindles = free_spindles = 0 |
|
575 |
return (total_disk, free_disk, total_spindles, free_spindles) |
|
576 |
|
|
546 | 577 |
def _ComputeDynamicNodeData(self, node_cfg, node_data, node_iinfo, i_list, |
547 | 578 |
node_results, has_lvm): |
548 | 579 |
"""Compute global node data. |
... | ... | |
583 | 614 |
if iinfo.admin_state == constants.ADMINST_UP: |
584 | 615 |
i_p_up_mem += beinfo[constants.BE_MAXMEM] |
585 | 616 |
|
586 |
# TODO: replace this with proper storage reporting |
|
587 |
if has_lvm: |
|
588 |
total_disk = self._GetAttributeFromNodeData(remote_info, ninfo.name, |
|
589 |
"storage_size") |
|
590 |
free_disk = self._GetAttributeFromNodeData(remote_info, ninfo.name, |
|
591 |
"storage_free") |
|
592 |
total_spindles = self._GetAttributeFromNodeData( |
|
593 |
remote_info, ninfo.name, "spindles_total") |
|
594 |
free_spindles = self._GetAttributeFromNodeData( |
|
595 |
remote_info, ninfo.name, "spindles_free") |
|
596 |
else: |
|
597 |
# we didn't even ask the node for VG status, so use zeros |
|
598 |
total_disk = free_disk = 0 |
|
599 |
total_spindles = free_spindles = 0 |
|
617 |
(total_disk, free_disk, total_spindles, free_spindles) = \ |
|
618 |
self._ComputeStorageData(remote_info, ninfo.name, has_lvm) |
|
600 | 619 |
|
601 | 620 |
# compute memory used by instances |
602 | 621 |
pnr_dyn = { |
Also available in: Unified diff