Revision 98825740 lib/cmdlib.py

b/lib/cmdlib.py
6293 6293
                             in self.wanted_names]
6294 6294
    return
6295 6295

  
6296
  def _ComputeBlockdevStatus(self, node, instance_name, dev):
6297
    """Returns the status of a block device
6298

  
6299
    """
6300
    if self.op.static:
6301
      return None
6302

  
6303
    self.cfg.SetDiskID(dev, node)
6304

  
6305
    result = self.rpc.call_blockdev_find(node, dev)
6306
    if result.offline:
6307
      return None
6308

  
6309
    result.Raise("Can't compute disk status for %s" % instance_name)
6310

  
6311
    status = result.payload
6312

  
6313
    return (status.dev_path, status.major, status.minor,
6314
            status.sync_percent, status.estimated_time,
6315
            status.is_degraded, status.ldisk_degraded)
6316

  
6296 6317
  def _ComputeDiskStatus(self, instance, snode, dev):
6297 6318
    """Compute block device status.
6298 6319

  
6299 6320
    """
6300
    static = self.op.static
6301
    if not static:
6302
      self.cfg.SetDiskID(dev, instance.primary_node)
6303
      dev_pstatus = self.rpc.call_blockdev_find(instance.primary_node, dev)
6304
      if dev_pstatus.offline:
6305
        dev_pstatus = None
6306
      else:
6307
        dev_pstatus.Raise("Can't compute disk status for %s" % instance.name)
6308
        dev_pstatus = dev_pstatus.payload.ToLegacyStatus()
6309
    else:
6310
      dev_pstatus = None
6311

  
6312 6321
    if dev.dev_type in constants.LDS_DRBD:
6313 6322
      # we change the snode then (otherwise we use the one passed in)
6314 6323
      if dev.logical_id[0] == instance.primary_node:
......
6316 6325
      else:
6317 6326
        snode = dev.logical_id[0]
6318 6327

  
6319
    if snode and not static:
6320
      self.cfg.SetDiskID(dev, snode)
6321
      dev_sstatus = self.rpc.call_blockdev_find(snode, dev)
6322
      if dev_sstatus.offline:
6323
        dev_sstatus = None
6324
      else:
6325
        dev_sstatus.Raise("Can't compute disk status for %s" % instance.name)
6326
        dev_sstatus = dev_sstatus.payload.ToLegacyStatus()
6327
    else:
6328
      dev_sstatus = None
6328
    dev_pstatus = self._ComputeBlockdevStatus(instance.primary_node,
6329
                                              instance.name, dev)
6330
    dev_sstatus = self._ComputeBlockdevStatus(snode, instance.name, dev)
6329 6331

  
6330 6332
    if dev.children:
6331 6333
      dev_children = [self._ComputeDiskStatus(instance, snode, child)

Also available in: Unified diff