コード例 #1
0
ファイル: vif.py プロジェクト: andymcc/nova
    def unplug(self, instance, vif):
        vif_type = vif['type']

        # instance.display_name could be unicode
        instance_repr = utils.get_obj_repr_unicode(instance)
        LOG.debug('vif_type=%(vif_type)s instance=%(instance)s '
                  'vif=%(vif)s',
                  {'vif_type': vif_type, 'instance': instance_repr,
                   'vif': vif})

        if vif_type is None:
            msg = _("vif_type parameter must be present for this vif_driver "
                    "implementation")
            raise exception.InternalError(msg)

        # Try os-vif codepath first
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)
        if vif_obj is not None:
            self._unplug_os_vif(instance, vif_obj)
            return

        # Legacy non-os-vif codepath
        vif_slug = self._normalize_vif_type(vif_type)
        func = getattr(self, 'unplug_%s' % vif_slug, None)
        if not func:
            msg = _("Unexpected vif_type=%s") % vif_type
            raise exception.InternalError(msg)
        func(instance, vif)
コード例 #2
0
ファイル: test_os_vif_util.py プロジェクト: arbrandes/nova
    def test_nova_to_osvif_vrouter(self):
        """Test for the Contrail / Tungsten Fabric kernel datapath."""
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_VROUTER,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFGeneric(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            plugin="vrouter",
            vif_name="nicdc065497-3c",
            has_traffic_filtering=False,
            preserve_on_delete=False,
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #3
0
ファイル: test_os_vif_util.py プロジェクト: 4everming/nova
    def test_nova_to_osvif_vif_linux_bridge(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_BRIDGE,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_PORT_FILTER: True,
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFBridge(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            has_traffic_filtering=True,
            plugin="linux_bridge",
            preserve_on_delete=False,
            vif_name="nicdc065497-3c",
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #4
0
    def unplug(self, instance, vif):
        vif_type = vif['type']

        LOG.debug('vif_type=%(vif_type)s instance=%(instance)s '
                  'vif=%(vif)s',
                  {'vif_type': vif_type, 'instance': instance,
                   'vif': vif})

        if vif_type is None:
            raise exception.NovaException(
                _("vif_type parameter must be present "
                  "for this vif_driver implementation"))

        # Try os-vif codepath first
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)
        if vif_obj is not None:
            self._unplug_os_vif(instance, vif_obj)
            return

        # Legacy non-os-vif codepath
        vif_slug = self._normalize_vif_type(vif_type)
        func = getattr(self, 'unplug_%s' % vif_slug, None)
        if not func:
            raise exception.NovaException(
                _("Unexpected vif_type=%s") % vif_type)
        func(instance, vif)
コード例 #5
0
    def test_nova_to_osvif_vif_ovs_hybrid(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_OVS,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_PORT_FILTER: False,
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFBridge(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            has_traffic_filtering=False,
            plugin="ovs",
            bridge_name="qbrdc065497-3c",
            port_profile=osv_objects.vif.VIFPortProfileOpenVSwitch(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536"),
            preserve_on_delete=False,
            vif_name="nicdc065497-3c",
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #6
0
ファイル: vif.py プロジェクト: andymcc/nova
    def get_config(self, instance, vif, image_meta,
                   inst_type, virt_type, host):
        vif_type = vif['type']
        vnic_type = vif['vnic_type']

        # instance.display_name could be unicode
        instance_repr = utils.get_obj_repr_unicode(instance)
        LOG.debug('vif_type=%(vif_type)s instance=%(instance)s '
                  'vif=%(vif)s virt_type=%(virt_type)s',
                  {'vif_type': vif_type, 'instance': instance_repr,
                   'vif': vif, 'virt_type': virt_type})

        if vif_type is None:
            raise exception.InternalError(
                _("vif_type parameter must be present "
                  "for this vif_driver implementation"))

        # Try os-vif codepath first
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)
        if vif_obj is not None:
            return self._get_config_os_vif(instance, vif_obj, image_meta,
                                           inst_type, virt_type, host,
                                           vnic_type)

        # Legacy non-os-vif codepath
        vif_slug = self._normalize_vif_type(vif_type)
        func = getattr(self, 'get_config_%s' % vif_slug, None)
        if not func:
            raise exception.InternalError(
                _("Unexpected vif_type=%s") % vif_type)
        return func(instance, vif, image_meta,
                    inst_type, virt_type, host)
コード例 #7
0
ファイル: vif.py プロジェクト: andymcc/nova
    def plug(self, instance, vif):
        vif_type = vif['type']

        # instance.display_name could be unicode
        instance_repr = utils.get_obj_repr_unicode(instance)
        LOG.debug('vif_type=%(vif_type)s instance=%(instance)s '
                  'vif=%(vif)s',
                  {'vif_type': vif_type, 'instance': instance_repr,
                   'vif': vif})

        if vif_type is None:
            raise exception.VirtualInterfacePlugException(
                _("vif_type parameter must be present "
                  "for this vif_driver implementation"))

        # Try os-vif codepath first
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)
        if vif_obj is not None:
            self._plug_os_vif(instance, vif_obj)
            return

        # Legacy non-os-vif codepath
        vif_slug = self._normalize_vif_type(vif_type)
        func = getattr(self, 'plug_%s' % vif_slug, None)
        if not func:
            raise exception.VirtualInterfacePlugException(
                _("Plug vif failed because of unexpected "
                  "vif_type=%s") % vif_type)
        func(instance, vif)
コード例 #8
0
ファイル: test_os_vif_util.py プロジェクト: mikalstill/nova
 def test_nova_to_osvif_vif_unbound(self):
     vif = model.VIF(
         id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
         type="unbound",
         address="22:52:25:62:e2:aa",
         network=model.Network(
             id="b82c1929-051e-481d-8110-4669916c7915",
             label="Demo Net",
             subnets=[]),)
     self.assertIsNone(os_vif_util.nova_to_osvif_vif(vif))
コード例 #9
0
ファイル: vif.py プロジェクト: petrutlucian94/compute-hyperv
 def unplug(self, instance, vif):
     vif_type = vif['type']
     if vif_type == model.VIF_TYPE_HYPERV:
         self._vif_plugin.unplug(instance, vif)
     elif vif_type == model.VIF_TYPE_OVS:
         vif = os_vif_util.nova_to_osvif_vif(vif)
         instance = os_vif_util.nova_to_osvif_instance(instance)
         os_vif.unplug(vif, instance)
     else:
         reason = _("unexpected vif_type=%s") % vif_type
         raise exception.VirtualInterfaceUnplugException(reason=reason)
コード例 #10
0
ファイル: test_os_vif_util.py プロジェクト: mikalstill/nova
    def test_nova_to_osvif_vhostuser_fp_ovs_plain(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_VHOSTUSER,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                mtu="1500",
                bridge="br-int",
                subnets=[]),
            details={
                model.VIF_DETAILS_VHOSTUSER_MODE: 'client',
                model.VIF_DETAILS_VHOSTUSER_SOCKET: '/fake/socket',
                model.VIF_DETAILS_VHOSTUSER_FP_PLUG: True,
                model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: True,
                model.VIF_DETAILS_OVS_HYBRID_PLUG: False,
                model.VIF_DETAILS_PORT_FILTER: True,
                model.VIF_DETAILS_OVS_DATAPATH_TYPE:
                    model.VIF_DETAILS_OVS_DATAPATH_SYSTEM
            },
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFVHostUser(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            plugin="vhostuser_fp",
            port_profile=osv_objects.vif.VIFPortProfileFPOpenVSwitch(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                bridge_name="br-int",
                hybrid_plug=False,
                datapath_type=model.VIF_DETAILS_OVS_DATAPATH_SYSTEM),
            vif_name="nicdc065497-3c",
            path='/fake/socket',
            mode='client',
            has_traffic_filtering=True,
            preserve_on_delete=False,
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                mtu="1500",
                bridge="br-int",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #11
0
ファイル: test_os_vif_util.py プロジェクト: arbrandes/nova
    def test_nova_to_osvif_vif_agilio_ovs_forwarder(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_AGILIO_OVS,
            address="22:52:25:62:e2:aa",
            profile={
                "pci_slot": "0000:08:08.5",
            },
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            vnic_type=model.VNIC_TYPE_VIRTIO_FORWARDER,
            details={
                model.VIF_DETAILS_VHOSTUSER_MODE: 'client',
                model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: True,
                model.VIF_DETAILS_VHOSTUSER_SOCKET: '/fake/socket',
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFVHostUser(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            has_traffic_filtering=False,
            plugin="agilio_ovs",
            port_profile=osv_objects.vif.VIFPortProfileOVSRepresentor(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                representor_address="0000:08:08.5",
                representor_name="nicdc065497-3c",
                datapath_offload=osv_objects.vif.DatapathOffloadRepresentor(
                    representor_name="nicdc065497-3c",
                    representor_address="0000:08:08.5")),
            preserve_on_delete=False,
            vif_name="nicdc065497-3c",
            path='/fake/socket',
            mode='client',
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #12
0
ファイル: vif.py プロジェクト: petrutlucian94/compute-hyperv
    def plug(self, instance, vif):
        vif_type = vif['type']
        if vif_type == model.VIF_TYPE_HYPERV:
            self._vif_plugin.plug(instance, vif)
        elif vif_type == model.VIF_TYPE_OVS:
            vif = os_vif_util.nova_to_osvif_vif(vif)
            instance = os_vif_util.nova_to_osvif_instance(instance)

            # NOTE(claudiub): the vNIC has to be connected to a vSwitch
            # before the ovs port is created.
            self._netutils.connect_vnic_to_vswitch(CONF.hyperv.vswitch_name,
                                                   vif.id)
            os_vif.plug(vif, instance)
        else:
            reason = _("Failed to plug virtual interface: "
                       "unexpected vif_type=%s") % vif_type
            raise exception.VirtualInterfacePlugException(reason)
コード例 #13
0
    def test_nova_to_osvif_vif_ivs_plain(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_IVS,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_PORT_FILTER: True,
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        self.assertIsNone(actual)
コード例 #14
0
ファイル: vif.py プロジェクト: openstack/nova-lxd
    def unplug(self, instance, vif):
        vif_type = vif['type']
        instance_info = os_vif_util.nova_to_osvif_instance(instance)

        # Try os-vif codepath first
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)
        if vif_obj is not None:
            os_vif.unplug(vif_obj, instance_info)
        else:
            # Legacy non-os-vif codepath
            func = getattr(self, 'unplug_%s' % vif_type, None)
            if not func:
                raise exception.InternalError(
                    "Unexpected vif_type=%s" % vif_type
                )
            func(instance, vif)

        _post_unplug_wiring(instance, vif)
コード例 #15
0
ファイル: test_os_vif_util.py プロジェクト: sapcc/nova
    def test_nova_to_osvif_vhostuser_non_ovs(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            type=model.VIF_TYPE_VHOSTUSER,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_VHOSTUSER_MODE: 'client',
                model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: False,
                model.VIF_DETAILS_VHOSTUSER_SOCKET: '/fake/socket'
            }
        )

        self.assertIsNone(os_vif_util.nova_to_osvif_vif(vif))
コード例 #16
0
ファイル: test_os_vif_util.py プロジェクト: arbrandes/nova
    def test_nova_to_osvif_vif_agilio_ovs_direct(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_AGILIO_OVS,
            address="22:52:25:62:e2:aa",
            profile={
                "pci_slot": "0000:08:08.5",
            },
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            vnic_type=model.VNIC_TYPE_DIRECT,
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFHostDevice(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            has_traffic_filtering=False,
            address="22:52:25:62:e2:aa",
            dev_type=osv_objects.fields.VIFHostDeviceDevType.ETHERNET,
            dev_address="0000:08:08.5",
            plugin="agilio_ovs",
            port_profile=osv_objects.vif.VIFPortProfileOVSRepresentor(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                representor_name="nicdc065497-3c",
                representor_address="0000:08:08.5",
                datapath_offload=osv_objects.vif.DatapathOffloadRepresentor(
                    representor_name="nicdc065497-3c",
                    representor_address="0000:08:08.5")),
            preserve_on_delete=False,
            vif_name="nicdc065497-3c",
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #17
0
ファイル: test_os_vif_util.py プロジェクト: mikalstill/nova
    def test_nova_to_osvif_vif_ivs_plain(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_IVS,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_PORT_FILTER: True,
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)
        # expected vif_name is nic + vif_id, with total length 14 chars
        expected_vif_name = 'nicdc065497-3c'

        self.assertIsInstance(actual, osv_objects.vif.VIFGeneric)
        self.assertEqual(expected_vif_name, actual.vif_name)
コード例 #18
0
ファイル: test_os_vif_util.py プロジェクト: arbrandes/nova
    def test_nova_to_osvif_vhostuser_non_ovs(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            type=model.VIF_TYPE_VHOSTUSER,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_VHOSTUSER_MODE: 'client',
                model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: False,
                model.VIF_DETAILS_VHOSTUSER_SOCKET: '/fake/socket'
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFVHostUser(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            plugin="noop",
            vif_name="nicdc065497-3c",
            path='/fake/socket',
            mode='client',
            has_traffic_filtering=False,
            preserve_on_delete=False,
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                mtu=None,
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #19
0
    def test_nova_to_osvif_vif_ovs_plain(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_OVS,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_PORT_FILTER: True,
                model.VIF_DETAILS_OVS_DATAPATH_TYPE:
                    model.VIF_DETAILS_OVS_DATAPATH_SYSTEM
            },
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFOpenVSwitch(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            has_traffic_filtering=True,
            plugin="ovs",
            port_profile=osv_objects.vif.VIFPortProfileOpenVSwitch(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                datapath_type=model.VIF_DETAILS_OVS_DATAPATH_SYSTEM),
            preserve_on_delete=False,
            vif_name="nicdc065497-3c",
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #20
0
    def test_nova_to_osvif_contrail_vrouter(self):
        """Test for the Contrail / Tungsten Fabric DPDK datapath."""
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_VHOSTUSER,
            address="22:52:25:62:e2:aa",
            network=model.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                label="Demo Net",
                subnets=[]),
            details={
                model.VIF_DETAILS_VHOSTUSER_MODE: 'client',
                model.VIF_DETAILS_VHOSTUSER_VROUTER_PLUG: True,
                model.VIF_DETAILS_VHOSTUSER_SOCKET: '/fake/socket',
            }
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFVHostUser(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            plugin="contrail_vrouter",
            vif_name="nicdc065497-3c",
            path='/fake/socket',
            mode='client',
            has_traffic_filtering=False,
            preserve_on_delete=False,
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(
                    objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #21
0
ファイル: test_os_vif_util.py プロジェクト: shurkaxaa/nova
    def test_nova_to_osvif_vif_agilio_ovs_direct(self):
        vif = model.VIF(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            type=model.VIF_TYPE_AGILIO_OVS,
            address="22:52:25:62:e2:aa",
            profile={
                "pci_slot": "0000:08:08.5",
            },
            network=model.Network(id="b82c1929-051e-481d-8110-4669916c7915",
                                  label="Demo Net",
                                  subnets=[]),
            vnic_type=model.VNIC_TYPE_DIRECT,
        )

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFHostDevice(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            has_traffic_filtering=False,
            address="22:52:25:62:e2:aa",
            dev_type=osv_objects.fields.VIFHostDeviceDevType.ETHERNET,
            dev_address="0000:08:08.5",
            plugin="agilio_ovs",
            port_profile=osv_objects.vif.VIFPortProfileOVSRepresentor(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                representor_name="nicdc065497-3c",
                representor_address="0000:08:08.5"),
            preserve_on_delete=False,
            vif_name="nicdc065497-3c",
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #22
0
ファイル: vif.py プロジェクト: ychen2u/stx-nova
    def plug(self, instance, vif):
        vif_type = vif['type']

        # instance.display_name could be unicode
        instance_repr = utils.get_obj_repr_unicode(instance)
        LOG.debug('vif_type=%(vif_type)s instance=%(instance)s '
                  'vif=%(vif)s', {
                      'vif_type': vif_type,
                      'instance': instance_repr,
                      'vif': vif
                  })

        LOG.info('vif_type=%(vif_type)s vif=%(vif)s', {
            'vif_type': vif_type,
            'vif': vif
        })

        if vif_type is None:
            raise exception.VirtualInterfacePlugException(
                _("vif_type parameter must be present "
                  "for this vif_driver implementation"))

        # Try os-vif codepath first
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)
        if vif_obj is not None:
            self._plug_os_vif(instance, vif_obj)
            return

        # Legacy non-os-vif codepath
        vif_slug = self._normalize_vif_type(vif_type)
        func = getattr(self, 'plug_%s' % vif_slug, None)
        if not func:
            raise exception.VirtualInterfacePlugException(
                _("Plug vif failed because of unexpected "
                  "vif_type=%s") % vif_type)
        func(instance, vif)
コード例 #23
0
    def test_nova_to_osvif_ovs_with_vnic_vdpa(self):
        vif = model.VIF(id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                        type=model.VIF_TYPE_OVS,
                        address="22:52:25:62:e2:aa",
                        vnic_type=model.VNIC_TYPE_VDPA,
                        network=model.Network(
                            id="b82c1929-051e-481d-8110-4669916c7915",
                            label="Demo Net",
                            subnets=[]),
                        profile={'pci_slot': '0000:0a:00.1'})

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFHostDevice(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            dev_address='0000:0a:00.1',
            dev_type=os_vif_fields.VIFHostDeviceDevType.ETHERNET,
            plugin="ovs",
            port_profile=osv_objects.vif.VIFPortProfileOVSRepresentor(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                representor_name="nicdc065497-3c",
                representor_address="0000:0a:00.1",
                datapath_offload=osv_objects.vif.DatapathOffloadRepresentor(
                    representor_name="nicdc065497-3c",
                    representor_address="0000:0a:00.1")),
            has_traffic_filtering=False,
            preserve_on_delete=False,
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #24
0
ファイル: test_os_vif_util.py プロジェクト: yamt/nova
    def test_nova_to_osvif_vhostuser_ovs(self):
        vif = model.VIF(id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
                        type=model.VIF_TYPE_VHOSTUSER,
                        address="22:52:25:62:e2:aa",
                        network=model.Network(
                            id="b82c1929-051e-481d-8110-4669916c7915",
                            label="Demo Net",
                            subnets=[]),
                        details={
                            model.VIF_DETAILS_VHOSTUSER_MODE: 'client',
                            model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: True,
                            model.VIF_DETAILS_VHOSTUSER_SOCKET: '/fake/socket',
                            model.VIF_DETAILS_PORT_FILTER: True
                        })

        actual = os_vif_util.nova_to_osvif_vif(vif)

        expect = osv_objects.vif.VIFVHostUser(
            id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
            active=False,
            address="22:52:25:62:e2:aa",
            plugin="ovs",
            port_profile=osv_objects.vif.VIFPortProfileOpenVSwitch(
                interface_id="dc065497-3c8d-4f44-8fb4-e1d33c16a536"),
            vif_name="vhudc065497-3c",
            path='/fake/socket',
            mode='client',
            has_traffic_filtering=True,
            preserve_on_delete=False,
            network=osv_objects.network.Network(
                id="b82c1929-051e-481d-8110-4669916c7915",
                bridge_interface=None,
                label="Demo Net",
                subnets=osv_objects.subnet.SubnetList(objects=[])))

        self.assertObjEqual(expect, actual)
コード例 #25
0
    def unplug(self, instance, vif):
        instance_info = os_vif_util.nova_to_osvif_instance(instance)
        vif_obj = os_vif_util.nova_to_osvif_vif(vif)

        os_vif.unplug(vif_obj, instance_info)