Integration library between network (Neutron) and compute (Nova) providers
Go to file
Daniel P. Berrange faf3a0a029 tox: ignore E126, E127, E128 indentation checks
The flake8 E126, E127, E128 checks are all checking various
aspects of indentation, but they are mutually inconsistent
with each other - ie fixing one causes a violation in the
other. They are all counter to normal Nova coding style and
ignored in Nova, so kill them in os-vif too.

Change-Id: Ib28652de17329141d437a3354e60f3b0f5f53968
2016-01-28 16:12:21 +00:00
doc/source Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
os_vif Fix logic getting access to stevedore loaded plugin instance 2016-01-28 16:12:21 +00:00
.coveragerc Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
.gitignore Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05: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 Add formal classes for each of the types of VIF backend config 2016-01-28 16:12:18 +00:00
requirements.txt don't catch ProcessExecutionError exception as special case 2016-01-18 13:32:33 +00:00
setup.cfg remove python 2.6 trove classifier 2016-01-14 19:50:08 +00:00
setup.py Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
test-requirements.txt Import of code from https://github.com/jaypipes/os_vif 2016-01-13 12:56:01 -05:00
tox.ini tox: ignore E126, E127, E128 indentation checks 2016-01-28 16:12:21 +00: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, supplying a set of keyword arguments for configuration options:

import os_vif

os_vif.initialize(libvirt_virt_type='kvm',
                  network_device_mtu=1500,
                  vlan_interface='eth1',
                  use_ipv6=False,
                  iptables_top_regex='',
                  iptables_bottom_regex='',
                  iptables_drop_action='DROP',
                  forward_bridge_interface=['all'])

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...