def get_node_hostgroups()

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


def get_node_hostgroups(config: Dict, node: Node) -> List[str]:
    hostgroups_expr = node.metadata.get("gridengine_hostgroups")

    if not hostgroups_expr:
        hostgroups_expr = node.software_configuration.get("gridengine_hostgroups")

    if not hostgroups_expr:
        default_hostgroups = config.get("gridengine", {}).get("default_hostgroups", [])
        for dh in default_hostgroups:
            if "select" not in dh:
                logging.warning(
                    "Missing key 'select' in gridengine.default_hostgroups %s", dh
                )
                continue
            if "hostgroups" not in dh:
                logging.warning(
                    "Missing key 'hostgroups' in gridengine.default_hostgroups %s", dh
                )
                continue
            constraint_list = constraints.get_constraints(dh["select"])
            satisfied = True
            for c in constraint_list:
                if not c.satisfied_by_node(node):
                    satisfied = False
                    break
            if satisfied:
                hostgroups = dh["hostgroups"]
                if isinstance(hostgroups, str):
                    hostgroups = [hostgroups]

                hostgroups_expr = " ".join(hostgroups)
                # set it in metadata so we can output it in the cli
                node.metadata["gridengine_hostgroups"] = hostgroups_expr

    if hostgroups_expr:
        return re.split(",| +", hostgroups_expr)
    return []