示例#1
0
    def init_stages(self, cassandra_conf, stage_log):
        assert isinstance(cassandra_conf, CassandraConf)
        stg_name_list = Cassandra.get_all_stage_name_list()
        for stg_name in stg_name_list:
            cur_num_workers = cassandra_conf.get_stg_num_workers(stg_name)
            cur_scheduler_generator = cassandra_conf.get_stg_scheduler_generator(stg_name)
            cur_scheduler = cur_scheduler_generator(self.env)
            cur_schedule_resource = cassandra_conf.get_stg_schedule_resource(stg_name)
            cur_req_cost_func = self.get_req_cost_func(cur_schedule_resource)
            [is_cur_stage_special, cur_stage_type_name, cur_stage_type_data_dict] = \
                cassandra_conf.get_special_stage_constructor_additional_param_dict(stg_name)
            cur_stage_name = self.pn_name + '_' + stg_name
            if not is_cur_stage_special:
                cur_stage = Stage(self.env, cur_stage_name, cur_num_workers, cur_scheduler,
                                  cur_req_cost_func, log_file=stage_log)
            else:
                print 'stage:' + stg_name + ' is a ' + str(cur_stage_type_name) + 'scheduler:' + str(cur_scheduler)
                cur_stage_kwargs_dict = self._get_basic_stage_init_dict(cur_stage_name, cur_num_workers, cur_scheduler,
                                                                        cur_req_cost_func, stage_log)
                cur_stage_kwargs_dict.update(cur_stage_type_data_dict)
                self._transform_resource_str_to_real_obj(cur_stage_kwargs_dict)
                cur_stage = Stage.create_special_stage(cur_stage_type_name, cur_stage_kwargs_dict)

            cur_stage.set_monitor_interval(cassandra_conf.get_stg_monitor_interval())
            self.__dict__.update({stg_name: cur_stage})