Ejemplo n.º 1
0
    def ValidateResult(self, ia, result):
        """Validates the result of an relocation request.

    """
        IARequestBase.ValidateResult(self, ia, result)

        node2group = dict((name, ndata["group"])
                          for (name, ndata) in ia.in_data["nodes"].items())

        fn = compat.partial(self._NodesToGroups, node2group,
                            ia.in_data["nodegroups"])

        instance = ia.cfg.GetInstanceInfo(self.inst_uuid)
        request_groups = fn(
            ia.cfg.GetNodeNames(self.relocate_from_node_uuids) +
            ia.cfg.GetNodeNames([instance.primary_node]))
        result_groups = fn(result +
                           ia.cfg.GetNodeNames([instance.primary_node]))

        if ia.success and not set(result_groups).issubset(request_groups):
            raise errors.ResultValidationError(
                "Groups of nodes returned by"
                " iallocator (%s) differ from original"
                " groups (%s)" % (utils.CommaJoin(result_groups),
                                  utils.CommaJoin(request_groups)))
Ejemplo n.º 2
0
  def ValidateResult(self, ia, result):
    """Validates an single instance allocation request.

    """
    IARequestBase.ValidateResult(self, ia, result)

    if ia.success and len(result) != self.RequiredNodes():
      raise errors.ResultValidationError("iallocator returned invalid number"
                                         " of nodes (%s), required %s" %
                                         (len(result), self.RequiredNodes()))
Ejemplo n.º 3
0
    def ValidateResult(self, ia, result):
        """Validates the result of an request.

    @param ia: The IAllocator instance
    @param result: The IAllocator run result
    @raises ResultValidationError: If validation fails

    """
        if ia.success and not self.REQ_RESULT(result):  # pylint: disable=E1102
            raise errors.ResultValidationError(
                "iallocator returned invalid result,"
                " expected %s, got %s" % (self.REQ_RESULT, result))