def test_get_deallocated_ips_non_admin_both(self):
        with self._stubs() as (ip1, ip2):
            reserved_ip = ip_addr.update_ip_address(self.context, ip2["id"],
                                                    self.ip_address_dealloc)
            self.assertNotIn('_deallocated', reserved_ip)

            ip_addresses = db_api.ip_address_find(self.context,
                                                  scope=db_api.ALL)
            self.assertEqual(len(ip_addresses), 2)
            for ip in ip_addresses:
                if ip["id"] == ip1["id"]:
                    self.assertEqual(ip["_deallocated"], False)
                elif ip["id"] == ip2["id"]:
                    self.assertEqual(ip["_deallocated"], True)

            deallocated_ips = ip_addr.get_ip_addresses(self.context)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertNotIn('_deallocated', deallocated_ips[0])

            filters = {'deallocated': 'True'}
            deallocated_ips1 = ip_addr.get_ip_addresses(
                self.context, **filters)
            self.assertEqual(len(deallocated_ips1), 1)

            filters = {'deallocated': 'False'}
            deallocated_ips1 = ip_addr.get_ip_addresses(
                self.context, **filters)
            self.assertEqual(len(deallocated_ips1), 1)

            filters = {'deallocated': 'both'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertNotIn('_deallocated', deallocated_ips[0])
示例#2
0
    def test_get_deallocated_ips_admin_both(self):
        self.context.is_admin = True
        with self._stubs() as (ip1, ip2):
            reserved_ip = ip_addr.update_ip_address(self.context, ip2["id"],
                                                    self.ip_address_dealloc)
            self.assertEqual(reserved_ip["_deallocated"], True)

            deallocated_ips = ip_addr.get_ip_addresses(self.context)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertEqual(deallocated_ips[0]['_deallocated'], False)

            filters = {'deallocated': 'True'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(reserved_ip['id'], deallocated_ips[0]['id'])
            self.assertEqual(deallocated_ips[0]['_deallocated'], True)

            filters = {'deallocated': 'False'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertEqual(deallocated_ips[0]['_deallocated'], False)

            filters = {'deallocated': 'both'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 2)
            for ip in deallocated_ips:
                if ip["id"] == ip1["id"]:
                    self.assertEqual(ip["_deallocated"], False)
                elif ip["id"] == ip2["id"]:
                    self.assertEqual(ip["_deallocated"], True)
    def test_get_deallocated_ips_admin_both(self):
        self.context.is_admin = True
        with self._stubs() as (ip1, ip2):
            reserved_ip = ip_addr.update_ip_address(self.context, ip2["id"],
                                                    self.ip_address_dealloc)
            self.assertEqual(reserved_ip["_deallocated"], True)

            deallocated_ips = ip_addr.get_ip_addresses(self.context)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertEqual(deallocated_ips[0]['_deallocated'], False)

            filters = {'deallocated': 'True'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(reserved_ip['id'], deallocated_ips[0]['id'])
            self.assertEqual(deallocated_ips[0]['_deallocated'], True)

            filters = {'deallocated': 'False'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertEqual(deallocated_ips[0]['_deallocated'], False)

            filters = {'deallocated': 'both'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 2)
            for ip in deallocated_ips:
                if ip["id"] == ip1["id"]:
                    self.assertEqual(ip["_deallocated"], False)
                elif ip["id"] == ip2["id"]:
                    self.assertEqual(ip["_deallocated"], True)
示例#4
0
    def _stubs(self):
        with mock.patch("neutron.common.rpc.get_notifier"), \
                mock.patch("neutron.quota.QUOTAS.limit_check"):
            mac = {'mac_address_range': dict(cidr="AA:BB:CC")}
            self.context.is_admin = True
            macrng_api.create_mac_address_range(self.context, mac)
            self.context.is_admin = False
            network_info = dict(name="public", tenant_id="fake",
                                network_plugin="BASE",
                                ipam_strategy="ANY")
            network_info = {"network": network_info}
            network = network_api.create_network(self.context, network_info)
            subnet = db_api.subnet_create(self.context, tenant_id="fake",
                                          cidr="192.168.10.0/24",
                                          network_id=network['id'])

            fixed_ips = [dict(subnet_id=subnet['id'], enabled=True,
                         ip_address=self.addr)]
            port = dict(port=dict(network_id=network['id'],
                                  tenant_id=self.context.tenant_id,
                                  device_id=2,
                                  fixed_ips=fixed_ips))
            port_api.create_port(self.context, port)
            self.context.is_admin = True
            filters = {"deallocated": "both"}
            ip = ip_addr.get_ip_addresses(self.context, **filters)
            self.context.is_admin = False
        yield ip[0]
    def _stubs(self):
        with mock.patch("neutron.common.rpc.get_notifier"), \
                mock.patch("neutron.quota.QUOTAS.limit_check"):
            mac = {'mac_address_range': dict(cidr="AA:BB:CC")}
            self.context.is_admin = True
            macrng_api.create_mac_address_range(self.context, mac)
            self.context.is_admin = False
            network_info = dict(name="public",
                                tenant_id="fake",
                                network_plugin="BASE",
                                ipam_strategy="ANY")
            network_info = {"network": network_info}
            network = network_api.create_network(self.context, network_info)
            subnet = db_api.subnet_create(self.context,
                                          tenant_id="fake",
                                          cidr="192.168.10.0/24",
                                          network_id=network['id'])

            fixed_ips = [
                dict(subnet_id=subnet['id'],
                     enabled=True,
                     ip_address=self.addr)
            ]
            port = dict(port=dict(network_id=network['id'],
                                  tenant_id=self.context.tenant_id,
                                  device_id=2,
                                  fixed_ips=fixed_ips))
            port_api.create_port(self.context, port)
            self.context.is_admin = True
            filters = {"deallocated": "both"}
            ip = ip_addr.get_ip_addresses(self.context, **filters)
            self.context.is_admin = False
        yield ip[0]
 def test_get_deallocated_ips_non_admin_empty(self):
     with self._stubs() as ip:
         reserved_ip = ip_addr.update_ip_address(self.context, ip["id"],
                                                 self.ip_address_dealloc)
         ip_address = db_api.ip_address_find(self.context,
                                             id=reserved_ip["id"],
                                             scope=db_api.ONE)
         self.assertEqual(ip_address["deallocated"], True)
         deallocated_ips = ip_addr.get_ip_addresses(self.context)
         self.assertEqual(len(deallocated_ips), 0)
示例#7
0
 def test_get_deallocated_ips_non_admin_empty(self):
     with self._stubs() as ip:
         reserved_ip = ip_addr.update_ip_address(self.context, ip["id"],
                                                 self.ip_address_dealloc)
         ip_address = db_api.ip_address_find(
             self.context,
             id=reserved_ip["id"],
             scope=db_api.ONE)
         self.assertEqual(ip_address["deallocated"], True)
         deallocated_ips = ip_addr.get_ip_addresses(self.context)
         self.assertEqual(len(deallocated_ips), 0)
 def test_get_deallocated_ips_admin(self):
     self.context.is_admin = True
     with self._stubs() as ip:
         reserved_ip = ip_addr.update_ip_address(self.context, ip["id"],
                                                 self.ip_address_dealloc)
         ip_address = db_api.ip_address_find(self.context,
                                             id=reserved_ip["id"],
                                             scope=db_api.ONE)
         self.assertEqual(ip_address["deallocated"], True)
         filters = {'deallocated': 'True'}
         deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
         self.assertEqual(len(deallocated_ips), 1)
         self.assertEqual(reserved_ip['id'], deallocated_ips[0]['id'])
         self.assertEqual(deallocated_ips[0]['_deallocated'], True)
示例#9
0
    def test_get_deallocated_ips_non_admin_both(self):
        with self._stubs() as (ip1, ip2):
            reserved_ip = ip_addr.update_ip_address(self.context, ip2["id"],
                                                    self.ip_address_dealloc)
            self.assertNotIn('_deallocated', reserved_ip)

            ip_addresses = db_api.ip_address_find(
                self.context,
                scope=db_api.ALL)
            self.assertEqual(len(ip_addresses), 2)
            for ip in ip_addresses:
                if ip["id"] == ip1["id"]:
                    self.assertEqual(ip["_deallocated"], False)
                elif ip["id"] == ip2["id"]:
                    self.assertEqual(ip["_deallocated"], True)

            deallocated_ips = ip_addr.get_ip_addresses(self.context)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertNotIn('_deallocated', deallocated_ips[0])

            filters = {'deallocated': 'True'}
            deallocated_ips1 = ip_addr.get_ip_addresses(self.context,
                                                        **filters)
            self.assertEqual(len(deallocated_ips1), 1)

            filters = {'deallocated': 'False'}
            deallocated_ips1 = ip_addr.get_ip_addresses(self.context,
                                                        **filters)
            self.assertEqual(len(deallocated_ips1), 1)

            filters = {'deallocated': 'both'}
            deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
            self.assertEqual(len(deallocated_ips), 1)
            self.assertEqual(ip1['id'], deallocated_ips[0]['id'])
            self.assertNotIn('_deallocated', deallocated_ips[0])
示例#10
0
 def test_get_deallocated_ips_admin(self):
     self.context.is_admin = True
     with self._stubs() as ip:
         reserved_ip = ip_addr.update_ip_address(self.context, ip["id"],
                                                 self.ip_address_dealloc)
         ip_address = db_api.ip_address_find(
             self.context,
             id=reserved_ip["id"],
             scope=db_api.ONE)
         self.assertEqual(ip_address["deallocated"], True)
         filters = {'deallocated': 'True'}
         deallocated_ips = ip_addr.get_ip_addresses(self.context, **filters)
         self.assertEqual(len(deallocated_ips), 1)
         self.assertEqual(reserved_ip['id'], deallocated_ips[0]['id'])
         self.assertEqual(deallocated_ips[0]['_deallocated'], True)
示例#11
0
文件: plugin.py 项目: lmaycotte/quark
 def get_ip_addresses(self, context, **filters):
     return ip_addresses.get_ip_addresses(context, **filters)
示例#12
0
    def test_filter_ip_by_device_and_service(self):

        def _make_body(service):
            body = dict(service=service)
            port_info = {"port": dict(body)}
            return port_info

        with self._stubs(self.network, self.subnet, self.ports_info4) as (
                net, sub, ports):
            port_ids1 = [ports[0]['id'], ports[1]['id']]
            port_ids2 = [ports[2]['id'], ports[3]['id']]

            filters = dict(device_id='a')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(1, len(ips))

            shared_ip1 = {'ip_address': dict(port_ids=port_ids1,
                                             network_id=net['id'],
                                             version=4)}
            ip1 = ip_api.create_ip_address(self.context, shared_ip1)
            self.assertEqual(2, len(ip1['port_ids']))

            shared_ip2 = {'ip_address': dict(port_ids=port_ids2,
                                             network_id=net['id'],
                                             version=4)}
            ip2 = ip_api.create_ip_address(self.context, shared_ip2)
            self.assertEqual(2, len(ip2['port_ids']))

            ports_ip = ip_api.get_ports_for_ip_address(self.context, ip1['id'])
            self.assertEqual(2, len(ports_ip))
            ports_ip = ip_api.get_ports_for_ip_address(self.context, ip2['id'])
            self.assertEqual(2, len(ports_ip))

            filters = dict(device_id='a')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(2, len(ips))

            filters = dict(device_id='x')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(0, len(ips))

            filters = dict(device_id='a', service='derp')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(0, len(ips))

            filters = dict(service='derp')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(0, len(ips))

            filters = dict(device_id='a', service='none')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(2, len(ips))

            port_ip_update = ip_api.update_port_for_ip_address
            updated_port = port_ip_update(self.context, ip1['id'],
                                          ports[0]['id'], _make_body('derp'))
            self.assertEqual('derp', updated_port.get('service'))

            filters = dict(device_id='a', service='derp')
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(1, len(ips))

            filters = dict(device_id='a', service='derp',
                           type=ip_types.FIXED)
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(0, len(ips))

            filters = dict(device_id='a', service='derp',
                           type=ip_types.SHARED)
            ips = ip_api.get_ip_addresses(self.context, **filters)
            self.assertEqual(1, len(ips))
示例#13
0
文件: plugin.py 项目: thomasem/quark
 def get_ip_addresses(self, context, **filters):
     return ip_addresses.get_ip_addresses(context, **filters)