os-vif/doc/source/user/usage.rst
Eric Fried 8d7c0d548d doc: Fix arg specs and object types in docs
The usage doc stated that plug and unplug accept a single argument of
type `os_vif.objects.VIF`, which isn't a thing, and then went on to give
an example showing that they take two.  The usage doc and the plug and
unplug docstrings also listed various objects at the wrong paths (e.g.
the `instance_info` param being of type `os_vif.objects.InstanceInfo`,
which also isn't a thing).

Fixed up the usage doc to list both arguments and correct the references
in the sample code; and fixed the plug/unplug docstrings
to list the proper paths to classes: os_vif.objects.vif.VIFBase and
os_vif.objects.instance_info.InstanceInfo.

Made everything in `single backticks` into a proper rst ``literal``.

Change-Id: I400838bbe9663917fe2c64f52975b77a370405b4
2018-07-16 17:55:22 +01:00

2.3 KiB

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 an argument of (a subclass of) type os_vif.objects.vif.VIFBase and an argument of type os_vif.objects.instance_info.InstanceInfo:

import uuid

from nova import objects as nova_objects
from os_vif import exception as vif_exc
from os_vif.objects import fields
from os_vif.objects import instance_info
from os_vif.objects import network
from os_vif.objects import subnet
from os_vif.objects import vif as vif_obj

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

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

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

# Now do the actual plug operations to connect the VIF to
# the backing network interface.
try:
    os_vif.plug(vif, instance_info)
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, instance_info)
except vif_exc.UnplugException as err:
    # Handle the failure...