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