Ejemplo n.º 1
0
 def test_validate_cidrs_too_many(self):
     manager = fake_network.FakeNetworkManager()
     args = (None, 'fake', '192.168.0.0/24', False, 200, 256, None, None,
             None, None, None)
     # ValueError: Not enough subnets avail to satisfy requested
     #             num_networks
     self.assertRaises(ValueError, manager.create_networks, *args)
Ejemplo n.º 2
0
 def test_validate_cidrs(self):
     manager = fake_network.FakeNetworkManager()
     nets = manager.create_networks(None, 'fake', '192.168.0.0/24', False,
                                    1, 256, None, None, None, None, None)
     self.assertEqual(1, len(nets))
     cidrs = [str(net['cidr']) for net in nets]
     self.assertTrue('192.168.0.0/24' in cidrs)
Ejemplo n.º 3
0
 def test_create_networks(self):
     cidr = '192.168.0.0/24'
     manager = fake_network.FakeNetworkManager()
     self.stubs.Set(manager, '_create_fixed_ips',
                    self.fake_create_fixed_ips)
     args = [None, 'foo', cidr, None, 1, 256, 'fd00::/48', None, None, None]
     self.assertTrue(manager.create_networks(*args))
Ejemplo n.º 4
0
 def test_validate_cidrs_split_partial(self):
     manager = fake_network.FakeNetworkManager()
     nets = manager.create_networks(None, 'fake', '192.168.0.0/16', False,
                                    2, 256, None, None, None, None, None)
     returned_cidrs = [str(net['cidr']) for net in nets]
     self.assertTrue('192.168.0.0/24' in returned_cidrs)
     self.assertTrue('192.168.1.0/24' in returned_cidrs)
Ejemplo n.º 5
0
    def test_get_instance_uuids_by_ip(self):
        manager = fake_network.FakeNetworkManager()
        _vifs = manager.db.virtual_interface_get_all(None)
        fake_context = context.RequestContext('user', 'project')

        # No regex for you!
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'fixed_ip': '.*'})
        self.assertFalse(res)

        # Doesn't exist
        ip = '10.0.0.1'
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'fixed_ip': ip})
        self.assertFalse(res)

        # Get instance 1
        ip = '172.16.0.2'
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'fixed_ip': ip})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 2
        ip = '173.16.0.2'
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'fixed_ip': ip})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id'])
Ejemplo n.º 6
0
 def test_validate_cidrs_split_exact_in_half(self):
     manager = fake_network.FakeNetworkManager()
     nets = manager.create_networks(None, 'fake', '192.168.0.0/24', False,
                                    2, 128, None, None, None, None, None)
     self.assertEqual(2, len(nets))
     cidrs = [str(net['cidr']) for net in nets]
     self.assertTrue('192.168.0.0/25' in cidrs)
     self.assertTrue('192.168.0.128/25' in cidrs)
Ejemplo n.º 7
0
    def setUp(self):
        super(MetadataTestCase, self).setUp()
        self.instance = ({
            'id': 1,
            'name': 'fake',
            'project_id': 'test',
            'key_name': None,
            'host': 'test',
            'launch_index': 1,
            'instance_type': {
                'name': 'm1.tiny'
            },
            'reservation_id': 'r-xxxxxxxx',
            'user_data': '',
            'image_ref': 7,
            'vcpus': 1,
            'fixed_ips': [],
            'root_device_name': '/dev/sda1',
            'hostname': 'test'
        })

        def fake_get_instance_nw_info(self, context, instance):
            return [(None, {
                'label': 'public',
                'ips': [{
                    'ip': '192.168.0.3'
                }, {
                    'ip': '192.168.0.4'
                }],
                'ip6s': [{
                    'ip': 'fe80::beef'
                }]
            })]

        def fake_get_floating_ips_by_fixed_address(self, context, fixed_ip):
            return ['1.2.3.4', '5.6.7.8']

        def instance_get(*args, **kwargs):
            return self.instance

        def instance_get_list(*args, **kwargs):
            return [self.instance]

        def floating_get(*args, **kwargs):
            return '99.99.99.99'

        self.stubs.Set(network.API, 'get_instance_nw_info',
                       fake_get_instance_nw_info)
        self.stubs.Set(network.API, 'get_floating_ips_by_fixed_address',
                       fake_get_floating_ips_by_fixed_address)
        self.stubs.Set(api, 'instance_get', instance_get)
        self.stubs.Set(api, 'instance_get_all_by_filters', instance_get_list)
        self.stubs.Set(api, 'instance_get_floating_address', floating_get)
        self.app = handler.MetadataRequestHandler()
        network_manager = fake_network.FakeNetworkManager()
        self.stubs.Set(self.app.compute_api.network_api,
                       'get_instance_uuids_by_ip_filter',
                       network_manager.get_instance_uuids_by_ip_filter)
Ejemplo n.º 8
0
 def test_validate_cidrs_conflict_existing_supernet(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     fakecidr = [{'id': 1, 'cidr': '192.168.0.0/8'}]
     manager.db.network_get_all(ctxt).AndReturn(fakecidr)
     self.mox.ReplayAll()
     args = (None, 'fake', '192.168.0.0/24', False, 1, 256, None, None,
             None, None, None)
     # ValueError: requested cidr (192.168.0.0/24) conflicts
     #             with existing supernet
     self.assertRaises(ValueError, manager.create_networks, *args)
Ejemplo n.º 9
0
 def test_create_networks_cidr_already_used(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     fakecidr = [{'id': 1, 'cidr': '192.168.0.0/24'}]
     manager.db.network_get_all(ctxt).AndReturn(fakecidr)
     self.mox.ReplayAll()
     args = [
         None, 'foo', '192.168.0.0/24', None, 1, 256, 'fd00::/48', None,
         None, None, None, None
     ]
     self.assertRaises(ValueError, manager.create_networks, *args)
Ejemplo n.º 10
0
 def test_validate_cidrs_already_used(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     manager.db.network_get_all(ctxt).AndReturn([{
         'id': 1,
         'cidr': '192.168.0.0/24'
     }])
     self.mox.ReplayAll()
     # ValueError: cidr already in use
     args = (None, 'fake', '192.168.0.0/24', False, 1, 256, None, None,
             None, None, None)
     self.assertRaises(ValueError, manager.create_networks, *args)
Ejemplo n.º 11
0
 def test_validate_cidrs_smaller_subnet_in_use(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     manager.db.network_get_all(ctxt).AndReturn([{
         'id': 1,
         'cidr': '192.168.2.9/25'
     }])
     self.mox.ReplayAll()
     # ValueError: requested cidr (192.168.2.0/24) conflicts with
     #             existing smaller cidr
     args = (None, 'fake', '192.168.2.0/24', False, 1, 256, None, None,
             None, None, None)
     self.assertRaises(ValueError, manager.create_networks, *args)
Ejemplo n.º 12
0
    def setUp(self):
        super(MetadataTestCase, self).setUp()
        self.instance = ({
            'id': 1,
            'uuid': 'b65cee2f-8c69-4aeb-be2f-f79742548fc2',
            'name': 'fake',
            'project_id': 'test',
            'key_name': None,
            'host': 'test',
            'launch_index': 1,
            'instance_type': {
                'name': 'm1.tiny'
            },
            'reservation_id': 'r-xxxxxxxx',
            'user_data': '',
            'image_ref': 7,
            'vcpus': 1,
            'fixed_ips': [],
            'root_device_name': '/dev/sda1',
            'info_cache': {
                'network_info': []
            },
            'hostname': 'test'
        })

        def fake_get_floating_ips_by_fixed_address(self, context, fixed_ip):
            return ['1.2.3.4', '5.6.7.8']

        def instance_get(*args, **kwargs):
            return self.instance

        def instance_get_list(*args, **kwargs):
            return [self.instance]

        def get_fixed_ip_by_address(*args, **kwargs):
            return {'instance_id': self.instance['id']}

        fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs,
                                                          spectacular=True)
        self.stubs.Set(network.API, 'get_floating_ips_by_fixed_address',
                       fake_get_floating_ips_by_fixed_address)
        self.stubs.Set(network.API, 'get_fixed_ip_by_address',
                       get_fixed_ip_by_address)
        self.stubs.Set(api, 'instance_get', instance_get)
        self.stubs.Set(api, 'instance_get_all_by_filters', instance_get_list)
        self.app = handler.MetadataRequestHandler()
        network_manager = fake_network.FakeNetworkManager()
        self.stubs.Set(self.app.compute_api.network_api,
                       'get_instance_uuids_by_ip_filter',
                       network_manager.get_instance_uuids_by_ip_filter)
Ejemplo n.º 13
0
 def test_validate_cidrs_split_smaller_cidr_in_use2(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     manager.db.network_get_all(ctxt).AndReturn([{
         'id': 1,
         'cidr': '192.168.2.9/29'
     }])
     self.mox.ReplayAll()
     nets = manager.create_networks(None, 'fake', '192.168.2.0/24', False,
                                    3, 32, None, None, None, None, None)
     self.assertEqual(3, len(nets))
     cidrs = [str(net['cidr']) for net in nets]
     exp_cidrs = ['192.168.2.32/27', '192.168.2.64/27', '192.168.2.96/27']
     for exp_cidr in exp_cidrs:
         self.assertTrue(exp_cidr in cidrs)
     self.assertFalse('192.168.2.0/27' in cidrs)
Ejemplo n.º 14
0
    def test_get_instance_uuids_by_ipv6_regex(self):
        manager = fake_network.FakeNetworkManager()
        _vifs = manager.db.virtual_interface_get_all(None)
        fake_context = context.RequestContext('user', 'project')

        # Greedy get eveything
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip6': '.*'})
        self.assertEqual(len(res), len(_vifs))

        # Doesn't exist
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip6': '.*1034.*'})
        self.assertFalse(res)

        # Get instance 1
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip6': '2001:.*2'})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 2
        ip6 = '2001:db8:69:1f:dead:beff:feff:ef03'
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip6': ip6})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id'])

        # Get instance 0 and 1
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip6': '.*ef0[1,2]'})
        self.assertTrue(res)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id'])
        self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 1 and 2
        ip6 = '2001:db8:69:1.:dead:beff:feff:ef0.'
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip6': ip6})
        self.assertTrue(res)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])
        self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id'])
Ejemplo n.º 15
0
    def test_get_instance_uuids_by_ip_regex(self):
        manager = fake_network.FakeNetworkManager()
        _vifs = manager.db.virtual_interface_get_all(None)
        fake_context = context.RequestContext('user', 'project')

        # Greedy get eveything
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip': '.*'})
        self.assertEqual(len(res), len(_vifs))

        # Doesn't exist
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip': '10.0.0.1'})
        self.assertFalse(res)

        # Get instance 1
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip': '172.16.0.2'})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 2
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip': '173.16.0.2'})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id'])

        # Get instance 0 and 1
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip': '172.16.0.*'})
        self.assertTrue(res)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id'])
        self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 1 and 2
        res = manager.get_instance_uuids_by_ip_filter(fake_context,
                                                      {'ip': '17..16.0.2'})
        self.assertTrue(res)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])
        self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id'])
Ejemplo n.º 16
0
 def test_validate_cidrs_split_cidr_in_use_middle_of_range(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     manager.db.network_get_all(ctxt).AndReturn([{
         'id': 1,
         'cidr': '192.168.2.0/24'
     }])
     self.mox.ReplayAll()
     nets = manager.create_networks(None, 'fake', '192.168.0.0/16', False,
                                    4, 256, None, None, None, None, None)
     self.assertEqual(4, len(nets))
     cidrs = [str(net['cidr']) for net in nets]
     exp_cidrs = [
         '192.168.0.0/24', '192.168.1.0/24', '192.168.3.0/24',
         '192.168.4.0/24'
     ]
     for exp_cidr in exp_cidrs:
         self.assertTrue(exp_cidr in cidrs)
     self.assertFalse('192.168.2.0/24' in cidrs)
Ejemplo n.º 17
0
    def test_get_instance_uuids_by_ipv6_regex(self):
        manager = fake_network.FakeNetworkManager()
        _vifs = manager.db.virtual_interface_get_all(None)

        # Greedy get eveything
        res = manager.get_instance_uuids_by_ip_filter(None, {'ip6': '.*'})
        self.assertEqual(len(res), len(_vifs))

        # Doesn't exist
        res = manager.get_instance_uuids_by_ip_filter(None,
                                                      {'ip6': '.*1034.*'})
        self.assertFalse(res)

        # Get instance 1
        res = manager.get_instance_uuids_by_ip_filter(None,
                                                      {'ip6': '2001:.*:2'})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 2
        ip6 = '2002:db8::dcad:beff:feef:2'
        res = manager.get_instance_uuids_by_ip_filter(None, {'ip6': ip6})
        self.assertTrue(res)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id'])

        # Get instance 0 and 1
        res = manager.get_instance_uuids_by_ip_filter(None, {'ip6': '2001:.*'})
        self.assertTrue(res)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id'])
        self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id'])

        # Get instance 1 and 2
        ip6 = '200.:db8::dcad:beff:feef:2'
        res = manager.get_instance_uuids_by_ip_filter(None, {'ip6': ip6})
        self.assertTrue(res)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id'])
        self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id'])
Ejemplo n.º 18
0
 def test_validate_cidrs_split_all_in_use(self):
     manager = fake_network.FakeNetworkManager()
     self.mox.StubOutWithMock(manager.db, 'network_get_all')
     ctxt = mox.IgnoreArg()
     in_use = [{
         'id': 1,
         'cidr': '192.168.2.9/29'
     }, {
         'id': 2,
         'cidr': '192.168.2.64/26'
     }, {
         'id': 3,
         'cidr': '192.168.2.128/26'
     }]
     manager.db.network_get_all(ctxt).AndReturn(in_use)
     self.mox.ReplayAll()
     args = (None, 'fake', '192.168.2.0/24', False, 3, 64, None, None, None,
             None, None)
     # ValueError: Not enough subnets avail to satisfy requested num_
     #             networks - some subnets in requested range already
     #             in use
     self.assertRaises(ValueError, manager.create_networks, *args)
Ejemplo n.º 19
0
    def setUp(self):
        super(MetadataTestCase, self).setUp()
        self.instance = ({
            'id': 1,
            'project_id': 'test',
            'key_name': None,
            'host': 'test',
            'launch_index': 1,
            'instance_type': {
                'name': 'm1.tiny'
            },
            'reservation_id': 'r-xxxxxxxx',
            'user_data': '',
            'image_ref': 7,
            'fixed_ips': [],
            'root_device_name': '/dev/sda1',
            'hostname': 'test'
        })

        def instance_get(*args, **kwargs):
            return self.instance

        def instance_get_list(*args, **kwargs):
            return [self.instance]

        def floating_get(*args, **kwargs):
            return '99.99.99.99'

        self.stubs.Set(api, 'instance_get', instance_get)
        self.stubs.Set(api, 'instance_get_all_by_filters', instance_get_list)
        self.stubs.Set(api, 'instance_get_floating_address', floating_get)
        self.app = metadatarequesthandler.MetadataRequestHandler()
        network_manager = fake_network.FakeNetworkManager()
        self.stubs.Set(self.app.cc.network_api,
                       'get_instance_uuids_by_ip_filter',
                       network_manager.get_instance_uuids_by_ip_filter)
Ejemplo n.º 20
0
    def test_remove_fixed_ip_from_instance(self):
        manager = fake_network.FakeNetworkManager()
        manager.remove_fixed_ip_from_instance(None, 99, '10.0.0.1')

        self.assertEquals(manager.deallocate_called, '10.0.0.1')
Ejemplo n.º 21
0
 def test_remove_fixed_ip_from_instance_bad_input(self):
     manager = fake_network.FakeNetworkManager()
     self.assertRaises(exception.FixedIpNotFoundForSpecificInstance,
                       manager.remove_fixed_ip_from_instance, None, 99,
                       'bad input')
Ejemplo n.º 22
0
 def test_validate_cidrs_one_in_use(self):
     manager = fake_network.FakeNetworkManager()
     args = (None, 'fake', '192.168.0.0/24', False, 2, 256, None, None,
             None, None, None)
     # ValueError: network_size * num_networks exceeds cidr size
     self.assertRaises(ValueError, manager.create_networks, *args)