in automation/tinc/main/ext/qautils/gppylib/programs/clsSystemState.py [0:0]
def __addResyncProgressFields(self, data, primary, primarySegmentData, isMirror):
"""
Add progress fields to the current segment in data, using the primary information provided.
@param isMirror True if the current segment is a mirror, False otherwise. Not all fields from the primary
data should be inserted (for example, change tracking size is not
considered to apply to the pair but only to the primary so it will not be
inserted for the mirror)
"""
mirrorData = primarySegmentData[gp.SEGMENT_STATUS__GET_MIRROR_STATUS]
#
# populate change tracking fields
#
if not isMirror: # we don't populate CHANGE_TRACKING values for the mirror
if primary.getSegmentMode() == gparray.MODE_RESYNCHRONIZATION or \
primary.getSegmentMode() == gparray.MODE_CHANGELOGGING:
if mirrorData is None or mirrorData["changeTrackingBytesUsed"] < 0:
# server returns <0 if there was an error calculating size
data.addValue(VALUE__CHANGE_TRACKING_DATA_SIZE, "unable to retrieve data size", isWarning=True)
data.addValue(VALUE__CHANGE_TRACKING_DATA_SIZE_BYTES, "", isWarning=True)
else:
data.addValue(VALUE__CHANGE_TRACKING_DATA_SIZE,
self.__abbreviateBytes(mirrorData["changeTrackingBytesUsed"]))
data.addValue(VALUE__CHANGE_TRACKING_DATA_SIZE_BYTES, mirrorData["changeTrackingBytesUsed"])
if mirrorData is None:
# MPP-14054
pass
elif mirrorData["verificationStatus"] == "Running" or mirrorData["verificationStatus"] == "Suspended" or mirrorData["verificationStatus"] == "Pending":
data.addValue(VALUE__VERIFICATION_STATUS, mirrorData["verificationStatus"])
data.addValue(VALUE__VERIFICATION_MODE, mirrorData["verificationMode"])
verifyStartTimeStr = None
verifyStartTime = datetime.datetime.fromtimestamp(float(mirrorData["verificationStartTimeSecondsSinceEpoch"]))
verifyStartTimeStr = str (verifyStartTime)
verifyStartTimeTimestamp = verifyStartTime.isoformat()
#data.addValue(VALUE__VERIFICATION_START_TIME, mirrorData["verificationStartTimeSecondsSinceEpoch"])
estCompletePercent = '0.00%'
verifyTotalCount = mirrorData["verificationTotalCount"]
verifyCompletedCount = mirrorData["verificationCompletedCount"]
if float(mirrorData["verificationTotalCount"]) != 0.0:
estCompletePercent = '%.2f%%' % ((float(mirrorData["verificationCompletedCount"])/float(mirrorData["verificationTotalCount"]))*100.0)
verifyEndTime = datetime.datetime.fromtimestamp(float(mirrorData["estimatedCompletionVerificationTimeSecondsSinceEpoch"]))
estimatedVerifyEndTimeStr = str (verifyEndTime)
estimatedVerifyEndTimeTimestamp = verifyEndTime.isoformat()
#verifyCompletedCount = '%.2f' % (verifyCompletedCount)
#verifyCompletedCountStr = str (verifyCompletedCount)
verifyCompletedCountStr = verifyCompletedCount
verifyCompletedCountStr += " GB"
#verifyTotalCount = '%.2f' % (verifyTotalCount)
#verifyTotalCountStr = str(verifyTotalCount)
verifyTotalCountStr = verifyTotalCount
verifyTotalCountStr += " GB"
data.addValue(VALUE__VERIFICATION_START_TIME, verifyStartTimeTimestamp)
data.addValue(VALUE__VERIFICATION_VERIFIED, verifyCompletedCountStr)
data.addValue(VALUE__VERIFICATION_EST_TOTAL, verifyTotalCountStr)
data.addValue(VALUE__VERIFICATION_EST_PROGRESS, estCompletePercent)
if (float(mirrorData["verificationCompletedCount"])) == 0.00:
data.addValue(VALUE__VERIFICATION_EST_END_TIME, "Not Available")
elif (float(mirrorData["verificationTotalCount"]) - float(mirrorData["verificationCompletedCount"])) == 0.0 :
data.addValue(VALUE__VERIFICATION_EST_END_TIME, "Not Available")
elif (float(mirrorData["estimatedCompletionVerificationTimeSecondsSinceEpoch"]) == 0.0):
data.addValue(VALUE__VERIFICATION_EST_END_TIME, "Not Available")
else:
data.addValue(VALUE__VERIFICATION_EST_END_TIME, estimatedVerifyEndTimeTimestamp)
else:
data.addValue(VALUE__VERIFICATION_START_TIME, "Not Available")
data.addValue(VALUE__VERIFICATION_EST_PROGRESS, "Not Available")
data.addValue(VALUE__VERIFICATION_EST_END_TIME, "Not Available")
data.addValue(VALUE__VERIFICATION_VERIFIED, "Not Available")
data.addValue(VALUE__VERIFICATION_EST_TOTAL, mirrorData["Not Available"])
#
# populate resync modes on primary and mirror
#
if primary.getSegmentMode() == gparray.MODE_RESYNCHRONIZATION:
if mirrorData is None:
data.addValue(VALUE__RESYNC_EST_PROGRESS_WITH_MIRROR, "unable to retrieve progress", isWarning=True)
else:
dataSynchronizedBytes = mirrorData["resyncNumCompleted"] * 32L * 1024
dataSynchronizedStr = self.__abbreviateBytes( dataSynchronizedBytes )
resyncDataBytes = None
resyncProgressNumeric = None
totalDataToSynchronizeBytes = None
estimatedEndTimeTimestamp = None
if mirrorData["dataState"] == "InSync":
totalDataToSynchronizeStr = "Sync complete; awaiting config change"
resyncProgressNumeric = 1
resyncProgressStr = "100%"
estimatedEndTimeStr = ""
elif mirrorData["estimatedCompletionTimeSecondsSinceEpoch"] == 0:
totalDataToSynchronizeStr = "Not Available"
resyncProgressStr = "Not Available"
estimatedEndTimeStr = "Not Available"
else:
if mirrorData["resyncTotalToComplete"] == 0:
resyncProgressStr = "Not Available"
else:
resyncProgressNumeric = mirrorData["resyncNumCompleted"] / float(mirrorData["resyncTotalToComplete"])
percentComplete = 100 * resyncProgressNumeric
resyncProgressStr = "%.2f%%" % percentComplete
totalDataToSynchronizeBytes = mirrorData["resyncTotalToComplete"] * 32L * 1024
totalDataToSynchronizeStr = self.__abbreviateBytes( totalDataToSynchronizeBytes )
endTime = datetime.datetime.fromtimestamp(mirrorData["estimatedCompletionTimeSecondsSinceEpoch"])
estimatedEndTimeStr = str(endTime)
estimatedEndTimeTimestamp = endTime.isoformat()
data.addValue(VALUE__RESYNC_MODE, "Full" if mirrorData['isFullResync'] else "Incremental")
data.addValue(VALUE__RESYNC_DATA_SYNCHRONIZED, dataSynchronizedStr)
data.addValue(VALUE__RESYNC_DATA_SYNCHRONIZED_BYTES, dataSynchronizedBytes)
data.addValue(VALUE__RESYNC_EST_TOTAL_DATA, totalDataToSynchronizeStr)
data.addValue(VALUE__RESYNC_EST_TOTAL_DATA_BYTES, totalDataToSynchronizeBytes)
data.addValue(VALUE__RESYNC_EST_PROGRESS_WITH_MIRROR, resyncProgressStr)
data.addValue(VALUE__RESYNC_EST_PROGRESS_WITH_MIRROR_NUMERIC, resyncProgressNumeric)
data.addValue(VALUE__RESYNC_EST_COMPLETION_TIME, estimatedEndTimeStr)
data.addValue(VALUE__RESYNC_EST_COMPLETION_TIME_TIMESTAMP, estimatedEndTimeTimestamp)