Revision b6e31c23
b/lib/cmdlib/cluster.py | ||
---|---|---|
2127 | 2127 |
"couldn't retrieve status for disk/%s on %s: %s", |
2128 | 2128 |
idx, self.cfg.GetNodeName(nname), bdev_status) |
2129 | 2129 |
|
2130 |
if instance.disks_active and success and \ |
|
2131 |
(bdev_status.is_degraded or |
|
2132 |
bdev_status.ldisk_status != constants.LDS_OKAY): |
|
2133 |
msg = "disk/%s on %s" % (idx, self.cfg.GetNodeName(nname)) |
|
2134 |
if bdev_status.is_degraded: |
|
2135 |
msg += " is degraded" |
|
2136 |
if bdev_status.ldisk_status != constants.LDS_OKAY: |
|
2137 |
msg += "; state is '%s'" % \ |
|
2130 |
if instance.disks_active and success and bdev_status.is_degraded: |
|
2131 |
msg = "disk/%s on %s is degraded" % (idx, self.cfg.GetNodeName(nname)) |
|
2132 |
|
|
2133 |
code = self.ETYPE_ERROR |
|
2134 |
accepted_lds = [constants.LDS_OKAY, constants.LDS_SYNC] |
|
2135 |
|
|
2136 |
if bdev_status.ldisk_status in accepted_lds: |
|
2137 |
code = self.ETYPE_WARNING |
|
2138 |
|
|
2139 |
msg += "; local disk state is '%s'" % \ |
|
2138 | 2140 |
constants.LDS_NAMES[bdev_status.ldisk_status] |
2139 | 2141 |
|
2140 |
self._Error(constants.CV_EINSTANCEFAULTYDISK, instance.name, msg) |
|
2142 |
self._Error(constants.CV_EINSTANCEFAULTYDISK, instance.name, msg, |
|
2143 |
code=code) |
|
2141 | 2144 |
|
2142 | 2145 |
self._ErrorIf(pnode_img.rpc_fail and not pnode_img.offline, |
2143 | 2146 |
constants.CV_ENODERPC, self.cfg.GetNodeName(pnode_uuid), |
b/lib/storage/drbd.py | ||
---|---|---|
653 | 653 |
ldisk_status = constants.LDS_OKAY |
654 | 654 |
elif stats.is_diskless: |
655 | 655 |
ldisk_status = constants.LDS_FAULTY |
656 |
elif stats.is_in_resync: |
|
657 |
ldisk_status = constants.LDS_SYNC |
|
656 | 658 |
else: |
657 | 659 |
ldisk_status = constants.LDS_UNKNOWN |
658 | 660 |
|
b/src/Ganeti/Constants.hs | ||
---|---|---|
773 | 773 |
ldsUnknown :: Int |
774 | 774 |
ldsUnknown = Types.localDiskStatusToRaw DiskStatusUnknown |
775 | 775 |
|
776 |
ldsSync :: Int |
|
777 |
ldsSync = Types.localDiskStatusToRaw DiskStatusSync |
|
778 |
|
|
776 | 779 |
ldsNames :: Map Int String |
777 | 780 |
ldsNames = |
778 | 781 |
Map.fromList [ (Types.localDiskStatusToRaw ds, |
b/src/Ganeti/Types.hs | ||
---|---|---|
813 | 813 |
-- Python code depends on: |
814 | 814 |
-- DiskStatusOk < DiskStatusUnknown < DiskStatusFaulty |
815 | 815 |
$(THH.declareILADT "LocalDiskStatus" |
816 |
[ ("DiskStatusFaulty", 3) |
|
817 |
, ("DiskStatusOk", 1) |
|
818 |
, ("DiskStatusUnknown", 2) |
|
816 |
[ ("DiskStatusOk", 1) |
|
817 |
, ("DiskStatusSync", 2) |
|
818 |
, ("DiskStatusUnknown", 3) |
|
819 |
, ("DiskStatusFaulty", 4) |
|
819 | 820 |
]) |
820 | 821 |
|
821 | 822 |
localDiskStatusName :: LocalDiskStatus -> String |
822 | 823 |
localDiskStatusName DiskStatusFaulty = "faulty" |
823 | 824 |
localDiskStatusName DiskStatusOk = "ok" |
825 |
localDiskStatusName DiskStatusSync = "syncing" |
|
824 | 826 |
localDiskStatusName DiskStatusUnknown = "unknown" |
825 | 827 |
|
826 | 828 |
-- | Replace disks type. |
b/test/py/cmdlib/cluster_unittest.py | ||
---|---|---|
1492 | 1492 |
|
1493 | 1493 |
@withLockedLU |
1494 | 1494 |
def testNotOkayDiskStatus(self, lu): |
1495 |
self.diskstatus[self.master_uuid][0][1].is_degraded = True |
|
1495 | 1496 |
self.diskstatus[self.master_uuid][0][1].ldisk_status = constants.LDS_FAULTY |
1496 | 1497 |
lu._VerifyInstance(self.running_inst, self.node_imgs, self.diskstatus) |
1497 | 1498 |
self.mcpu.assertLogContainsRegex("instance .* state is 'faulty'") |
Also available in: Unified diff