def satisfied_by_node()

in src/hpc/autoscale/node/constraints.py [0:0]


    def satisfied_by_node(self, node: "Node") -> SatisfiedResult:
        if node._is_example_node():
            node_str = "Bucket[array={} vm_size={} attr={}]".format(
                node.nodearray, node.vm_size, self.attr
            )
        else:
            node_str = "Node[name={} attr={}]".format(node.name, self.attr)

        if self.attr not in node.available:
            # TODO log
            msg = "Resource[name={}] is not defined for {}".format(self.attr, node_str)
            return SatisfiedResult(
                "UndefinedResource",
                self,
                node,
                [msg],
            )

        try:
            target = node.available[self.attr]

            assert isinstance(target, (int, float, ht.Size)), "%s => %s" % (
                target,
                type(target),
            )

            if target >= self.value:
                return SatisfiedResult(
                    "success",
                    self,
                    node,
                )

        except TypeError as e:
            logging.warning(
                "For attribute %s: Could not evaluate %s >= %s because they are different types: %s",
                self.attr,
                node.available[self.attr],
                self.value,
                e,
            )

        if node._is_example_node():
            msg = "Resource[name={} value={}] > Bucket[array={} vm_size={} value={}]".format(
                self.attr,
                repr(self.value),
                node.nodearray,
                node.vm_size,
                repr(node.available[self.attr]),
            )
        else:
            msg = "Resource[name={} value={}] > Node[name={} value={}]".format(
                self.attr,
                repr(self.value),
                node.name,
                repr(node.available[self.attr]),
            )
        return SatisfiedResult(
            "InsufficientResource",
            self,
            node,
            reasons=[msg],
        )