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