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_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_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_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)
 def test_empty(self):
     errors = validation.check_static_ip_pool_collision({}, {})
     self.assertEqual([], errors)