+ def assign_vim(self, target_id):
+ if target_id not in self.assignment:
+ self.assignment[target_id] = self._create_worker(target_id)
+ self.assignment_list.append(target_id)
+
+ def reload_vim(self, target_id):
+ # send reload_vim to the thread working with this VIM and inform all that a VIM has been changed,
+ # this is because database VIM information is cached for threads working with SDN
+ # if target_id in self.assignment:
+ # worker_id = self.assignment[target_id]
+ # self.workers[worker_id].insert_task(("reload_vim", target_id))
+ for worker in self.workers:
+ if worker.is_alive():
+ worker.insert_task(("reload_vim", target_id))
+
+ def unload_vim(self, target_id):
+ if target_id in self.assignment:
+ worker_id = self.assignment[target_id]
+ self.workers[worker_id].insert_task(("unload_vim", target_id))
+ del self.assignment[target_id]
+ self.assignment_list.remove(target_id)
+
+ def check_vim(self, target_id):
+ if target_id in self.assignment:
+ worker_id = self.assignment[target_id]
+ else:
+ worker_id = self._create_worker(target_id, load=False)
+
+ worker = self.workers[worker_id]
+ worker.insert_task(("check_vim", target_id))