
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
68 lines
2.3 KiB
ReStructuredText
68 lines
2.3 KiB
ReStructuredText
=====
|
|
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:
|
|
|
|
.. code-block:: python
|
|
|
|
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``:
|
|
|
|
.. code-block:: python
|
|
|
|
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...
|