def parse_from_json(self, json_tree) -> None: # Top-level key elements // theoretically not required try: directories = U.json_to_canonic(json_tree[_DIRS]) except Exception as e: L.get_logger().log( 'SimplifiedConfigurationLoader::parse_from_json: ' + str(e)) directories = {} for tld_build in json_tree[_BUILDS]: # These are the elements, i.e., %astar and alike directory_for_item = U.json_to_canonic(tld_build) if self.is_escaped(directory_for_item): directory_for_item = directories[directory_for_item[1:]] item_tree = U.json_to_canonic( json_tree[_BUILDS][tld_build][_ITEMS]) for item_key in item_tree: L.get_logger().log( 'SimplifiedConfigurationLoader::parse_from_json: ' + str(item_key)) pira_item = self.create_item_from_json(item_key, item_tree) self._config.add_item(directory_for_item, pira_item) self._config._empty = False
def get_parameter(self, item_tree, item_key): run_opts = {} run_opts['mapper'] = U.json_to_canonic( item_tree[item_key]['argmap']['mapper']) params = {} param_tree = item_tree[item_key]['argmap'] file_mapper = False if 'pira-file' in param_tree: run_opts['pira-file'] = [] run_opts['pira-file'] = U.json_to_canonic( param_tree['pira-file']['names']) param_tree = param_tree['pira-file'] file_mapper = True for param in param_tree: parameter = U.json_to_canonic(param) if param == 'mapper': continue if file_mapper and param == 'names': continue try: params[parameter] except: params[parameter] = [] params[parameter] = U.json_to_canonic(param_tree[param]) run_opts['argmap'] = params return run_opts
def construct_from_json(self, json_tree) -> PiraConfiguration: conf = PiraConfiguration() # json_to_canonic can construct lists conf.set_build_directories(U.json_to_canonic(json_tree[_DESC][_DIRS])) conf.populate_build_dict(conf.directories) conf.set_global_flavors(U.json_to_canonic( json_tree[_DESC][_G_FLAVORS])) for glob_flav in conf.get_global_flavors(): conf.set_glob_submitter( U.json_to_canonic(json_tree[_DESC][_G_SUBMITTER][glob_flav]), glob_flav) for build_dir in conf.directories: conf.set_prefix( U.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_PREFIX]), build_dir) conf.set_items( U.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_ITEMS]), build_dir) conf.initialize_item_dict(build_dir, conf.builds[build_dir][_ITEMS]) for item in conf.builds[build_dir][_ITEMS]: conf.set_item_instrument_analysis( U.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_INSTRUMENT_ANALYSIS][item]), build_dir, item) conf.set_item_builders( U.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_BUILDERS][item]), build_dir, item) conf.set_item_args( U.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_ARGS]), build_dir, item) conf.set_item_runner( U.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_RUNNER]), build_dir, item) conf.set_item_submitter( U.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_SUBMITTER]), build_dir, item) conf.set_item_batch_script( U.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_BATCH_SCRIPT]), build_dir, item) conf.set_flavours( U.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_FLAVORS][item]), build_dir) conf.set_item_flavor( U.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_FLAVORS][item]), build_dir, item) conf._empty = False return conf