예제 #1
0
    def test_get_devices_malformed_line(self):
        self.execute.return_value = '\n'.join(LINK_SAMPLE + ['gibberish'])
        retval = ip_lib.IPWrapper('sudo').get_devices()
        self.assertEqual(retval, [
            ip_lib.IPDevice('lo'),
            ip_lib.IPDevice('eth0'),
            ip_lib.IPDevice('br-int'),
            ip_lib.IPDevice('gw-ddc717df-49')
        ])

        self.execute.assert_called_once_with('o', 'link', ('list', ), 'sudo',
                                             None)
예제 #2
0
    def init_l3(self, device_name, ip_cidrs, namespace=None):
        """Set the L3 settings for the interface using data from the port.
           ip_cidrs: list of 'X.X.X.X/YY' strings
        """
        device = ip_lib.IPDevice(device_name,
                                 self.root_helper,
                                 namespace=namespace)

        previous = {}
        for address in device.addr.list(scope='global', filters=['permanent']):
            previous[address['cidr']] = address['ip_version']

        # add new addresses
        for ip_cidr in ip_cidrs:

            net = netaddr.IPNetwork(ip_cidr)
            if ip_cidr in previous:
                del previous[ip_cidr]
                continue

            device.addr.add(net.version, ip_cidr, str(net.broadcast))

        # clean up any old addresses
        for ip_cidr, ip_version in previous.items():
            device.addr.delete(ip_version, ip_cidr)
예제 #3
0
 def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
     """Unplug the interface."""
     device = ip_lib.IPDevice(device_name, self.root_helper, namespace)
     try:
         device.link.delete()
         LOG.debug(_("Unplugged interface '%s'"), device_name)
     except RuntimeError:
         LOG.error(_("Failed unplugging interface '%s'"), device_name)
예제 #4
0
    def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
        """Unplug the interface."""
        if not bridge:
            bridge = self.conf.ovs_integration_bridge

        tap_name = self._get_tap_name(device_name, prefix)
        self.check_bridge_exists(bridge)
        ovs = ovs_lib.OVSBridge(bridge, self.root_helper)

        try:
            ovs.delete_port(tap_name)
            if self.conf.ovs_use_veth:
                device = ip_lib.IPDevice(device_name, self.root_helper,
                                         namespace)
                device.link.delete()
                LOG.debug(_("Unplugged interface '%s'"), device_name)
        except RuntimeError:
            LOG.error(_("Failed unplugging interface '%s'"), device_name)
예제 #5
0
 def test_str(self):
     self.assertEqual(str(ip_lib.IPDevice('tap0')), 'tap0')
예제 #6
0
 def test_eq_other_is_none(self):
     dev1 = ip_lib.IPDevice('tap0', 'sudo', 'ns1')
     self.assertNotEqual(dev1, None)
예제 #7
0
 def test_eq_diff_namespace(self):
     dev1 = ip_lib.IPDevice('tap0', 'sudo', 'ns1')
     dev2 = ip_lib.IPDevice('tap0', 'sudo', 'ns2')
     self.assertNotEqual(dev1, dev2)
예제 #8
0
 def test_eq_same_namespace(self):
     dev1 = ip_lib.IPDevice('tap0', 'ns1')
     dev2 = ip_lib.IPDevice('tap0', 'ns1')
     self.assertEqual(dev1, dev2)
예제 #9
0
 def test_eq_diff_name(self):
     dev1 = ip_lib.IPDevice('tap0')
     dev2 = ip_lib.IPDevice('tap1')
     self.assertNotEqual(dev1, dev2)