in Solutions/Mimecast/Data Connectors/MimecastAudit/MimecastAudit/mimecast_audit_to_sentinel.py [0:0]
def checkpoint_field(self):
"""Set the start date and end date in checkpoint file.
Returns:
json : Parsed checkpoint
"""
__method_name = inspect.currentframe().f_code.co_name
try:
checkpoint = self.get_checkpoint_data(self.state_manager, load_flag=True)
if not checkpoint:
checkpoint = {}
utc_timestamp = (
datetime.datetime.utcnow()
.replace(tzinfo=datetime.timezone.utc)
.isoformat()
)
checkpoint_updated = False
if checkpoint.get("start_time") is None:
applogger.info(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Checkpoint is empty ",
)
)
start_date = None
if not consts.START_DATE:
start_date = self.get_utc_time_in_past(days=consts.DAYS_BACK)
applogger.info(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Date set to {} days in the past".format(consts.DAYS_BACK),
)
)
else:
start_date = (
datetime.datetime.strptime(consts.START_DATE, "%Y-%m-%d")
.replace(
hour=0, minute=0, second=0, tzinfo=datetime.timezone.utc
)
.strftime(consts.TIME_FORMAT)
)
now = datetime.datetime.utcnow().strftime(consts.TIME_FORMAT)
last_valid_date = self.get_utc_time_in_past(
days=consts.VALID_PREVIOUS_DAY
)
if start_date > now:
applogger.error(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Error Occurred while validating params. StartTime cannot be in the future.",
)
)
raise MimecastException()
elif start_date < last_valid_date:
applogger.info(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Date provided is older than 60 days. "
"Ingestion will start from this date: {}".format(
last_valid_date
),
)
)
applogger.info(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Date taken from user input",
)
)
mimecast_start_date = datetime.datetime.strptime(
start_date, consts.TIME_FORMAT
)
checkpoint["start_time"] = mimecast_start_date.strftime(
consts.TIME_FORMAT
)
end_date = datetime.datetime.fromisoformat(utc_timestamp)
mimecast_end_date = end_date.strftime(consts.TIME_FORMAT)
checkpoint["end_time"] = mimecast_end_date
checkpoint_updated = True
applogger.info(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Start and end dates initialized in the checkpoint file.",
)
)
self.start_date = checkpoint["start_time"]
if checkpoint_updated:
self.post_checkpoint_data(self.state_manager, data=checkpoint)
applogger.info(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
"Checkpoint data fetched and written",
)
)
return checkpoint
except MimecastException:
raise MimecastException()
except KeyError as key_error:
applogger.error(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
consts.KEY_ERROR_MSG.format(key_error),
)
)
raise MimecastException()
except Exception as err:
applogger.error(
self.log_format.format(
consts.LOGS_STARTS_WITH,
__method_name,
self.azure_function_name,
consts.UNEXPECTED_ERROR_MSG.format(err),
)
)
raise MimecastException()