schedules = Schedules(self)
schedules.load(namespace_validator, image_validator)
- with self.lock:
- self.schedules = schedules
+ self.schedules = schedules
def refresh_images(self):
elapsed = (datetime.now() - self.last_refresh_images).total_seconds()
self.log.debug("MirrorSnapshotScheduleHandler: refresh_images")
- self.load_schedules()
-
with self.lock:
+ self.load_schedules()
if not self.schedules:
self.log.debug("MirrorSnapshotScheduleHandler: no schedules")
self.watchers.unregister_all()
pool_name, e))
def rebuild_queue(self):
- with self.lock:
- now = datetime.now()
+ now = datetime.now()
- # don't remove from queue "due" images
- now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
+ # don't remove from queue "due" images
+ now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
- for schedule_time in list(self.queue):
- if schedule_time > now_string:
- del self.queue[schedule_time]
+ for schedule_time in list(self.queue):
+ if schedule_time > now_string:
+ del self.queue[schedule_time]
- if not self.schedules:
- return
+ if not self.schedules:
+ return
- for pool_id in self.images:
- for namespace in self.images[pool_id]:
- for image_id in self.images[pool_id][namespace]:
- self.enqueue(now, pool_id, namespace, image_id)
+ for pool_id in self.images:
+ for namespace in self.images[pool_id]:
+ for image_id in self.images[pool_id][namespace]:
+ self.enqueue(now, pool_id, namespace, image_id)
- self.condition.notify()
+ self.condition.notify()
def refresh_queue(self, current_images):
now = datetime.now()
"MirrorSnapshotScheduleHandler: add_schedule: level_spec={}, interval={}, start_time={}".format(
level_spec.name, interval, start_time))
+ # TODO: optimize to rebuild only affected part of the queue
with self.lock:
self.schedules.add(level_spec, interval, start_time)
-
- # TODO: optimize to rebuild only affected part of the queue
- self.rebuild_queue()
+ self.rebuild_queue()
return 0, "", ""
def remove_schedule(self, level_spec, interval, start_time):
"MirrorSnapshotScheduleHandler: remove_schedule: level_spec={}, interval={}, start_time={}".format(
level_spec.name, interval, start_time))
+ # TODO: optimize to rebuild only affected part of the queue
with self.lock:
self.schedules.remove(level_spec, interval, start_time)
-
- # TODO: optimize to rebuild only affected part of the queue
- self.rebuild_queue()
+ self.rebuild_queue()
return 0, "", ""
def list(self, level_spec):
schedules = Schedules(self)
schedules.load()
- with self.lock:
- self.schedules = schedules
+ self.schedules = schedules
def refresh_pools(self):
elapsed = (datetime.now() - self.last_refresh_pools).total_seconds()
self.log.debug("TrashPurgeScheduleHandler: refresh_pools")
- self.load_schedules()
-
with self.lock:
+ self.load_schedules()
if not self.schedules:
self.log.debug("TrashPurgeScheduleHandler: no schedules")
self.pools = {}
pools[pool_id][namespace] = pool_name
def rebuild_queue(self):
- with self.lock:
- now = datetime.now()
+ now = datetime.now()
- # don't remove from queue "due" images
- now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
+ # don't remove from queue "due" images
+ now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
- for schedule_time in list(self.queue):
- if schedule_time > now_string:
- del self.queue[schedule_time]
+ for schedule_time in list(self.queue):
+ if schedule_time > now_string:
+ del self.queue[schedule_time]
- if not self.schedules:
- return
+ if not self.schedules:
+ return
- for pool_id, namespaces in self.pools.items():
- for namespace in namespaces:
- self.enqueue(now, pool_id, namespace)
+ for pool_id, namespaces in self.pools.items():
+ for namespace in namespaces:
+ self.enqueue(now, pool_id, namespace)
- self.condition.notify()
+ self.condition.notify()
def refresh_queue(self, current_pools):
now = datetime.now()
"TrashPurgeScheduleHandler: add_schedule: level_spec={}, interval={}, start_time={}".format(
level_spec.name, interval, start_time))
+ # TODO: optimize to rebuild only affected part of the queue
with self.lock:
self.schedules.add(level_spec, interval, start_time)
-
- # TODO: optimize to rebuild only affected part of the queue
- self.rebuild_queue()
+ self.rebuild_queue()
return 0, "", ""
def remove_schedule(self, level_spec, interval, start_time):
"TrashPurgeScheduleHandler: remove_schedule: level_spec={}, interval={}, start_time={}".format(
level_spec.name, interval, start_time))
+ # TODO: optimize to rebuild only affected part of the queue
with self.lock:
self.schedules.remove(level_spec, interval, start_time)
-
- # TODO: optimize to rebuild only affected part of the queue
- self.rebuild_queue()
+ self.rebuild_queue()
return 0, "", ""
def list(self, level_spec):