def test_non_dict(self): errors = validation.check_static_ip_pool_collision(None, {}) self.assertEqual(len(errors), 1) self.assertEqual('The static IPs input must be a dictionary.', errors[0]) errors = validation.check_static_ip_pool_collision({}, None) self.assertEqual(len(errors), 1) self.assertEqual('The Pools input must be a dictionary.', errors[0])
def _test_pool_invalid_range(self, addr_range): static_ips = {} pools = {'TestAllocationPools': [addr_range]} errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual(len(errors), 1) self.assertEqual( 'Invalid format of the IP range in' ' TestAllocationPools: {}'.format(addr_range), errors[0])
def _test_pool_invalid_range(self, addr_range): static_ips = {} pools = {'TestAllocationPools': [addr_range]} errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual(len(errors), 1) self.assertEqual('Invalid format of the IP range in' ' TestAllocationPools: {}'.format(addr_range), errors[0])
def test_pool_with_correct_range(self): static_ips = {} pools = { 'StorageAllocationPools': [ {'start': '172.18.0.10', 'end': '172.18.0.200'} ] } errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual([], errors)
def test_static_ips_not_lists(self): static_ips = { 'ComputeIPs': { 'internal_api': None } } errors = validation.check_static_ip_pool_collision(static_ips, {}) self.assertEqual(len(errors), 1) self.assertEqual('The ComputeIPs->internal_api must be an array.', errors[0])
def test_pool_with_correct_range(self): static_ips = {} pools = { 'StorageAllocationPools': [{ 'start': '172.18.0.10', 'end': '172.18.0.200' }] } errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual([], errors)
def test_static_ips_not_parseable(self): static_ips = { 'ComputeIPs': { 'internal_api': ['nonsense', None, '270.0.0.1'], } } pools = {} errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual(len(errors), 3) self.assertIn('nonsense is not a valid IP address', errors[0]) self.assertIn('None is not a valid IP address', errors[1]) self.assertIn('270.0.0.1 is not a valid IP address', errors[2])
def test_static_ip_collide_with_pool(self): static_ips = { 'ControllerIps': { 'internal_api': ['10.35.191.150', '10.35.191.60'] } } pools = { 'InternalApiAllocationPools': [ {'start': '10.35.191.150', 'end': '10.35.191.240'} ] } errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual(len(errors), 1) self.assertEqual('IP address 10.35.191.150 from ' 'ControllerIps[internal_api] is in the ' 'InternalApiAllocationPools pool.', errors[0])
def test_static_ip_collide_with_pool(self): static_ips = { 'ControllerIps': { 'internal_api': ['10.35.191.150', '10.35.191.60'] } } pools = { 'InternalApiAllocationPools': [{ 'start': '10.35.191.150', 'end': '10.35.191.240' }] } errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual(len(errors), 1) self.assertEqual( 'IP address 10.35.191.150 from ' 'ControllerIps[internal_api] is in the ' 'InternalApiAllocationPools pool.', errors[0])
def test_static_ip_no_collisions(self): static_ips = { 'ControllerIps': { 'internal_api': ['10.35.191.50', '10.35.191.60'], 'storage': ['192.168.100.20', '192.168.100.30'], }, 'ComputeIps': { 'internal_api': ['10.35.191.100', '10.35.191.110'], 'storage': ['192.168.100.45', '192.168.100.46'] } } pools = { 'InternalApiAllocationPools': [ {'start': '10.35.191.150', 'end': '10.35.191.240'} ] } errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual([], errors)
def test_static_ip_no_collisions(self): static_ips = { 'ControllerIps': { 'internal_api': ['10.35.191.50', '10.35.191.60'], 'storage': ['192.168.100.20', '192.168.100.30'], }, 'ComputeIps': { 'internal_api': ['10.35.191.100', '10.35.191.110'], 'storage': ['192.168.100.45', '192.168.100.46'] } } pools = { 'InternalApiAllocationPools': [{ 'start': '10.35.191.150', 'end': '10.35.191.240' }] } errors = validation.check_static_ip_pool_collision(static_ips, pools) self.assertEqual([], errors)
def test_static_ips_not_lists(self): static_ips = {'ComputeIPs': {'internal_api': None}} errors = validation.check_static_ip_pool_collision(static_ips, {}) self.assertEqual(len(errors), 1) self.assertEqual('The ComputeIPs->internal_api must be an array.', errors[0])
def test_static_ip_service_not_dict(self): static_ips = {'ComputeIPs': None} errors = validation.check_static_ip_pool_collision(static_ips, {}) self.assertEqual(len(errors), 1) self.assertEqual('The ComputeIPs must be a dictionary.', errors[0])
def test_pool_range_not_list(self): pools = {'TestPools': None} errors = validation.check_static_ip_pool_collision({}, pools) self.assertEqual(len(errors), 1) self.assertEqual('The IP ranges in TestPools must form a list.', errors[0])
def test_empty(self): errors = validation.check_static_ip_pool_collision({}, {}) self.assertEqual([], errors)