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 []