Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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