def _schedule_from_maint_window()

in source/lambda/schedulers/ec2_service.py [0:0]


    def _schedule_from_maint_window(self, name, start, hours, interval, timezone):
        start_dt = start.replace(second=0, microsecond=0)
        start_before_begin = max(interval, 10)
        begin_dt = start_dt - timedelta(minutes=start_before_begin)
        end_dt = start_dt + timedelta(hours=hours)
        if begin_dt.day == end_dt.day:
            periods = [
                {
                    "period":
                        RunningPeriod(
                            name="{}-period".format(name),
                            begintime=begin_dt.time(),
                            endtime=end_dt.time(),
                            monthdays={begin_dt.day},
                            months={begin_dt.month}
                        ),
                    "instancetype": None
                }
            ]
        elif end_dt - begin_dt <= timedelta(hours=24):
            periods = [
                {
                    "period":
                        RunningPeriod(
                            name="{}-period-1".format(name),
                            begintime=begin_dt.time(),
                            endtime=SchedulerConfigBuilder.get_time_from_string("23:59"),
                            monthdays={begin_dt.day},
                            months={begin_dt.month}
                        ),
                    "instancetype": None
                },
                {
                    "period":
                        RunningPeriod(
                            name="{}-period-2".format(name),
                            begintime=SchedulerConfigBuilder.get_time_from_string("00:00"),
                            endtime=end_dt.time(),
                            monthdays={end_dt.day},
                            months={end_dt.month}
                        ),
                    "instancetype": None
                }
            ]
        else:
            periods = [
                {
                    "period":
                        RunningPeriod(
                            name="{}-period-1".format(name),
                            begintime=begin_dt.time(),
                            endtime=SchedulerConfigBuilder.get_time_from_string("23:59"),
                            monthdays={begin_dt.day},
                            months={begin_dt.month}
                        ),
                    "instancetype": None
                },
                {
                    "period":
                        RunningPeriod(
                            name="{}-period-2".format(name),
                            monthdays={(end_dt - timedelta(days=1)).day},
                            months={(end_dt - timedelta(days=1)).month}
                        ),
                    "instancetype": None
                },
                {
                    "period":
                        RunningPeriod(
                            name="{}-period-3".format(name),
                            begintime=SchedulerConfigBuilder.get_time_from_string("00:00"),
                            endtime=end_dt.time(),
                            monthdays={end_dt.day},
                            months={end_dt.month}
                        ),
                    "instancetype": None
                }
            ]

        schedule = InstanceSchedule(name=name,
                                    timezone=timezone,
                                    description="{} maintenance window".format(name),
                                    enforced=True,
                                    periods=periods)

        self._logger.info(INF_MAINT_WINDOW, name, begin_dt.isoformat(), end_dt.isoformat())

        return schedule