def test_range(self): self.assertTrue(validate.is_integer(5, 5, 5)) self.assertTrue(validate.is_integer(5, 4, 6)) self.assertTrue(validate.is_integer("5", 5, 5)) self.assertTrue(validate.is_integer("5", 4, 6)) self.assertFalse(validate.is_integer(3, 4, 6)) self.assertFalse(validate.is_integer(7, 4, 6)) self.assertFalse(validate.is_integer("3", 4, 6)) self.assertFalse(validate.is_integer("7", 4, 6))
def test_range(self): self.assertTrue(validate.is_integer(5, 5, 5)) self.assertTrue(validate.is_integer(5, 4, 6)) self.assertTrue(validate.is_integer("5", 5, 5)) self.assertTrue(validate.is_integer("5", 4, 6)) self.assertFalse(validate.is_integer(3, 4, 6)) self.assertFalse(validate.is_integer(7, 4, 6)) self.assertFalse(validate.is_integer("3", 4, 6)) self.assertFalse(validate.is_integer("7", 4, 6))
def _value_host_netmask(option_name, force_options): return validate.value_cond( option_name, lambda value: validate.is_integer(value, 1, 32), "a number of bits of the mask (1-32)", # Leaving a possibility to force this validation, if pacemaker # starts supporting IPv6 or other format of the netmask code_to_allow_extra_values=report_codes.FORCE_OPTIONS, allow_extra_values=force_options)
def test_at_most(self): self.assertTrue(validate.is_integer(5, None, 5)) self.assertTrue(validate.is_integer(5, None, 6)) self.assertTrue(validate.is_integer("5", None, 5)) self.assertTrue(validate.is_integer("5", None, 6)) self.assertFalse(validate.is_integer(5, None, 4)) self.assertFalse(validate.is_integer("5", None, 4))
def test_at_least(self): self.assertTrue(validate.is_integer(5, 5)) self.assertTrue(validate.is_integer(5, 4)) self.assertTrue(validate.is_integer("5", 5)) self.assertTrue(validate.is_integer("5", 4)) self.assertFalse(validate.is_integer(5, 6)) self.assertFalse(validate.is_integer("5", 6))
def test_at_most(self): self.assertTrue(validate.is_integer(5, None, 5)) self.assertTrue(validate.is_integer(5, None, 6)) self.assertTrue(validate.is_integer("5", None, 5)) self.assertTrue(validate.is_integer("5", None, 6)) self.assertFalse(validate.is_integer(5, None, 4)) self.assertFalse(validate.is_integer("5", None, 4))
def test_at_least(self): self.assertTrue(validate.is_integer(5, 5)) self.assertTrue(validate.is_integer(5, 4)) self.assertTrue(validate.is_integer("5", 5)) self.assertTrue(validate.is_integer("5", 4)) self.assertFalse(validate.is_integer(5, 6)) self.assertFalse(validate.is_integer("5", 6))
def test_no_range(self): self.assertTrue(validate.is_integer(1)) self.assertTrue(validate.is_integer("1")) self.assertTrue(validate.is_integer(-1)) self.assertTrue(validate.is_integer("-1")) self.assertTrue(validate.is_integer(+1)) self.assertTrue(validate.is_integer("+1")) self.assertFalse(validate.is_integer(" 1")) self.assertFalse(validate.is_integer("\n-1")) self.assertFalse(validate.is_integer("\r+1")) self.assertFalse(validate.is_integer("1\n")) self.assertFalse(validate.is_integer("-1 ")) self.assertFalse(validate.is_integer("+1\r")) self.assertFalse(validate.is_integer("")) self.assertFalse(validate.is_integer("1a")) self.assertFalse(validate.is_integer("a1")) self.assertFalse(validate.is_integer("aaa")) self.assertFalse(validate.is_integer(1.0)) self.assertFalse(validate.is_integer("1.0"))
def _is_valid(self, value): return validate.is_integer(value, 1, 32)
def test_no_range(self): self.assertTrue(validate.is_integer(1)) self.assertTrue(validate.is_integer("1")) self.assertTrue(validate.is_integer(-1)) self.assertTrue(validate.is_integer("-1")) self.assertTrue(validate.is_integer(+1)) self.assertTrue(validate.is_integer("+1")) self.assertTrue(validate.is_integer(" 1")) self.assertTrue(validate.is_integer("-1 ")) self.assertTrue(validate.is_integer("+1 ")) self.assertFalse(validate.is_integer("")) self.assertFalse(validate.is_integer("1a")) self.assertFalse(validate.is_integer("a1")) self.assertFalse(validate.is_integer("aaa")) self.assertFalse(validate.is_integer(1.0)) self.assertFalse(validate.is_integer("1.0"))
def create_link_list_knet(link_list, max_allowed_link_count): """ Validate creating knet link (interface) list options iterable link_list -- list of link options integer max_allowed_link_count -- how many links is defined by addresses """ if not link_list: # It is not mandatory to set link options. If an empty link list is # provided, everything is fine and we have nothing to validate. It is # also possible to set link options for only some of the links. return [] allowed_options = [ "linknumber", "link_priority", "mcastport", "ping_interval", "ping_precision", "ping_timeout", "pong_count", "transport", ] validators = [ validate.value_integer_in_range("link_priority", 0, 255), validate.value_port_number("mcastport"), validate.value_nonnegative_integer("ping_interval"), validate.value_nonnegative_integer("ping_precision"), validate.value_nonnegative_integer("ping_timeout"), validate.depends_on_option("ping_interval", "ping_timeout", option_type="link", prerequisite_type="link"), validate.depends_on_option("ping_timeout", "ping_interval", option_type="link", prerequisite_type="link"), validate.value_nonnegative_integer("pong_count"), validate.value_in("transport", ("sctp", "udp")), ] report_items = [] used_link_number = defaultdict(int) for options in link_list: if "linknumber" in options: used_link_number[options["linknumber"]] += 1 if validate.is_integer(options["linknumber"], 0, constants.LINKS_KNET_MAX - 1): if int(options["linknumber"]) >= max_allowed_link_count: # first link is link0, hence >= report_items.append( reports.corosync_link_does_not_exist_cannot_update( options["linknumber"], link_count=max_allowed_link_count)) else: report_items.append( reports.invalid_option_value( "linknumber", options["linknumber"], f"0..{constants.LINKS_KNET_MAX - 1}")) report_items += ( validate.run_collection_of_option_validators(options, validators) + validate.names_in(allowed_options, options.keys(), "link")) non_unique_linknumbers = [ number for number, count in used_link_number.items() if count > 1 ] if non_unique_linknumbers: report_items.append( reports.corosync_link_number_duplication(non_unique_linknumbers)) report_items.extend( _check_link_options_count(len(link_list), max_allowed_link_count)) return report_items