def __addResyncProgressFields()

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)