in source/lambda/configuration/scheduler_config_builder.py [0:0]
def _build_schedule(self, schedule_config, dflt_tz, scheduler_use_config, dt):
# gets the timezone
def get_timezone(schedule_configuration):
schedule_timezone = schedule_configuration.get(configuration.TIMEZONE)
if not schedule_timezone:
schedule_timezone = dflt_tz
validated = SchedulerConfigBuilder.validated_timezone(schedule_timezone)
if validated is None:
raise ValueError(MSG_INVALID_SCHEDULE_TIMEZONE.format(schedule_timezone, schedule_configuration))
return validated
def get_schedule_name(config):
schedule_name = config.get(configuration.NAME, None)
if not schedule_name:
raise ValueError(MSG_NAME_MISSING_IN_SCHEDULE.format(config))
return schedule_name
def get_override_status(config):
if configuration.OVERWRITE in config:
if configuration.OVERRIDE_STATUS in config:
raise ValueError(
MSG_OVERWRITE_OVERRIDE_MUTUAL_EXCLUSIVE.format(configuration.OVERWRITE, configuration.OVERRIDE_STATUS))
overwrite = config[configuration.OVERWRITE]
return configuration.OVERRIDE_STATUS_RUNNING if overwrite else configuration.OVERRIDE_STATUS_STOPPED
status = config.get(configuration.OVERRIDE_STATUS, None)
if status is not None and status not in configuration.OVERRIDE_STATUS_VALUES:
raise ValueError(MSG_INVALID_OVERRIDE_STATUS.format(status, configuration.OVERRIDE_STATUS,
",".join(configuration.OVERRIDE_STATUS_VALUES)))
return status
try:
timezone = get_timezone(schedule_config)
override_status = get_override_status(schedule_config)
periods_for_schedule = []
# ignore periods if there is an always on or if override_status option is used
if not override_status:
# use current date and time for timezone of schedule
current_schema_dt = dt.now(SchedulerConfigBuilder._get_timezone(timezone))
periods_for_schedule = self._get_schedule_periods(schedule_config, current_schema_dt)
return InstanceSchedule(name=get_schedule_name(schedule_config),
periods=periods_for_schedule,
timezone=timezone,
override_status=override_status,
description=schedule_config.get(configuration.DESCRIPTION, ""),
use_metrics=schedule_config.get(configuration.METRICS, scheduler_use_config),
stop_new_instances=schedule_config.get(configuration.STOP_NEW_INSTANCES, True),
use_maintenance_window=schedule_config.get(configuration.USE_MAINTENANCE_WINDOW, False),
ssm_maintenance_window=schedule_config.get(configuration.SSM_MAINTENANCE_WINDOW, None),
enforced=schedule_config.get(configuration.ENFORCED, False),
hibernate=schedule_config.get(configuration.HIBERNATE, False),
retain_running=schedule_config.get(configuration.RETAINED_RUNNING))
except ValueError as ex:
if self._logger is not None:
self._logger.error(str(ex))
return None