def preprocess_config()

in gridengine/src/gridengine/driver.py [0:0]


    def preprocess_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
        """
            # set site specific defaults. In this example, slots are defined
            # as the number of gigs per node.
            from hpc.autoscale import hpctypes as ht

            config["gridengine"] = ge_config = config.get("gridengine", {})
            if not ge_config.get("default_resources"):
                one_gig = ht.Memory.value_of("1g")
                ge_config["default_resources"] = [
                    {
                        "select": {},
                        "name": "slots",
                        "value": lambda node: node.memory // one_gig,
                    }
                ]

            return config
        """

        config["nodearrays"] = nodearrays = config.get("nodearrays", {})
        nodearrays["default"] = default = nodearrays.get("default", {})
        default["placement_groups"] = default_pgs = default.get("placement_groups", [])

        if not default_pgs:
            for gqueue in self.ge_env.queues.values():
                for pe in gqueue.get_pes():
                    if pe:
                        pe_pg_name = gqueue.get_placement_group(pe.name)
                        if pe_pg_name:
                            default_pgs.append(pe_pg_name)

            if "default_resources" not in config:
                config["default_resources"] = []

        # make sure that user doess not need to specify both shortcut and full name
        new_default_resources = []
        for dr in config["default_resources"]:
            c = self.ge_env.unfiltered_complexes.get(dr.get("name"))
            new_default_resources.append(dr)

            if not c:
                continue

            if c.name == c.shortcut:
                continue

            other_dr = deepcopy(dr)
            if dr["name"] == c.name:
                other_dr["name"] = c.shortcut
            else:
                other_dr["name"] = c.name
            new_default_resources.append(other_dr)

        config["default_resources"] = new_default_resources

        if not config.get("gridengine", {}).get("relevant_complexes"):
            return config

        if "ccnodeid" not in config["gridengine"]["relevant_complexes"]:
            config["gridengine"]["relevant_complexes"].append("ccnodeid")

        return config