def get_packing_plan(self, topologyName, callback=None): """ get packing plan """ if callback: self.packing_plan_watchers[topologyName].append(callback) else: packing_plan_path = self.get_packing_plan_path(topologyName) with open(packing_plan_path) as f: data = f.read() packing_plan = PackingPlan() packing_plan.ParseFromString(data)
def watch_packing_plan(data, stats, event): """ watch the packing plan for updates """ if data: packing_plan = PackingPlan() packing_plan.ParseFromString(data) callback(packing_plan) else: callback(None) # Returning False will result in no future watches # being triggered. If isWatching is True, then # the future watches will be triggered. return isWatching
def build_packing_plan(self, instance_distribution): packing_plan = PackingPlan() for container_id in list(instance_distribution.keys()): container_plan = packing_plan.container_plans.add() container_plan.id = int(container_id) for (component_name, global_task_id, component_index) in instance_distribution[container_id]: instance_plan = container_plan.instance_plans.add() instance_plan.component_name = component_name instance_plan.task_id = int(global_task_id) instance_plan.component_index = int(component_index) return packing_plan