diff --git a/tm-cleanup.service b/tm-cleanup.service index 882c425..86614cd 100644 --- a/tm-cleanup.service +++ b/tm-cleanup.service @@ -7,6 +7,7 @@ Type=oneshot ExecStart=/usr/local/bin/tm reservation clean User=root ProtectSystem=strict +ReadWritePaths=/var/lib/tftpboot ReadWritePaths=/usr/local/tm Nice=19 IOSchedulingClass=best-effort diff --git a/tm.py b/tm.py index f7f4ba8..a747215 100755 --- a/tm.py +++ b/tm.py @@ -83,6 +83,7 @@ def reservation(self, argv): continue if (args.noexpire or today > datetime.strptime(v['expire'], dtfmt).date()): + self.power(split('tm power poweroff {}'.format(v['node']))) self.reset_node(v['node'], v['mac']) return @@ -106,19 +107,20 @@ def reservation(self, argv): if args.func == 'reserve' or args.func == 'update': try: - dt = datetime.strptime(args.expire, dtfmt) + dt = datetime.strptime(args.expire, dtfmt).date() except(ValueError): self.log('expiration date format must be dd/mm/yy' ', not {}'.format(args.expire)) return - if dt < datetime.now(): + today = datetime.now().date() + if dt < today: self.log('date must be on or later than today') return else: - latest = datetime.now() + timedelta(days=MAXDAYS) + latest = (datetime.now() + timedelta(days=MAXDAYS)).date() if dt > latest: dt = latest - self.log('14 days of the maximum reservation is set') + print('14 days of the maximum reservation is set') if args.func == 'reserve': if not self.set_loader(r['mac'], self.user, args.node): @@ -128,6 +130,7 @@ def reservation(self, argv): self.db.update({'user': getpass.getuser(), 'expire': dt.strftime(dtfmt)}, Query().node == args.node) else: + self.power(split('tm power poweroff {}'.format(args.node))) self.reset_node(args.node, r['mac']) self.log('{}: {} successful'.format(args.node, args.func))