|
| 1 | +from datetime import datetime |
| 2 | + |
| 3 | +from scalr.log import log |
| 4 | +from scalr.policy import PolicyAdapter |
| 5 | + |
| 6 | + |
| 7 | +def in_between(current, start, end): |
| 8 | + if start <= end: |
| 9 | + return start <= current < end |
| 10 | + else: # over midnight e.g., 23:30-04:15 |
| 11 | + return start <= current or current < end |
| 12 | + |
| 13 | + |
| 14 | +class TimePolicyAdapter(PolicyAdapter): |
| 15 | + def get_current(self) -> float: |
| 16 | + target = self.config.get("target", 1) |
| 17 | + |
| 18 | + now = datetime.now().time().strftime("%H:%M") |
| 19 | + log.info(f"Now, it is {now}") |
| 20 | + current = datetime.strptime(now, "%H:%M") |
| 21 | + |
| 22 | + start_time = self.config.get("start_time", "") |
| 23 | + end_time = self.config.get("end_time", "") |
| 24 | + |
| 25 | + start = datetime.strptime(start_time, "%H:%M") |
| 26 | + end = datetime.strptime(end_time, "%H:%M") |
| 27 | + |
| 28 | + if in_between(current, start, end): |
| 29 | + log.info(f"Time is between {start_time} and {end_time}") |
| 30 | + return self.config.get("metric", target) |
| 31 | + |
| 32 | + log.info(f"Time is not between {start_time} and {end_time}") |
| 33 | + return 0 |
0 commit comments