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})