def do_status_report(self, operation, status, status_code, message):
     self.log("{0},{1},{2},{3}".format(operation, status, status_code,
                                       message))
     sub_stat = []
     stat_rept = []
     if self.get_public_settings(
     )[CommonVariables.
       vmType] == CommonVariables.VmTypeV2 and CommonVariables.isTerminalStatus(
           status):
         stat_rept = self.do_status_json(operation, status, sub_stat,
                                         status_code, message)
         time_delta = datetime.datetime.utcnow() - datetime.datetime(
             1970, 1, 1)
         time_span = self.timedelta_total_seconds(time_delta) * 1000
         date_place_holder = 'e2794170-c93d-4178-a8da-9bc7fd91ecc0'
         stat_rept[0]["timestampUTC"] = date_place_holder
         stat_rept = json.dumps(stat_rept)
         date_string = r'\/Date(' + str((int)(time_span)) + r')\/'
         stat_rept = stat_rept.replace(date_place_holder, date_string)
         status_code = '1'
         status = CommonVariables.status_success
         sub_stat = self.substat_new_entry(sub_stat, '0', stat_rept,
                                           'success', None)
     stat_rept = self.do_status_json(operation, status, sub_stat,
                                     status_code, message)
     stat_rept = json.dumps(stat_rept)
     # rename all other status files, or the WALA would report the wrong
     # status file.
     # because the wala choose the status file with the highest sequence
     # number to report.
     if self._context._status_file:
         with open(self._context._status_file, 'w+') as f:
             f.write(stat_rept)
    def do_status_report(self,
                         operation,
                         status,
                         status_code,
                         message,
                         taskId=None,
                         commandStartTimeUTCTicks=None,
                         snapshot_info=None):
        self.log("{0},{1},{2},{3}".format(operation, status, status_code,
                                          message))
        sub_stat = []
        stat_rept = []
        self.add_telemetry_data()

        vm_health_obj = Status.VmHealthInfoObj(
            ExtensionErrorCodeHelper.ExtensionErrorCodeHelper.
            ExtensionErrorCodeDict[self.ExtErrorCode], int(status_code))
        stat_rept = self.do_status_json(operation, status, sub_stat,
                                        status_code, message,
                                        HandlerUtility.telemetry_data, taskId,
                                        commandStartTimeUTCTicks,
                                        snapshot_info, vm_health_obj)
        time_delta = datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)
        time_span = self.timedelta_total_seconds(time_delta) * 1000
        date_place_holder = 'e2794170-c93d-4178-a8da-9bc7fd91ecc0'
        stat_rept.timestampUTC = date_place_holder
        date_string = r'\/Date(' + str((int)(time_span)) + r')\/'
        stat_rept = "[" + json.dumps(stat_rept,
                                     cls=Status.ComplexEncoder) + "]"
        stat_rept = stat_rept.replace(date_place_holder, date_string)

        # Add Status as sub-status for Status to be written on Status-File
        sub_stat = self.substat_new_entry(sub_stat, '0', stat_rept, 'success',
                                          None)
        if self.get_public_settings(
        )[CommonVariables.
          vmType] == CommonVariables.VmTypeV2 and CommonVariables.isTerminalStatus(
              status):
            status = CommonVariables.status_success
        stat_rept_file = self.do_status_json(operation, status, sub_stat,
                                             status_code, message, None,
                                             taskId, commandStartTimeUTCTicks,
                                             None, None)
        stat_rept_file = "[" + json.dumps(stat_rept_file,
                                          cls=Status.ComplexEncoder) + "]"

        # rename all other status files, or the WALA would report the wrong
        # status file.
        # because the wala choose the status file with the highest sequence
        # number to report.
        if self._context._status_file:
            with open(self._context._status_file, 'w+') as f:
                f.write(stat_rept_file)

        return stat_rept
    def do_status_report(self,
                         operation,
                         status,
                         status_code,
                         message,
                         taskId=None,
                         commandStartTimeUTCTicks=None,
                         snapshot_info=None,
                         total_size=0,
                         failure_flag=True):
        self.log("{0},{1},{2},{3}".format(operation, status, status_code,
                                          message))
        sub_stat = []
        stat_rept = []
        self.add_telemetry_data()
        snapshotTelemetry = ""

        if CommonVariables.snapshotCreator in HandlerUtility.telemetry_data.keys(
        ):
            snapshotTelemetry = "{0}{1}={2}, ".format(
                snapshotTelemetry, CommonVariables.snapshotCreator,
                HandlerUtility.telemetry_data[CommonVariables.snapshotCreator])
        if CommonVariables.hostStatusCodePreSnapshot in HandlerUtility.telemetry_data.keys(
        ):
            snapshotTelemetry = "{0}{1}={2}, ".format(
                snapshotTelemetry, CommonVariables.hostStatusCodePreSnapshot,
                HandlerUtility.telemetry_data[
                    CommonVariables.hostStatusCodePreSnapshot])
        if CommonVariables.hostStatusCodeDoSnapshot in HandlerUtility.telemetry_data.keys(
        ):
            snapshotTelemetry = "{0}{1}={2}, ".format(
                snapshotTelemetry, CommonVariables.hostStatusCodeDoSnapshot,
                HandlerUtility.telemetry_data[
                    CommonVariables.hostStatusCodeDoSnapshot])

        if CommonVariables.statusBlobUploadError in HandlerUtility.telemetry_data.keys(
        ):
            message = "{0} {1}={2}, ".format(
                message, CommonVariables.statusBlobUploadError,
                HandlerUtility.telemetry_data[
                    CommonVariables.statusBlobUploadError])
        message = message + snapshotTelemetry

        vm_health_obj = Utils.Status.VmHealthInfoObj(
            ExtensionErrorCodeHelper.ExtensionErrorCodeHelper.
            ExtensionErrorCodeDict[self.ExtErrorCode], int(self.ExtErrorCode))

        consistencyTypeStr = CommonVariables.consistency_crashConsistent
        if (self.SnapshotConsistency !=
                Utils.Status.SnapshotConsistencyType.crashConsistent):
            if (status_code == CommonVariables.success_appconsistent):
                self.SnapshotConsistency = Utils.Status.SnapshotConsistencyType.applicationConsistent
                consistencyTypeStr = CommonVariables.consistency_applicationConsistent
            elif (status_code == CommonVariables.success):
                self.SnapshotConsistency = Utils.Status.SnapshotConsistencyType.fileSystemConsistent
                consistencyTypeStr = CommonVariables.consistency_fileSystemConsistent
            else:
                self.SnapshotConsistency = Utils.Status.SnapshotConsistencyType.none
                consistencyTypeStr = CommonVariables.consistency_none
        HandlerUtility.add_to_telemetery_data("consistencyType",
                                              consistencyTypeStr)

        extensionResponseObj = Utils.Status.ExtensionResponse(
            message, self.SnapshotConsistency, "")
        message = str(json.dumps(extensionResponseObj, cls=ComplexEncoder))

        self.convert_telemetery_data_to_bcm_serializable_format()
        stat_rept = self.do_status_json(
            operation, status, sub_stat, status_code, message,
            HandlerUtility.serializable_telemetry_data, taskId,
            commandStartTimeUTCTicks, snapshot_info, vm_health_obj, total_size,
            failure_flag)
        time_delta = datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)
        time_span = self.timedelta_total_seconds(time_delta) * 1000
        date_place_holder = 'e2794170-c93d-4178-a8da-9bc7fd91ecc0'
        stat_rept.timestampUTC = date_place_holder
        date_string = r'\/Date(' + str((int)(time_span)) + r')\/'
        stat_rept = "[" + json.dumps(stat_rept, cls=ComplexEncoder) + "]"
        stat_rept = stat_rept.replace(date_place_holder, date_string)

        # Add Status as sub-status for Status to be written on Status-File
        sub_stat = self.substat_new_entry(sub_stat, '0', stat_rept, 'success',
                                          None)
        if self.get_public_settings()[CommonVariables.vmType].lower(
        ) == CommonVariables.VmTypeV2.lower(
        ) and CommonVariables.isTerminalStatus(status):
            status = CommonVariables.status_success
        stat_rept_file = self.do_status_json(operation, status, sub_stat,
                                             status_code, message, None,
                                             taskId, commandStartTimeUTCTicks,
                                             None, None, total_size,
                                             failure_flag)
        stat_rept_file = "[" + json.dumps(stat_rept_file,
                                          cls=ComplexEncoder) + "]"

        # rename all other status files, or the WALA would report the wrong
        # status file.
        # because the wala choose the status file with the highest sequence
        # number to report.
        return stat_rept, stat_rept_file
    def do_status_report(self, operation, status, status_code, message, taskId = None, commandStartTimeUTCTicks = None, snapshot_info = None,total_size = 0,failure_flag = True ):
        self.log("{0},{1},{2},{3}".format(operation, status, status_code, message))
        sub_stat = []
        stat_rept = []
        self.add_telemetry_data()

        vm_health_obj = Utils.Status.VmHealthInfoObj(ExtensionErrorCodeHelper.ExtensionErrorCodeHelper.ExtensionErrorCodeDict[self.ExtErrorCode], int(self.ExtErrorCode))
        self.convert_telemetery_data_to_bcm_serializable_format()
        stat_rept = self.do_status_json(operation, status, sub_stat, status_code, message, HandlerUtility.serializable_telemetry_data, taskId, commandStartTimeUTCTicks, snapshot_info, vm_health_obj, total_size,failure_flag)
        time_delta = datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)
        time_span = self.timedelta_total_seconds(time_delta) * 1000
        date_place_holder = 'e2794170-c93d-4178-a8da-9bc7fd91ecc0'
        stat_rept.timestampUTC = date_place_holder
        date_string = r'\/Date(' + str((int)(time_span)) + r')\/'
        stat_rept = "[" + json.dumps(stat_rept, cls = ComplexEncoder) + "]"
        stat_rept = stat_rept.replace(date_place_holder,date_string)
        
        # Add Status as sub-status for Status to be written on Status-File
        sub_stat = self.substat_new_entry(sub_stat,'0',stat_rept,'success',None)
        if self.get_public_settings()[CommonVariables.vmType].lower() == CommonVariables.VmTypeV2.lower() and CommonVariables.isTerminalStatus(status) :
            status = CommonVariables.status_success
        stat_rept_file = self.do_status_json(operation, status, sub_stat, status_code, message, None, taskId, commandStartTimeUTCTicks, None, None,total_size,failure_flag)
        stat_rept_file =  "[" + json.dumps(stat_rept_file, cls = ComplexEncoder) + "]"

        # rename all other status files, or the WALA would report the wrong
        # status file.
        # because the wala choose the status file with the highest sequence
        # number to report.
        return stat_rept, stat_rept_file
 def do_status_report(self, operation, status, status_code, message):
     self.log("{0},{1},{2},{3}".format(operation, status, status_code, message))
     sub_stat = []
     stat_rept = []
     if self.get_public_settings()[CommonVariables.vmType] == CommonVariables.VmTypeV2 and CommonVariables.isTerminalStatus(status) :
         stat_rept = self.do_status_json(operation, status, sub_stat, status_code, message)
         time_delta = datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)
         time_span = self.timedelta_total_seconds(time_delta) * 1000
         date_place_holder = 'e2794170-c93d-4178-a8da-9bc7fd91ecc0'
         stat_rept[0]["timestampUTC"] = date_place_holder
         stat_rept = json.dumps(stat_rept)
         date_string = r'\/Date(' + str((int)(time_span)) + r')\/'
         stat_rept = stat_rept.replace(date_place_holder,date_string)
         status_code = '1'
         status = CommonVariables.status_success
         sub_stat = self.substat_new_entry(sub_stat,'0',stat_rept,'success',None)
     stat_rept = self.do_status_json(operation, status, sub_stat, status_code, message)
     stat_rept = json.dumps(stat_rept)
     # rename all other status files, or the WALA would report the wrong
     # status file.
     # because the wala choose the status file with the highest sequence
     # number to report.
     if self._context._status_file:
         with open(self._context._status_file,'w+') as f:
             f.write(stat_rept)