コード例 #1
0
ファイル: filestatemanager.py プロジェクト: nlu90/heron
 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)
コード例 #2
0
        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
コード例 #3
0
 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