X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Freservation.py;h=dd422b80893079aa57f9929d85ec87a6cdb74b2b;hb=48a73b18fd7daed13c645c1adeddb57b560e7a2d;hp=63c44b3ba24fddf483e0a07614caefcef9e088a7;hpb=1dfc88561e72e747a97769f246b2d322f9ec4d7c;p=nodemanager.git diff --git a/plugins/reservation.py b/plugins/reservation.py index 63c44b3..dd422b8 100644 --- a/plugins/reservation.py +++ b/plugins/reservation.py @@ -11,7 +11,7 @@ import time import threading import logger -import accounts +import account import database # there is an implicit assumption that this triggers after slicemanager @@ -25,9 +25,9 @@ persistent_data = True ############################## # rough implementation for a singleton class -def Singleton (klass,*args,**kwds): - if not hasattr(klass,'_instance'): - klass._instance=klass(*args,**kwds) +def Singleton (klass, *args, **kwds): + if not hasattr(klass, '_instance'): + klass._instance=klass(*args, **kwds) return klass._instance def start(): @@ -58,11 +58,11 @@ class reservation: # check we're using a compliant GetSlivers if 'reservation_policy' not in data: - logger.log_missing_data("reservation.GetSlivers",'reservation_policy') + logger.log_missing_data("reservation.GetSlivers", 'reservation_policy') return - reservation_policy=data['reservation_policy'] + self.reservation_policy=data['reservation_policy'] if 'leases' not in data: - logger.log_missing_data("reservation.GetSlivers",'leases') + logger.log_missing_data("reservation.GetSlivers", 'leases') return # store data locally @@ -70,16 +70,16 @@ class reservation: if data: self.data = data # regular nodes are not affected - if reservation_policy == 'none': + if self.reservation_policy == 'none': return - elif reservation_policy not in ['lease_or_idle','lease_or_shared']: - logger.log("reservation: ignoring -- unexpected value for reservation_policy %r"%reservation_policy) + elif self.reservation_policy not in ['lease_or_idle', 'lease_or_shared']: + logger.log("reservation: ignoring -- unexpected value for reservation_policy %r"%self.reservation_policy) return - # at this point we have reservation_policy in ['lease_or_idle','lease_or_shared'] + # at this point we have reservation_policy in ['lease_or_idle', 'lease_or_shared'] # we make no difference for now - logger.verbose('reservation.GetSlivers : reservable node -- listing timers ') - + logger.log("reservation.GetSlivers: reservable node -- policy=%s"%self.reservation_policy) self.sync_timers_from_leases() + logger.log("reservation.GetSlivers: listing timers") if reservation.debug: self.list_timers() @@ -100,43 +100,57 @@ class reservation: return ((int(time)+granularity/2)/granularity)*granularity def clear_timers (self): - for timer in self.timers.values(): + for timer in list(self.timers.values()): timer.cancel() self.timers={} def sync_timers_from_leases (self): self.clear_timers() for lease in self.data['leases']: - self.ensure_timer(lease['t_from']) - self.ensure_timer(lease['t_until']) + self.ensure_timer_from_until(lease['t_from'], lease['t_until']) + + # assuming t1