예제 #1
0
    def test_get_service_port(self):
        fake_service_port = fake_network.FakePort(device_id='manila-share')
        fake_service_net = fake_network.FakeNetwork(subnets=[])
        self.stubs.Set(self._manager.neutron_api, 'list_ports',
                       mock.Mock(return_value=[]))
        self.stubs.Set(self._manager, '_execute',
                       mock.Mock(return_value=('fake_host', '')))
        self.stubs.Set(self._manager.neutron_api, 'create_port',
                       mock.Mock(return_value=fake_service_port))
        self.stubs.Set(self._manager.neutron_api, 'get_network',
                       mock.Mock(return_value=fake_service_net))
        self.stubs.Set(self._manager.neutron_api, 'update_port_fixed_ips',
                       mock.Mock(return_value=fake_service_port))

        result = self._manager._get_service_port()

        self._manager.neutron_api.list_ports.assert_called_once_with(
            device_id='manila-share')
        self._manager.db.service_get_all_by_topic.assert_called_once()
        self._manager.neutron_api.create_port.assert_called_once_with(
            self._manager.service_tenant_id,
            self._manager.service_network_id,
            device_id='manila-share',
            device_owner='manila:share',
            host_id='fake_host')
        self._manager.neutron_api.get_network.assert_called_once()
        self.assertFalse(
            self._manager.neutron_api.update_port_fixed_ips.called)
        self.assertEqual(result, fake_service_port)
예제 #2
0
    def test_get_service_port_exists(self):
        fake_service_port = fake_network.FakePort(device_id='manila-share')
        fake_service_net = fake_network.FakeNetwork(subnets=[])
        self.stubs.Set(self._manager.neutron_api, 'list_ports',
                       mock.Mock(return_value=[fake_service_port]))
        self.stubs.Set(self._manager.db, 'service_get_all_by_topic',
                       mock.Mock(return_value=[{
                           'host': 'fake_host'
                       }]))
        self.stubs.Set(self._manager.neutron_api, 'create_port',
                       mock.Mock(return_value=fake_service_port))
        self.stubs.Set(self._manager.neutron_api, 'get_network',
                       mock.Mock(return_value=fake_service_net))
        self.stubs.Set(self._manager.neutron_api, 'update_port_fixed_ips',
                       mock.Mock(return_value=fake_service_port))

        result = self._manager._get_service_port()

        self._manager.neutron_api.list_ports.assert_called_once_with(
            device_id='manila-share')
        self.assertFalse(self._manager.db.service_get_all_by_topic.called)
        self.assertFalse(self._manager.neutron_api.create_port.called)
        self._manager.neutron_api.get_network.assert_called_once()
        self.assertFalse(
            self._manager.neutron_api.update_port_fixed_ips.called)
        self.assertEqual(result, fake_service_port)
예제 #3
0
    def test_get_private_router(self):
        fake_net = fake_network.FakeNetwork()
        fake_subnet = fake_network.FakeSubnet(gateway_ip='fake_ip')
        fake_share_network = {
            'neutron_net_id': fake_net['id'],
            'neutron_subnet_id': fake_subnet['id']
        }
        self.stubs.Set(self._manager.db, 'share_network_get',
                       mock.Mock(return_value=fake_share_network))
        fake_port = fake_network.FakePort(fixed_ips=[{
            'subnet_id':
            fake_subnet['id'],
            'ip_address':
            fake_subnet['gateway_ip']
        }],
                                          device_id='fake_router_id')
        fake_router = fake_network.FakeRouter(id='fake_router_id')
        self.stubs.Set(self._manager.neutron_api, 'get_subnet',
                       mock.Mock(return_value=fake_subnet))
        self.stubs.Set(self._manager.neutron_api, 'list_ports',
                       mock.Mock(return_value=[fake_port]))
        self.stubs.Set(self._manager.neutron_api, 'show_router',
                       mock.Mock(return_value=fake_router))

        result = self._manager._get_private_router(fake_net['id'],
                                                   fake_subnet['id'])

        self._manager.neutron_api.get_subnet.assert_called_once_with(
            fake_subnet['id'])
        self._manager.neutron_api.list_ports.assert_called_once_with(
            network_id=fake_net['id'])
        self._manager.neutron_api.show_router.assert_called_once_with(
            fake_router['id'])
        self.assertEqual(result, fake_router)
예제 #4
0
 def test_get_service_network_net_does_not_exists(self):
     net = fake_network.FakeNetwork()
     self.stubs.Set(self._manager.neutron_api, 'get_all_tenant_networks',
                    mock.Mock(return_value=[]))
     self.stubs.Set(self._manager.neutron_api, 'network_create',
                    mock.Mock(return_value=net))
     result = self._manager._get_service_network()
     self.assertEqual(result, net['id'])
예제 #5
0
    def test_setup_network_for_instance1(self):
        fake_service_net = fake_network.FakeNetwork(subnets=[])
        fake_service_subnet = fake_network. \
            FakeSubnet(name=self.share['share_network_id'])
        fake_router = fake_network.FakeRouter()
        fake_ports = [
            fake_network.FakePort(fixed_ips=[{
                'ip_address': '1.2.3.4'
            }]),
            fake_network.FakePort(fixed_ips=[{
                'ip_address': '5.6.7.8'
            }]),
        ]
        self.stubs.Set(self._manager, 'connect_share_server_to_tenant_network',
                       True)
        self.stubs.Set(self._manager.neutron_api, 'get_network',
                       mock.Mock(return_value=fake_service_net))
        self.stubs.Set(self._manager.neutron_api, 'subnet_create',
                       mock.Mock(return_value=fake_service_subnet))
        self.stubs.Set(self._manager, '_get_private_router',
                       mock.Mock(return_value=fake_router))
        self.stubs.Set(self._manager.neutron_api, 'router_add_interface',
                       mock.Mock())
        self.stubs.Set(self._manager.neutron_api, 'create_port',
                       mock.Mock(side_effect=fake_ports))
        self.stubs.Set(self._manager, '_get_cidr_for_subnet',
                       mock.Mock(return_value='fake_cidr'))

        network_data = self._manager._setup_network_for_instance(
            'fake-net', 'fake-subnet')

        self._manager.neutron_api.get_network. \
            assert_called_once_with(self._manager.service_network_id)
        self._manager._get_private_router. \
            assert_called_once_with('fake-net', 'fake-subnet')
        self._manager.neutron_api.router_add_interface. \
            assert_called_once_with('fake_router_id', 'fake_subnet_id')
        self._manager.neutron_api.subnet_create.assert_called_once_with(
            self._manager.service_tenant_id, self._manager.service_network_id,
            'routed_to_fake-subnet', 'fake_cidr')
        self.assertEqual(self._manager.neutron_api.create_port.call_args_list,
                         [((self._manager.service_tenant_id,
                            self._manager.service_network_id), {
                                'subnet_id': 'fake_subnet_id',
                                'device_owner': 'manila'
                            }),
                          ((self._manager.service_tenant_id, 'fake-net'), {
                              'subnet_id': 'fake-subnet',
                              'device_owner': 'manila'
                          })])
        self._manager._get_cidr_for_subnet.assert_called_once_with()

        self.assertIs(network_data.get('service_subnet'), fake_service_subnet)
        self.assertIs(network_data.get('router'), fake_router)
        self.assertIs(network_data.get('service_port'), fake_ports[0])
        self.assertIs(network_data.get('public_port'), fake_ports[1])
        self.assertEqual(network_data.get('ports'), fake_ports)
예제 #6
0
    def test_get_private_router_exception(self):
        fake_net = fake_network.FakeNetwork()
        fake_subnet = fake_network.FakeSubnet(gateway_ip='fake_ip')
        fake_share_network = {
            'neutron_net_id': fake_net['id'],
            'neutron_subnet_id': fake_subnet['id']
        }
        self.stubs.Set(self._manager.db, 'share_network_get',
                       mock.Mock(return_value=fake_share_network))
        self.stubs.Set(self._manager.neutron_api, 'get_subnet',
                       mock.Mock(return_value=fake_subnet))
        self.stubs.Set(self._manager.neutron_api, 'list_ports',
                       mock.Mock(return_value=[]))

        self.assertRaises(exception.ManilaException,
                          self._manager._get_private_router, fake_net['id'],
                          fake_subnet['id'])
예제 #7
0
    def test_setup_network_for_instance0(self):
        fake_service_net = fake_network.FakeNetwork(subnets=[])
        fake_service_subnet = fake_network.\
            FakeSubnet(name=self.share['share_network_id'])
        fake_router = fake_network.FakeRouter()
        fake_port = fake_network.FakePort()
        self.stubs.Set(self._manager, 'connect_share_server_to_tenant_network',
                       False)
        self.stubs.Set(self._manager.neutron_api, 'get_network',
                       mock.Mock(return_value=fake_service_net))
        self.stubs.Set(self._manager.neutron_api, 'subnet_create',
                       mock.Mock(return_value=fake_service_subnet))
        self.stubs.Set(self._manager.db, 'share_network_get',
                       mock.Mock(return_value='fake_share_network'))
        self.stubs.Set(self._manager, '_get_private_router',
                       mock.Mock(return_value=fake_router))
        self.stubs.Set(self._manager.neutron_api, 'router_add_interface',
                       mock.Mock())
        self.stubs.Set(self._manager.neutron_api, 'create_port',
                       mock.Mock(return_value=fake_port))
        self.stubs.Set(self._manager, '_get_cidr_for_subnet',
                       mock.Mock(return_value='fake_cidr'))

        network_data = self._manager._setup_network_for_instance(
            'fake-net', 'fake-subnet')

        self._manager.neutron_api.get_network.assert_called_once_with(
            self._manager.service_network_id)
        self._manager._get_private_router.assert_called_once_with(
            'fake-net', 'fake-subnet')
        self._manager.neutron_api.router_add_interface.assert_called_once_with(
            'fake_router_id', 'fake_subnet_id')
        self._manager.neutron_api.subnet_create.assert_called_once_with(
            self._manager.service_tenant_id, self._manager.service_network_id,
            'routed_to_fake-subnet', 'fake_cidr')
        self._manager.neutron_api.create_port.assert_called_once_with(
            self._manager.service_tenant_id,
            self._manager.service_network_id,
            subnet_id='fake_subnet_id',
            device_owner='manila')
        self._manager._get_cidr_for_subnet.assert_called_once()
        self.assertIs(network_data.get('service_subnet'), fake_service_subnet)
        self.assertIs(network_data.get('router'), fake_router)
        self.assertIs(network_data.get('service_port'), fake_port)
        self.assertNotIn('public_port', network_data)
        self.assertEqual(network_data.get('ports'), [fake_port])
예제 #8
0
    def test_setup_network_for_instance(self):
        fake_service_net = fake_network.FakeNetwork(subnets=[])
        fake_service_subnet = fake_network.\
                FakeSubnet(name=self.share['share_network_id'])
        fake_router = fake_network.FakeRouter()
        fake_port = fake_network.FakePort()
        self.stubs.Set(self._manager.neutron_api, 'get_network',
                       mock.Mock(return_value=fake_service_net))
        self.stubs.Set(self._manager.neutron_api, 'subnet_create',
                       mock.Mock(return_value=fake_service_subnet))
        self.stubs.Set(self._manager.db, 'share_network_get',
                       mock.Mock(return_value='fake_share_network'))
        self.stubs.Set(self._manager, '_get_private_router',
                       mock.Mock(return_value=fake_router))
        self.stubs.Set(self._manager.neutron_api, 'router_add_interface',
                       mock.Mock())
        self.stubs.Set(self._manager.neutron_api, 'create_port',
                       mock.Mock(return_value=fake_port))
        self.stubs.Set(self._manager, '_get_cidr_for_subnet',
                       mock.Mock(return_value='fake_cidr'))

        result = self._manager._setup_network_for_instance(
            'fake-net', 'fake-subnet')

        self._manager.neutron_api.get_network.\
                assert_called_once_with(self._manager.service_network_id)
        self._manager._get_private_router.\
                assert_called_once_with('fake-net', 'fake-subnet')
        self._manager.neutron_api.router_add_interface.\
                assert_called_once_with('fake_router_id', 'fake_subnet_id')
        self._manager.neutron_api.subnet_create.assert_called_once_with(
            self._manager.service_tenant_id, self._manager.service_network_id,
            'routed_to_fake-subnet', 'fake_cidr')
        self._manager.neutron_api.create_port.assert_called_once_with(
            self._manager.service_tenant_id,
            self._manager.service_network_id,
            subnet_id='fake_subnet_id',
            device_owner='manila')
        self._manager._get_cidr_for_subnet.assert_called_once()
        self.assertEqual(result,
                         ('fake_subnet_id', 'fake_router_id', fake_port['id']))
예제 #9
0
 def test_get_service_network_ambiguos(self):
     net = fake_network.FakeNetwork(name=CONF.service_network_name)
     self.stubs.Set(self._manager.neutron_api, 'get_all_tenant_networks',
                    mock.Mock(return_value=[net, net]))
     self.assertRaises(exception.ManilaException,
                       self._manager._get_service_network)