Exemple #1
0
 def test_cleanup_stale_devices(self):
     plugin = mock.MagicMock()
     dev_mgr = dhcp.DeviceManager(self.conf, plugin)
     network = {
         'id':
         'foo_id',
         'tenant_id':
         'foo_tenant',
         'namespace':
         'qdhcp-foo_id',
         'ports': [],
         'subnets': [
             tests_base.AttributeDict({
                 'id': 'subnet_foo_id',
                 'enable_dhcp': True,
                 'ipv6_address_mode': None,
                 'ipv6_ra_mode': None,
                 'cidr': '10.0.0.0/24',
                 'ip_version': 4,
                 'gateway_ip': '10.0.0.1'
             })
         ]
     }
     dhcp_port = {
         'id':
         'foo_port_id',
         'mac_address':
         '10:22:33:44:55:67',
         'fixed_ips': [
             tests_base.AttributeDict({
                 'subnet_id': 'subnet_foo_id',
                 'ip_address': '10.0.0.1'
             })
         ]
     }
     plugin.create_dhcp_port.return_value = tests_base.AttributeDict(
         dhcp_port)
     dev_mgr.driver.plug("foo_id",
                         "foo_id2",
                         "tapfoo_id2",
                         "10:22:33:44:55:68",
                         namespace="qdhcp-foo_id")
     dev_mgr.driver.plug("foo_id",
                         "foo_id3",
                         "tapfoo_id3",
                         "10:22:33:44:55:69",
                         namespace="qdhcp-foo_id")
     ipw = ip_lib.IPWrapper(namespace="qdhcp-foo_id")
     devices = ipw.get_devices(exclude_loopback=True)
     self.addCleanup(ipw.netns.delete, 'qdhcp-foo_id')
     self.assertEqual(2, len(devices))
     # setting up dhcp for the network
     dev_mgr.setup(tests_base.AttributeDict(network))
     common_utils.wait_until_true(
         lambda: 1 == len(ipw.get_devices(exclude_loopback=True)),
         timeout=5,
         sleep=0.1,
         exception=RuntimeError("only one non-loopback device must remain"))
     devices = ipw.get_devices(exclude_loopback=True)
     self.assertEqual("tapfoo_port_id", devices[0].name)
 def create_network(self, **kwargs):
     # Supply defaults that are expected to be set by the api
     # framwork
     kwargs.setdefault('admin_state_up', True)
     kwargs.setdefault('shared', False)
     data = dict(network=kwargs)
     result = self.plugin.create_network(self.ctx, data)
     return base.AttributeDict(result)
    def convert_to_attr_dict(self, other):
        """Convert nested dicts to AttributeDict.

        :param other: dictionary to be directly modified.
        """
        for key, value in other.items():
            if isinstance(value, dict):
                if not isinstance(value, base.AttributeDict):
                    other[key] = base.AttributeDict(value)
                self.convert_to_attr_dict(value)
Exemple #4
0
 def get_networks(self, **kwargs):
     body = self.client.list_networks(**kwargs)
     return [base.AttributeDict(x) for x in body['networks']]
Exemple #5
0
 def get_network(self, id_, **kwargs):
     body = self.client.show_network(id_, **kwargs)
     return base.AttributeDict(body['network'])
Exemple #6
0
 def update_network(self, id_, **kwargs):
     body = self.client.update_network(id_, **kwargs)
     return base.AttributeDict(body['network'])
Exemple #7
0
 def _create_network(self, **kwargs):
     # Internal method - use create_network() instead
     body = self.client.create_network(**kwargs)
     return base.AttributeDict(body['network'])
Exemple #8
0
 def get_networks(self, *args, **kwargs):
     result = self.plugin.get_networks(self.ctx, *args, **kwargs)
     return [base.AttributeDict(x) for x in result]
Exemple #9
0
 def get_network(self, *args, **kwargs):
     result = self.plugin.get_network(self.ctx, *args, **kwargs)
     return base.AttributeDict(result)
Exemple #10
0
 def update_network(self, id_, **kwargs):
     data = dict(network=kwargs)
     result = self.plugin.update_network(self.ctx, id_, data)
     return base.AttributeDict(result)