def test_create_tap_dev_mac(self, mock_execute): net_utils.create_tap_dev('tap42', '00:11:22:33:44:55') mock_execute.assert_has_calls([ mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap', run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('ip', 'link', 'set', 'tap42', 'address', '00:11:22:33:44:55', run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('ip', 'link', 'set', 'tap42', 'up', run_as_root=True, check_exit_code=[0, 2, 254]) ])
def test_create_tap_dev(self, mock_enabled, mock_execute): net_utils.create_tap_dev('tap42') mock_execute.assert_has_calls([ mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap', run_as_root=True, check_exit_code=[0, 2, 254]) ]) mock_enabled.assert_called_once_with('tap42')
def plug_tap(self, instance, vif): """Plug a VIF_TYPE_TAP virtual interface.""" dev = self.get_vif_devname(vif) mac = vif['details'].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS) linux_net_utils.create_tap_dev(dev, mac) network = vif.get('network') mtu = network.get_meta('mtu') if network else None linux_net_utils.set_device_mtu(dev, mtu)
def test_create_tap_dev(self, mock_execute): net_utils.create_tap_dev('tap42') mock_execute.assert_has_calls([ mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap', run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('ip', 'link', 'set', 'tap42', 'up', run_as_root=True, check_exit_code=[0, 2, 254]) ])
def plug_midonet(self, instance, vif): """Plug into MidoNet's network port Bind the vif to a MidoNet virtual port. """ dev = self.get_vif_devname(vif) port_id = vif['id'] try: linux_net_utils.create_tap_dev(dev) nova.privsep.libvirt.plug_midonet_vif(port_id, dev) except processutils.ProcessExecutionError: LOG.exception(_("Failed while plugging vif"), instance=instance)
def test_create_tap_dev_fallback_to_tunctl(self, mock_execute): # ip failed, fall back to tunctl mock_execute.side_effect = [processutils.ProcessExecutionError, 0, 0] net_utils.create_tap_dev('tap42') mock_execute.assert_has_calls([ mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap', run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('tunctl', '-b', '-t', 'tap42', run_as_root=True), mock.call('ip', 'link', 'set', 'tap42', 'up', run_as_root=True, check_exit_code=[0, 2, 254]) ])
def test_create_tap_dev_fallback_to_tunctl(self, mock_enabled, mock_execute): # ip failed, fall back to tunctl mock_execute.side_effect = [processutils.ProcessExecutionError, 0, 0] net_utils.create_tap_dev('tap42') mock_execute.assert_has_calls([ mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap', run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('tunctl', '-b', '-t', 'tap42', run_as_root=True) ]) mock_enabled.assert_called_once_with('tap42')
def plug_tap(self, instance, vif): """Plug a VIF_TYPE_TAP virtual interface.""" dev = self.get_vif_devname(vif) mac = vif['details'].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS) image_meta = instance.image_meta vif_model = self.get_vif_model(image_meta=image_meta) # TODO(ganso): explore whether multiqueue works for other vif models # that go through this code path. multiqueue = (self._requests_multiqueue(image_meta) and vif_model == network_model.VIF_MODEL_VIRTIO) linux_net_utils.create_tap_dev(dev, mac, multiqueue=multiqueue) network = vif.get('network') mtu = network.get_meta('mtu') if network else None linux_net_utils.set_device_mtu(dev, mtu)
def plug_iovisor(self, instance, vif): """Plug using PLUMgrid IO Visor Driver Connect a network device to their respective Virtual Domain in PLUMgrid Platform. """ dev = self.get_vif_devname(vif) iface_id = vif['id'] linux_net_utils.create_tap_dev(dev) net_id = vif['network']['id'] tenant_id = instance.project_id try: nova.privsep.libvirt.plug_plumgrid_vif( dev, iface_id, vif['address'], net_id, tenant_id) except processutils.ProcessExecutionError: LOG.exception(_("Failed while plugging vif"), instance=instance)
def plug_vrouter(self, instance, vif): """Plug into Contrail's network port Bind the vif to a Contrail virtual port. """ dev = self.get_vif_devname(vif) ip_addr = '0.0.0.0' ip6_addr = None subnets = vif['network']['subnets'] for subnet in subnets: if not subnet['ips']: continue ips = subnet['ips'][0] if not ips['address']: continue if (ips['version'] == 4): if ips['address'] is not None: ip_addr = ips['address'] if (ips['version'] == 6): if ips['address'] is not None: ip6_addr = ips['address'] ptype = 'NovaVMPort' if (CONF.libvirt.virt_type == 'lxc'): ptype = 'NameSpacePort' try: multiqueue = self._is_multiqueue_enabled(instance.image_meta, instance.flavor) linux_net_utils.create_tap_dev(dev, multiqueue=multiqueue) nova.privsep.libvirt.plug_contrail_vif( instance.project_id, instance.uuid, instance.display_name, vif['id'], vif['network']['id'], ptype, dev, vif['address'], ip_addr, ip6_addr, ) except processutils.ProcessExecutionError: LOG.exception(_("Failed while plugging vif"), instance=instance)
def test_create_tap_dev_multiqueue(self, mock_execute): net_utils.create_tap_dev('tap42', multiqueue=True) mock_execute.assert_has_calls([ mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap', 'multi_queue', run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('ip', 'link', 'set', 'tap42', 'up', run_as_root=True, check_exit_code=[0, 2, 254]) ])
def test_create_tap_skipped_when_exists(self, mock_execute, mock_exists): net_utils.create_tap_dev('tap42') mock_exists.assert_called_once_with('/sys/class/net/tap42') mock_execute.assert_not_called()