Integration library between network (Neutron) and compute (Nova) providers
Go to file
Rawlin Peters 3d62d8e23c Ensure the OVS bridge exists when plugging
When a vif will be plugged into an OVS bridge, ensure that the bridge
exists during the plugging operation. In most cases, the OVS bridge will
already exist at the time of port creation, so this will be a no-op.
However, the OVS agent implementation for vlan-aware VMs will require
the os-vif plugin to create the OVS bridge if it doesn't already exist,
because vifs that correspond to trunk ports won't be directly plugged
into br-int.

Change-Id: I3cb61a5e842177a26f38c85d7782ecced4ac07da
2016-06-23 11:18:54 -06:00
doc/source Start using reno for release notes 2016-05-03 13:53:29 +01:00
os_vif os_vif: fix logging of exceptions during plug/unplug 2016-06-09 11:35:31 +01:00
releasenotes Ensure the OVS bridge exists when plugging 2016-06-23 11:18:54 -06:00
vif_plug_linux_bridge linux_bridge: convert over to use privsep module 2016-04-04 12:42:16 +01:00
vif_plug_ovs Ensure the OVS bridge exists when plugging 2016-06-23 11:18:54 -06:00
.coveragerc Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
.gitignore Start using reno for release notes 2016-05-03 13:53:29 +01:00
.gitreview Added .gitreview 2015-11-11 16:10:58 +00:00
.mailmap Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
.testr.conf Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
babel.cfg Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
CONTRIBUTING.rst Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
HACKING.rst Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
LICENSE Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
MANIFEST.in Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
openstack-common.conf Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
README.rst Provide plugins an oslo_config group for their setup 2016-02-16 11:06:58 +00:00
requirements.txt Updated from global requirements 2016-06-10 15:48:25 +00:00
setup.cfg vif_plug_ovs: merge both plugins into one 2016-04-04 17:57:39 +01:00
setup.py Updated from global requirements 2016-05-23 12:03:15 +00:00
test-requirements.txt Updated from global requirements 2016-05-23 12:03:15 +00:00
tox.ini Start using reno for release notes 2016-05-03 13:53:29 +01:00

os-vif

A library for plugging and unplugging virtual interfaces in OpenStack.

Features

  • A base VIF plugin class that supplies a plug() and unplug() interface
  • Versioned objects that represent a virtual interface and its components

Usage

The interface to the os_vif library is very simple. To begin using the library, first call the os_vif.initialize() function. This will load all installed plugins and register the object model:

import os_vif

os_vif.initialize()

Once the os_vif library is initialized, there are only two other library functions: os_vif.plug() and os_vif.unplug(). Both methods accept a single argument of type `os_vif.objects.VIF`:

import uuid

from nova import objects as nova_objects
from os_vif import exception as vif_exc
from os_vif import objects as vif_objects
from os_vif import vnic_types

instance_uuid = 'd7a730ca-3c28-49c3-8f26-4662b909fe8a'
instance = nova_objects.Instance.get_by_uuid(instance_uuid)
instance_info = vif_objects.InstanceInfo(
    uuid=instance.uuid,
    name=instance.name,
    project_id=instance.project_id)

subnet = vif_objects.Subnet(cidr='192.168.1.0/24')
subnets = vif_objects.SubnetList([subnet])
network = vif_objects.Network(label='tenantnet',
                              subnets=subnets,
                              multi_host=False,
                              should_provide_vlan=False,
                              should_provide_bridge=False)

vif_uuid = uuid.uuid4()
vif = vif_objects.VIFVHostUser(id=vif_uuid,
                               address=None,
                               network=network,
                               plugin='vhostuser',
                               path='/path/to/socket',
                               mode=vif_objects.fields.VIFVHostUserMode.SERVER)

# Now do the actual plug operations to connect the VIF to
# the backing network interface.
try:
    os_vif.plug(vif)
except vif_exc.PlugException as err:
    # Handle the failure...

# If you are removing a virtual machine and its interfaces,
# you would use the unplug() operation:
try:
    os_vif.unplug(vif)
except vif_exc.UnplugException as err:
    # Handle the failure...