in gridengine/src/gridengine/driver.py [0:0]
def satisfied_by_node(self, node: Node) -> SatisfiedResult:
if self.placement_group:
if node.placement_group != self.placement_group:
return SatisfiedResult(
"WrongPlacementGroup",
self,
node,
reasons=[
"{} is in a different pg: {} != {}".format(
node, node.placement_group, self.placement_group
)
],
)
elif node.placement_group:
return SatisfiedResult(
"NodeInAPlacementGroup",
self,
node,
reasons=[
"{} is in a pg but our job is not colocated: {}".format(
node, node.placement_group
)
],
)
node_hostgroups: List[str] = get_node_hostgroups(self.config, node)
if not node_hostgroups:
node_hostgroups = [] if node.exists else [self.hostgroup.name]
if self.hostgroup.name not in node_hostgroups:
msg = "{} is not in the target hostgroup {}: {}".format(
node, self.hostgroup.name, node_hostgroups
)
logging.trace("WrongHostgroup %s", msg)
return SatisfiedResult("WrongHostgroup", self, node, reasons=[msg],)
# Checking child constraints after our own because otherwise
# there will be pointless results logged that will confuse users.
for child_constraint in self.get_children():
result = child_constraint.satisfied_by_node(node)
if not result:
return result
return SatisfiedResult("success", self, node)