def satisfied_by_node()

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)