Exemplo n.º 1
0
def convert_to_protocol(data):
    """Validate that a specified IP protocol is valid.

    For the authoritative list mapping protocol names to numbers, see the IANA:
    http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

    :param data: The value to verify is an IP protocol.
    :returns: If data is an int between 0 and 255 or None, return that; if
    data is a string then return it lower-cased if it matches one of the
    allowed protocol names.
    :raises exceptions.InvalidInput: If data is an int < 0, an
    int > 255, or a string that does not match one of the allowed protocol
    names.
    """

    if data is None:
        return
    val = convert_string_to_case_insensitive(data)
    if val in constants.IPTABLES_PROTOCOL_MAP:
        return data

    error_message = _("IP protocol '%s' is not supported. Only protocol "
                      "names and their integer representation (0 to "
                      "255) are supported") % data
    try:
        if validators.validate_range(convert_to_int(data), [0, 255]) is None:
            return data
        else:
            raise n_exc.InvalidInput(error_message=error_message)
    except n_exc.InvalidInput:
        raise n_exc.InvalidInput(error_message=error_message)
Exemplo n.º 2
0
def _validate_port_or_none(data, valid_values=None):
    if data is None:
        return None
    return validators.validate_range(data, [0, 65535])
Exemplo n.º 3
0
    def test_validate_range(self):
        msg = validators.validate_range(1, [1, 9])
        self.assertIsNone(msg)

        msg = validators.validate_range(5, [1, 9])
        self.assertIsNone(msg)

        msg = validators.validate_range(9, [1, 9])
        self.assertIsNone(msg)

        msg = validators.validate_range(1, (1, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(5, (1, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(9, (1, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(0, [1, 9])
        self.assertEqual("'0' is too small - must be at least '1'", msg)

        msg = validators.validate_range(10, (1, 9))
        self.assertEqual("'10' is too large - must be no larger than '9'", msg)

        msg = validators.validate_range("bogus", (1, 9))
        self.assertEqual("'bogus' is not an integer", msg)

        msg = validators.validate_range(
            10, (validators.UNLIMITED, validators.UNLIMITED))
        self.assertIsNone(msg)

        msg = validators.validate_range(10, (1, validators.UNLIMITED))
        self.assertIsNone(msg)

        msg = validators.validate_range(1, (validators.UNLIMITED, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(-1, (0, validators.UNLIMITED))
        self.assertEqual("'-1' is too small - must be at least '0'", msg)

        msg = validators.validate_range(10, (validators.UNLIMITED, 9))
        self.assertEqual("'10' is too large - must be no larger than '9'", msg)
Exemplo n.º 4
0
    def test_validate_range(self):
        msg = validators.validate_range(1, [1, 9])
        self.assertIsNone(msg)

        msg = validators.validate_range(5, [1, 9])
        self.assertIsNone(msg)

        msg = validators.validate_range(9, [1, 9])
        self.assertIsNone(msg)

        msg = validators.validate_range(1, (1, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(5, (1, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(9, (1, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(0, [1, 9])
        self.assertEqual("'0' is too small - must be at least '1'", msg)

        msg = validators.validate_range(10, (1, 9))
        self.assertEqual("'10' is too large - must be no larger than '9'", msg)

        msg = validators.validate_range("bogus", (1, 9))
        self.assertEqual("'bogus' is not an integer", msg)

        msg = validators.validate_range(10, (validators.UNLIMITED,
                                             validators.UNLIMITED))
        self.assertIsNone(msg)

        msg = validators.validate_range(10, (1, validators.UNLIMITED))
        self.assertIsNone(msg)

        msg = validators.validate_range(1, (validators.UNLIMITED, 9))
        self.assertIsNone(msg)

        msg = validators.validate_range(-1, (0, validators.UNLIMITED))
        self.assertEqual("'-1' is too small - must be at least '0'", msg)

        msg = validators.validate_range(10, (validators.UNLIMITED, 9))
        self.assertEqual("'10' is too large - must be no larger than '9'", msg)