Welcome to the Lago project documentation!¶
Lago Introduction¶
Lago is an add-hoc virtual framework which helps you build virtualized environments on your server or laptop for various use cases.
It currently utilizes ‘libvirt’ for creating VMs, but we are working on adding more providers such as ‘containers’.
Getting started¶
Installing Lago¶
You’ll notice that some of the actions you need to do to run Lago are currently manual, but we are working to add them as part of the standard Python packaging for Lago which is in progress.
Setting up yum repos¶
Currently only RPM installation is available but we are working on adding support for Ubuntu and Debian soon.
Add the following repos to a lago.repo file in your /etc/yum.repos.d/ dir:
For Fedora:
[lago]
baseurl=http://resources.ovirt.org/repos/lago/stable/0.0/rpm/fc$releasever
name=Lago
enabled=1
gpgcheck=0
For EL distros (such as CentOS, RHEL, etc.), make sure you have epel-release and centos-release-qemu-ev repositories installed and enabled, and:
[lago]
baseurl=http://resources.ovirt.org/repos/lago/stable/0.0/rpm/el$releasever
name=Lago
enabled=1
gpgcheck=0
Installing the packages¶
Once you have them, install the following packages:
$ yum install python-lago lago
This will install all the needed packages to get you up and running with Lago.
Configuring Libvirt¶
Make sure libvirt is configured to run:
$ systemctl enable libvirtd
$ systemctl start libvirtd
User permissions setup¶
Running lago requires certain permissions, so the user running it should be part of certain groups.
Add yourself to lago and qemu groups:
$ usermod -a -G lago USERNAME
$ usermod -a -G qemu USERNAME
It is also advised to add qemu user to your group (to be able to store VM files in home directory):
$ usermod -a -G USERNAME qemu
For the group changes to take place, you’ll need to re-login to the shell. Make sure running id returns all the aforementioned groups.
Make sure that the qemu user has execution rights to the dir where you will be creating the prefixes, you can try it out with:
$ sudo -u qemu ls /path/to/the/destination/dir
If it can’t access it, make sure that all the dirs in the path have your user or qemu groups and execution rights for the group, or execution rights for other (highly recommended to use the group instead, if the dir did not have execution rights for others already)
It’s very common for the user home directory to not have group execution rights, to make sure you can just run:
$ chmod g+x $HOME
And, just to be sure, let’s refresh libvirtd service to ensure that it refreshes it’s permissions and picks up any newly created users:
$ sudo service libvirtd restart
LagoInitFile¶
Each environment in Lago is created from an init file, the recommended format
is YAML, although at the moment of writing JSON is still supported. By default,
Lago will look for a file named LagoInitFile
in the directory it was
triggered. However you can pick a different file by running:
$ lago init <FILENAME>
Also note that you can create different prefixes in the same environment, by
using the --prefix-name
option:
$ lago --prefix-name env1 init LagoInitFile-el73
$ lago --prefix-name env2 init LagoInitFile-fc24
To change the default environment run:
$ lago set-current ENV_NAME
LagoInitFile example¶
domains:
vm-el73:
memory: 2048
service_provider: systemd
nics:
- net: lago
disks:
- template_name: el7.3-base
type: template
name: root
dev: vda
format: qcow2
artifacts:
- /var/log
nets:
lago:
type: nat
dhcp:
start: 100
end: 254
management: true
dns_domain_name: lago.local
LagoInitFile
Syntax¶
Disclaimer: Work in progress
domains
section¶
vcpu
: Number of virtual CPUs.cpu_model: <model>
: This defines an exact match of a CPU model. The generated Libvirt<cpu>
XML will be:<cpu> <model>Westmere</model> <topology cores="1" sockets="3" threads="1"/> <feature name="vmx" policy="require"/> </cpu>
If the vendor of the host CPU and the selected model match, it will attempt to require
vmx
on Intel CPUs andsvm
on AMD CPUs, assuming the host CPU has that feature. The topology node will be generated with sockets equals tovcpu
parameter, by default it is set to2
.cpu_custom
: This allows to override entirely the CPU definition, by writing the domain CPU XML in YAML syntax, for example, for the following LagoInitFile:domains: vm-el73: vcpu: 2 cpu_custom: '@mode': custom '@match': exact model: '@fallback': allow '#text': Westmere feature: '@policy': optional '@name': 'vmx' numa: cell: - '@id': 0 '@cpus': 0 '@memory': 2048 '@unit': 'MiB' - '@id': 1 '@cpus': 1 '@memory': 2048 '@unit': 'MiB' ...
This will be the generated
<cpu>
XML:<cpu mode="custom" match="exact"> <model fallback="allow">Westmere</model> <feature policy="optional" name="vmx"/> <numa> <cell id="0" cpus="0" memory="2048" unit="MiB"/> <cell id="1" cpus="1" memory="2048" unit="MiB"/> </numa> <topology cores="1" sockets="2" threads="1"/> </cpu> <vcpu>2</vcpu>
The conversion is pretty straight-forward,
@
maps to attribute, and#text
to text fields. Iftopology
section is not defined, it will be added.No
cpu_custom
orcpu_model
: Then Libvirt’shost-passthrough
will be used. For more information see: Libvirt CPU model
Getting started with some Lago Examples!¶
Get Lago up & running in no time using one of the available examples
Important: make sure you followed the installation step before to have Lago installed.
Available Examples¶
- Simple Jenkins server + slaves: Jenkins_Example
- Advanced oVirt example (using nested virtualization): oVirt_Example
Configuration¶
The recommend method to override the configuration file is by letting lago auto-generate them:
$ mkdir -p $HOME/.config/lago
$ lago generate-config > $HOME/.config/lago/lago.conf
This will dump the current configuration to $HOME/.config/lago/lago.conf
,
and you may edit it to change any parameters. Take into account you should
probably comment out parameters you don’t want to change when editing the file.
Also, all parameters in the configuration files can be overridden by passing
command line arguments or with environment variables, as described below.
lago.conf format¶
Lago runs without a configuration file by default, for reference-purposes,
when lago is installed from the official packages(RPM or DEB),
a commented-out version of lago.conf(INI format) is installed at
/etc/lago/lago.conf
.
In lago.conf
global parameters are found under the [lago]
section.
All other sections usually map to subcommands(i.e. lago init
command
would be under [init]
section).
Example:
$ lago generate-config
> [lago]
> # log level to use
> loglevel = info
> logdepth = 3
> ....
> [init]
> # location to store repos
> template_repos = /var/lib/lago/repos
> ...
lago.conf look-up¶
Lago attempts to look lago.conf
in the following order:
/etc/lago/lago.conf
- According to XDG standards , which are by default:
/etc/xdg/lago/lago.conf
/home/$USER/.config/lago/lago.conf
- Any environment variables.
- CLI passed arguments.
If more than one file exists, all files are merged, with the last occurrence of any parameter found used.
Overriding parameters with environment variables¶
To differentiate between the root section in the configuration file, lago uses the following format to look for environment variables:
'LAGO_GLOBAL_VAR' -> variable in [lago] section
'LAGO__SUBCOMMAND__PARAM_1' -> variable in [subcommand] section
Example: changing the template_store
which init
subcommand uses to
store templates:
# check current value:
$ lago generate-config | grep -A4 "init"
> [init]
> # location to store repos
> template_repos = /var/lib/lago/repos
> # location to store temp
> template_store = /var/lib/lago/store
$ export LAGO__INIT__TEMPLATE_STORE=/var/tmp
$ lago generate-config | grep -A4 "init"
> [init]
> # location to store repos
> template_repos = /var/lib/lago/repos
> # location to store temp
> template_store = /var/tmp
Debugging Lago Environment¶
Now that you’ve run any of the examples, you probably eager to dive into
the Lago environment and checkout the created VMs and resources.
This document will give you a taste of how to do it, but if you’re interested<br> In a deeper view, please checkout the full Lago tutorial (TBD).
We’ll use the oVirt example for explaining how to debug the environment created.
Debugging the Lago environment created by oVirt system tests¶
As the above script has become a bit complicated, and it’s not (yet) part of Lago itself, this section will do the same as the script, but step by step with Lago only command to give you a better idea of what you have to do in a usual project.
So, let’s get back to the root of the ovirt-system-tests repo, and cd into the basic_suite_4.0 dir:
cd ovirt-system-tests/basic_suite_4.0
Let’s take a look to what is in there:
$ tree
.
├── control.sh
├── deploy-scripts
│ ├── add_local_repo.sh
│ ├── bz_1195882_libvirt_workaround.sh
│ ├── setup_container_host.sh
│ ├── setup_engine.sh
│ ├── setup_host.sh
│ ├── setup_storage_iscsi.sh
│ └── setup_storage_nfs.sh
├── engine-answer-file.conf
├── init.json.in
├── reposync-config.repo
├── template-repo.json
└── test-scenarios
├── 001_initialize_engine.py
├── 002_bootstrap.py
├── 003_create_clean_snapshot.py
└── 004_basic_sanity.py
We can ignore the control.sh script, as it’s used by the run_suite.sh and we don’t care about that in this readme.
init.json.in: The heart of lago, virt configurations¶
This init.json.in file, is where we will describe all the virtual elements of our test environment, usually, vms and networks.
In this case, as the file is shared between suites, it’s actually a template and we will have to change the @SUITE@ string inside it by the path to the current suite:
$ suite_path=$PWD
$ sed -e "s/@SUITE@/$suite_path/g" init.json.in > init.json
Now we have a full init.json file :), but we have to talk about another file before being able to create the prefix:
Note that lago supports json and yaml formats for that file.
template-repo.json: Sources for templates¶
This file contains information about the available disk templates and repositories to get them from, we can use it as it is, but if you are in Red Hat office in Israel, you might want to use the Red Hat internal mirrors there, for that use the common/template-repos/office.json file instead, see next for the full command line.
NOTE: You can use any other template repo if you specify your own json file there
Initializing the prefix¶
Now we have seen all the files needed to initialize our test prefix (aka, the directory that will contain our env). To do so we have to run this:
$ lagocli init \
--template-repo-path=template-repo.json \
deployment-basic_suite_4.0 \
init.json
Remember that if you are in the Red Hat office, you might want to use the repo mirror that’s hosted there, if so, run this command instead:
$ lagocli init \
--template-repo-path=common/template-repos/office.json \
deployment-basic_suite_4.0 \
init.json
This will create the deployment-basic_suite_4.0 directory and populate it with all the disks defined in the init.json file, and some other info (network info, uuid... not relevant now).
This will take a while the first time, but the next time it will use locally cached images and will take only a few seconds!
If you are using run_suite.sh¶
To use an alternate repository template file when running run_suite.sh, you’ll have to edit it for now, search for the init command invocation and modify it there, at the time of writing this, if you want to use the Red Hat Israel office mirror, you have to change this:
38 env_init () {
39 $CLI init \
40 $PREFIX \
41 $SUITE/init.json \
42 --template-repo-path $SUITE/template-repo.json
43 }
by:
env_init () {
$CLI init \
$PREFIX \
$SUITE/init.json \
--template-repo-path common/template-repos/office.json
}
reposync-config.repo: yum repositories to make available to the vms¶
This file contains a valid yum repos definition, it’s the list of all the yum repos that will be enabled on the vms to pull from. If you want to use any custom repos just add the yum repo entry of your choice there and it will be make accessible to the vms.
The internal repository is built from one or several ‘sources’, there are 2 types of sources:
External RPM repositories:
A yum .repo file can be passed to the verb, and all the included repositories will be downloaded using ‘reposync’ and added to the internal repo.
This is used by the ovirt reposetup verb. To prefetch and generate the local repo, we have to run it:
$ lagocli ovirt reposetup --reposync-yum-config="reposync-config.repo"
This might take a while the first time too, as it has to fetch a few rpms from a few repos, next time it will also use a cache to speed things up considerably.
NOTE: From now on, all the lagocli command will be run inside the prefix, so cd to it:
$ cd deployment-basic_suite_4.0
Bring up the virtual resources¶
We are ready to start powering up vms!
# make sure you are in the prefix
$ pwd
/path/to/ovirt-system-tests/deployment-basic_suite_4.0
$ lagocli start
This starts all resources (VMs, bridges), at any time, you can use the stop verb to stop all active resources.
Run oVirt initial setup scripts¶
Once all of our vms and network are up and running, we have to run any setup scripts that will configure oVirt in the machines, as we already described in the init.json what scripts should be executed, the only thing left is to trigger it:
$ lagocli ovirt deploy
This should be relatively fast, around a minute or two, for everything to get installed and configured
Running the tests¶
Okok, so now we have our environment ready for the tests!! \o/
Lets get it on, remember that they should be executed in order:
$ lagocli ovirt runtest 001_initialize_engine.py
...
$ lagocli ovirt runtest 002_bootstrap.py
...
$ lagocli ovirt runtest 003_create_clean_snapshot.py
...
$ lagocli ovirt runtest 004_basic_sanity.py
...
This tests run a simple test suite on the environment:
- Create a new DC and cluster
- Deploy all the hosts
- Add storage domains
- Import templates
The tests are written in python and interact with the environment using the python SDK.
Collect the logs¶
So now we want to collect all the logs from the vms, to troubleshoot and debug if needed (or just to see if they show what we expect). To do so, you can just:
$ lagocli ovirt collect \
--output "test_logs"
We can run that command anytime, you can run it in between the tests also, specifying different output directories if you want to see the logs during the process or compare later with the logs once the tests finish.
You can see all the logs now in the dir we specified:
$ tree test_logs
test_logs/
├── engine
│ └── _var_log_ovirt-engine
│ ├── boot.log
│ ├── console.log
│ ├── dump
│ ├── engine.log
│ ├── host-deploy
│ ├── notifier
│ ├── ovirt-image-uploader
│ ├── ovirt-iso-uploader
│ ├── server.log
│ └── setup
│ └── ovirt-engine-setup-20151029122052-7g9q2k.log
├── host0
│ └── _var_log_vdsm
│ ├── backup
│ ├── connectivity.log
│ ├── mom.log
│ ├── supervdsm.log
│ ├── upgrade.log
│ └── vdsm.log
├── host1
│ └── _var_log_vdsm
│ ├── backup
│ ├── connectivity.log
│ ├── mom.log
│ ├── supervdsm.log
│ ├── upgrade.log
│ └── vdsm.log
├── host2
│ └── _var_log_vdsm
│ ├── backup
│ ├── connectivity.log
│ ├── mom.log
│ ├── supervdsm.log
│ ├── upgrade.log
│ └── vdsm.log
├── host3
│ └── _var_log_vdsm
│ ├── backup
│ ├── connectivity.log
│ ├── mom.log
│ ├── supervdsm.log
│ ├── upgrade.log
│ └── vdsm.log
├── storage-iscsi
└── storage-nfs
Cleaning up¶
As before, once you have finished playing with the prefix, you will want to clean it up (remember to play around!), to do so just:
$ lagocli cleanup
FAQ¶
How do I know if the
run_suite.sh
is stuck or still running?Sometimes the script is downloading very big files which might Seem to someone as the script is stuck. One hacky way of making sure the script is still working is to check the size and content of the store dir:
$ ls -la /var/lib/lago/store
This will show any templates being downloaded and file size changes.
Developing¶
CI Process¶
Here is described the usual workflow of going through the CI process from starting a new branch to getting it merged and released in the unstable repo.
Starting a branch¶
First of all, when starting to work on a new feature or fix, you have to start a new branch (in your fork if you don’t have push rights to the main repo). Make sure that your branch is up to date with the project’s master:
git checkout -b my_fancy_feature
# in case that origin is already lago-project/lago
git reset --hard origin/master
Then, once you can just start working, doing commits to that branch, and pushing to the remote from time to time as a backup.
Once you are ready to run the ci tests, you can create a pull request to master branch, if you have hub installed you can do so from command line, if not use the ui:
$ hub pull-request
That will automatically trigger a test run on ci, you’ll see the status of the run in the pull request page. At that point, you can keep working on your branch, probably just rebasing on master regularly and maybe amending/squashing commits so they are logically meaningful.
A clean commit history¶
An example of not good pull request history:
- Added right_now parameter to virt.VM.start function
- Merged master into my_fancy_feature
- Added tests for the new parameter case
- Renamed right_now parameter to sudo_right_now
- Merged master into my_fancy_feature
- Adapted test to the rename
This history can be greatly improved if you squashed a few commits:
- Added sudo_right_now parameter to virt.VM.start function
- Added tests for the new parameter case
- Merged master into my_fancy_feature
- Merged master into my_fancy_feature
And even more if instead of merging master, you just rebased:
- Added sudo_right_now parameter to virt.VM.start function
- Added tests for the new parameter case
That looks like a meaningful history :)
Rerunning the tests¶
While working on your branch, you might want to rerun the tests at some point, to do so, you just have to add a new comment to the pull request with one of the following as content:
- ci test please
- ci :+1:
- ci :thumbsup:
Asking for reviews¶
If at any point, you see that you are not getting reviews, please add the label ‘needs review’ to flag that pull request as ready for review.
Getting the pull request merged¶
Once the pull request has been reviewed and passes all the tests, an admin can start the merge process by adding a comment with one of the following as content:
- ci merge please
- ci :shipit:
That will trigger the merge pipeline, that will run the tests on the merge commit and deploy the artifacts to the unstable repo on success.
Environment setup¶
Here are some guidelines on how to set up your development of the lago project.
Requirements¶
You’ll need some extra packages to get started with the code for lago, assuming you are runnig Fedora:
> sudo dnf install git mock libvirt-daemon qemu-kvm autotools
And you’ll need also a few Python libs, which you can install from the repos or use venv or similar, for the sake of this example we will use the repos ones:
> sudo dnf install python-flake8 python-nose python-dulwich yapf
Yapf is not available on older Fedoras or CentOS, you can get it from the official yapf repo or try on copr.
Now you are ready to get the code:
> git clone git@github.com:lago-project/lago.git
From now on all the commands will be based from the root of the cloned repo:
> cd lago
Style formatting¶
We will accept only patches that pass pep8 and that are formatted with yapf. More specifically, only patches that pass the local tests:
> make check-local
It’s recommended that you setup your editor to check automatically for pep8 issues. For the yapf formatting, if you don’t want to forget about it, you can install the pre-commit git hook that comes with the project code:
> ln -s scripts/pre-commit.style .git/pre-commit
Now each time that you run git commit it will automatically reformat the code you changed with yapf so you don’t have any issues when submitting a patch.
Testing your changes¶
Once you do some changes, you should make sure they pass the checks, there’s no need to run on each edition but before submitting a patch for review you should do it.
You can run them on your local machine, but the tests themselves will install packages and do some changes to the os, so it’s really recommmended that you use a vm, or as we do on the CI server, use mock chroots. If you don’t want to setup mock, skip the next section.
Hopefully in a close future we can use lago for that ;)
Setting up mock_runner.sh with mock (fedora)¶
For now we are using a script developed by the oVirt devels to generate chroots and run tests inside them, it’s not packaged yet, so we must get the code itself:
> cd ..
> git clone git://gerrit.ovirt.org/jenkins
As an alternative, you can just download the script and install them in your $PATH:
> wget https://gerrit.ovirt.org/gitweb?p=jenkins.git;a=blob_plain;f=mock_configs/mock_runner.sh;hb=refs/heads/master
We will need some extra packages:
> sudo dnf install mock
And, if not running as root (you shouldn’t!) you have to add your user to the newly created mock group, and make sure the current session is in that group:
> sudo usermod -a -G mock $USER
> newgrp mock
> id # check that mock is listed
Running the tests inside mock¶
Now we have all the setup we needed, so we can go back to the lago repo and run the tests, the first time you run them, it will take a while to download all the required packages and install them in the chroot, but on consecutive runs it will reuse all the cached chroots.
The mock_runner.sh script allows us to test also different distributions, any that is supported by mock, for example, to run the tests for fedora 23 you can run:
> ../jenkins/mock_runner.sh -p fc23
That will run all the check-patch.sh (the -p option) tests inside a chroot, with a minimal fedora 23 installation. It will leave any logs under the logs directory and any generated artifacts under exported-artifacts.
Getting started developing¶
Everyone is welcome to send patches to lago, but we know that not everybody knows everything, so here’s a reference list of technologies and methodologies that lago uses for reference.
Python!¶
Lago is written in python 2.7 (for now), so you should get yourself used to basic-to-medium python constructs and technics like:
- Basic python: Built-in types, flow control, pythonisms (import this)
- Object oriented programming (OOP) in python: Magic methods, class inheritance
Some useful resources:
Base docs: https://docs.python.org/2.7/
Built-in types: https://docs.python.org/2.7/library/stdtypes.html
About classes: https://docs.python.org/2.7/reference/datamodel.html#new-style-and-classic-classes
The Zen of Python:
> python -c "import this" The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
Bash¶
Even though there is not much bash code, the functional tests and some support scripts use it, so better to get some basics on it. We will try to follow the same standards for it than the oVirt project has.
Libvirt + qemu/kvm¶
As we are using intesively libvirt and qemu/kvm, it’s a good idea to get yourself familiar with the main commands and services:
- libvirt: http://libvirt.org
- virsh client: http://libvirt.org/virshcmdref.html
- qemu (qemu-img is useful to deal with vm disk images): https://en.wikibooks.org/wiki/QEMU/Images
Also, there’s a library and a set of tools from the libguestfs project that we use to prepare templates and are very useful when debugging, make sure you play at least with virt-builder, virt-customize, virt-sparsify and guestmount.
Git + Github¶
We use git as code version system, and we host it on Github right now, so if you are not familiar with any of those tools, you should get started with them, specially you should be able to:
- Clone a repo from github
- Fork a repo from github
- Create/delete/move to branches (git checkout)
- Move to different points in git history (git reset)
- Create/delete tags (git tag)
- See the history (git log)
- Create/amend commits (git commit)
- Retrieve changes from the upstream repository (git fetch)
- Apply your changes on top of the retrieved ones (git rebase)
- Apply your changes as a merge commit (git merge)
- Squash/reorder existing commits (git rebase –interactive)
- Send your changes to the upstream (git push)
- Create a pull request
You can always go to the git docs though there is a lot of good literature on it too.
Unit tests with py.test¶
Lately we decided to use py.test for the unit tests, and all the current unit tests were migrated to it. We encourage adding unit tests to any pull requests you send.
Functional tests with bats¶
For the functional tests, we decided to use bats framework. It’s completely written in bash, and if you are modifying or adding any functionality, you should add/modify those tests accordingly. It has a couple of custom constructs, so take a look to the bats docs while reading/writing tests.
Packaging¶
Our preferred distribution vector is though packages. Right now we are only building for rpm-based system, so right now you can just take a peek on how to build rpms. Keep in mind also that we try to move as much of the packaging logic as posible to the python packaging system itself too, worth getting used to it too.
Where to go next¶
You can continue setting up your environment and try running the examples in the readme to get used to lago. Once you get familiar with it, you can pick any of the existing issues and send a pull request to fix it, so you get used to the ci process we use to get stuff developed flawlessly and quickly, welcome!
Contents¶
lago package¶
Subpackages¶
lago.plugins package¶
-
exception
lago.plugins.
NoSuchPluginError
[source]¶ Bases:
lago.plugins.PluginError
-
lago.plugins.
PLUGIN_ENTRY_POINTS
= {'vm': 'lago.plugins.vm', 'vm-service': 'lago.plugins.vm_service', 'vm-provider': 'lago.plugins.vm_provider', 'cli': 'lago.plugins.cli', 'out': 'lago.plugins.output'}¶ Map of plugin type string -> setuptools entry point
-
exception
lago.plugins.
PluginError
[source]¶ Bases:
exceptions.Exception
-
lago.plugins.
load_plugins
(namespace, instantiate=True)[source]¶ Loads all the plugins for the given namespace
Parameters: Returns: Returns the list of loaded plugins
Return type: dict of str, object
Submodules¶
lago.plugins.cli module¶
About CLIPlugins
A CLIPlugin is a subcommand of the lagocli command, it’s ment to group actions together in a logical sense, for example grouping all the actions done to templates.
To create a new subcommand for testenvcli you just have to subclass the CLIPlugin abstract class and declare it in the setuptools as an entry_point, see this module’s setup.py/setup.cfg for an example:
class NoopCLIplugin(CLIPlugin):
init_args = {
'help': 'dummy help string',
}
def populate_parser(self, parser):
parser.addArgument('--dummy-flag', action='store_true')
def do_run(self, args):
if args.dummy_flag:
print "Dummy flag passed to noop subcommand!"
else:
print "Dummy flag not passed to noop subcommand!"
You can also use decorators instead, an equivalent is:
@cli_plugin_add_argument('--dummy-flag', action='store_true')
@cli_plugin(help='dummy help string')
def my_fancy_plugin_func(dummy_flag, **kwargs):
if dummy_flag:
print "Dummy flag passed to noop subcommand!"
else:
print "Dummy flag not passed to noop subcommand!"
Or:
@cli_plugin_add_argument('--dummy-flag', action='store_true')
def my_fancy_plugin_func(dummy_flag, **kwargs):
"dummy help string"
if dummy_flag:
print "Dummy flag passed to noop subcommand!"
else:
print "Dummy flag not passed to noop subcommand!"
Then you will need to add an entry_points section in your setup.py like:
setup(
...
entry_points={
'lago.plugins.cli': [
'noop=noop_module:my_fancy_plugin_func',
],
}
...
)
Or in your setup.cfg like:
[entry_points]
lago.plugins.cli =
noop=noop_module:my_fancy_plugin_func
Any of those will add a new subcommand to the lagocli command that can be run as:
$ lagocli noop
Dummy flag not passed to noop subcommand!
TODO: Allow per-plugin namespacing to get rid of the **kwargs parameter
-
class
lago.plugins.cli.
CLIPlugin
[source]¶ Bases:
lago.plugins.Plugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
do_run
(args)[source]¶ Execute any actions given the arguments
Parameters: args (Namespace) – with the arguments Returns: None
-
init_args
¶ Dictionary with the argument to initialize the cli parser (for example, the help argument)
-
-
class
lago.plugins.cli.
CLIPluginFuncWrapper
(do_run=None, init_args=None)[source]¶ Bases:
lago.plugins.cli.CLIPlugin
Special class to handle decorated cli plugins, take into account that the decorated functions have some limitations on what arguments can they define actually, if you need something complicated, used the abstract class
CLIPlugin
instead.Keep in mind that right now the decorated function must use **kwargs as param, as it will be passed all the members of the parser, not just whatever it defined
-
__call__
(*args, **kwargs)[source]¶ Keep the original function interface, so it can be used elsewhere
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
init_args
¶
-
-
lago.plugins.cli.
cli_plugin
(func=None, **kwargs)[source]¶ Decorator that wraps the given function in a
CLIPlugin
Parameters: - func (callable) – function/class to decorate
- **kwargs – Any other arg to use when initializing the parser (like help, or prefix_chars)
Returns: cli plugin that handles that method
Return type: Notes
It can be used as a decorator or as a decorator generator, if used as a decorator generator don’t pass any parameters
Examples
>>> @cli_plugin ... def test(**kwargs): ... print 'test' ... >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'>
>>> @cli_plugin() ... def test(**kwargs): ... print 'test' >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'>
>>> @cli_plugin(help='dummy help') ... def test(**kwargs): ... print 'test' >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'> >>> print test.init_args['help'] 'dummy help'
-
lago.plugins.cli.
cli_plugin_add_argument
(*args, **kwargs)[source]¶ Decorator generator that adds an argument to the cli plugin based on the decorated function
Parameters: - *args – Any args to be passed to
argparse.ArgumentParser.add_argument()
- *kwargs – Any keyword args to be passed to
argparse.ArgumentParser.add_argument()
Returns: - Decorator that builds or extends the cliplugin for the
decorated function, adding the given argument definition
Return type: function
Examples
>>> @cli_plugin_add_argument('-m', '--mogambo', action='store_true') ... def test(**kwargs): ... print 'test' ... >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'> >>> print test._parser_args [(('-m', '--mogambo'), {'action': 'store_true'})]
>>> @cli_plugin_add_argument('-m', '--mogambo', action='store_true') ... @cli_plugin_add_argument('-b', '--bogabmo', action='store_false') ... @cli_plugin ... def test(**kwargs): ... print 'test' ... >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'> >>> print test._parser_args [(('-b', '--bogabmo'), {'action': 'store_false'}), (('-m', '--mogambo'), {'action': 'store_true'})]
- *args – Any args to be passed to
-
lago.plugins.cli.
cli_plugin_add_help
(help)[source]¶ Decorator generator that adds the cli help to the cli plugin based on the decorated function
Parameters: help (str) – help string for the cli plugin Returns: - Decorator that builds or extends the cliplugin for the
- decorated function, setting the given help
Return type: function Examples
>>> @cli_plugin_add_help('my help string') ... def test(**kwargs): ... print 'test' ... >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'> >>> print test.help my help string
>>> @cli_plugin_add_help('my help string') ... @cli_plugin() ... def test(**kwargs): ... print 'test' >>> print test.__class__ <class 'cli.CLIPluginFuncWrapper'> >>> print test.help my help string
lago.plugins.output module¶
About OutFormatPlugins
An OutFormatPlugin is used to format the output of the commands that extract information from the perfixes, like status.
-
class
lago.plugins.output.
DefaultOutFormatPlugin
[source]¶ Bases:
lago.plugins.output.OutFormatPlugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
indent_unit
= ' '¶
-
-
class
lago.plugins.output.
FlatOutFormatPlugin
[source]¶ Bases:
lago.plugins.output.OutFormatPlugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
format
(info_dict, delimiter='/')[source]¶ This formatter will take a data structure that represent a tree and will print all the paths from the root to the leaves
in our case it will print each value and the keys that needed to get to it, for example:
- vm0:
- net: lago memory: 1024
will be output as:
vm0/net/lago vm0/memory/1024
- Args:
- info_dict (dict): information to reformat delimiter (str): a delimiter for the path components
- Returns:
- str: String representing the formatted info
-
-
class
lago.plugins.output.
JSONOutFormatPlugin
[source]¶ Bases:
lago.plugins.output.OutFormatPlugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
lago.plugins.service module¶
This plugins are used in order to manage services in the vms
-
class
lago.plugins.service.
ServicePlugin
(vm, name)[source]¶ Bases:
lago.plugins.Plugin
-
BIN_PATH
¶ Path to the binary used to manage services in the vm, will be checked for existence when trying to decide if the serviece is supported on the VM (see func:is_supported).
Returns: Full path to the binary insithe the domain Return type: str
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_request_start
()[source]¶ Low level implementation of the service start request, used by the func:start method
Returns: True if the service succeeded to start, False otherwise Return type: bool
-
_request_stop
()[source]¶ Low level implementation of the service stop request, used by the func:stop method
Returns: True if the service succeeded to stop, False otherwise Return type: bool
-
state
()[source]¶ Check the current status of the service
Returns: Which state the service is at right now Return type: ServiceState
-
lago.plugins.vm module¶
There are two VM-related plugin extension points, there’s the VM Type Plugin, that allows you to modify at a higher level the inner workings of the VM class (domain concept in the initfile). The other plugin extension point, the [VM Provider Plugin], that allows you to create an alternative implementation of the provisioning details for the VM, for example, using a remote libvirt instance or similar.
-
exception
lago.plugins.vm.
ExtractPathError
[source]¶ Bases:
lago.plugins.vm.VMError
-
exception
lago.plugins.vm.
ExtractPathNoPathError
[source]¶ Bases:
lago.plugins.vm.VMError
-
exception
lago.plugins.vm.
VMError
[source]¶ Bases:
exceptions.Exception
-
class
lago.plugins.vm.
VMPlugin
(env, spec)[source]¶ Bases:
lago.plugins.Plugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_get_service_provider
()[source]¶ NOTE: Can be reduced to just one get call once we remove support for the service_class spec entry
Returns: class for the loaded provider for that vm_spec None: if no provider was specified in the vm_spec Return type: class
-
disks
¶
-
export_disks
(standalone=True, dst_dir=None, compress=False, *args, **kwargs)[source]¶ Thin method that just uses the provider
-
metadata
¶
-
mgmt_name
¶
-
mgmt_net
¶
-
spec
¶
-
-
class
lago.plugins.vm.
VMProviderPlugin
(vm)[source]¶ Bases:
lago.plugins.Plugin
If you want to use a custom provider for you VMs (say, ovirt for example), you have to inherit from this class, and then define the ‘default_vm_provider’ in your config to be your plugin, or explicitly specify it on each domain definition in the initfile with ‘vm-provider’ key
You will have to override at least all the abstractmethods in order to write a provider plugin, even if they are just runnig pass.
-
bootstrap
(*args, **kwargs)[source]¶ Does any actions needed to get the domain ready to be used, ran on prefix init.
Returns: None
-
create_snapshot
(name, *args, **kwargs)[source]¶ Take any actions needed to create a snapshot
Parameters: name (str) – Name for the snapshot, will be used as key to retrieve it later Returns: None
-
defined
(*args, **kwargs)[source]¶ Return if the domain is defined (libvirt concept), currently used only by the libvirt provider, put here to allow backwards compatibility.
Returns: True if the domain is already defined (libvirt concept) Return type: bool
-
export_disks
(standalone, dst_dir, compress, *args, **kwargs)[source]¶ Export ‘disks’ as a standalone image or a layered image.
Parameters: - disks (list) – The names of the disks to export (None means all the disks)
- standalone (bool) – If true create a copy of the layered image else create a new disk which is a combination of the current layer and the base disk.
- dst_dir (str) – dir to place the exported images
- compress (bool) – if true, compress the exported image.
-
extract_paths
(paths, ignore_nopath)[source]¶ Extract the given paths from the domain
Parameters: - paths (list of str) – paths to extract
- ignore_nopath (boolean) – if True will ignore none existing paths.
Returns: None
Raises: ExtractPathNoPathError
– if a none existing path was found on the VM, andignore_nopath
is True.ExtractPathError
– on all other failures.
-
interactive_console
()[source]¶ Run an interactive console
Returns: resulf of the interactive execution Return type: lago.utils.CommandStatus
-
revert_snapshot
(name, *args, **kwargs)[source]¶ Take any actions needed to revert/restore a snapshot
Parameters: name (str) – Name for the snapshot, same that was set on creation Returns: None
-
-
lago.plugins.vm.
_resolve_service_class
(class_name, service_providers)[source]¶ NOTE: This must be remved once the service_class spec entry is fully deprecated
Retrieves a service plugin class from the class name instead of the provider name
Parameters: Returns: Class of the plugin that matches that name
Return type: class
Raises: lago.plugins.NoSuchPluginError
– if there was no service plugin that matched the search
lago.providers package¶
Subpackages¶
-
class
lago.providers.libvirt.cpu.
CPU
(spec, host_cpu)[source]¶ Bases:
object
-
cpu_xml
¶
-
generate_custom
(cpu, vcpu_num, fill_topology)[source]¶ Generate custom CPU model. This method attempts to convert the dict to XML, as defined by
xmltodict.unparse
method.Parameters: Returns: CPU XML node
Return type: lxml.etree.Element
Raises: LagoInitException
– when failed to convert dict to XML
-
generate_exact
(model, vcpu_num, host_cpu)[source]¶ Generate exact CPU model with nested virtualization CPU feature.
Parameters: Returns: CPU XML node
Return type: lxml.etree.Element
-
generate_feature
(name, policy='require')[source]¶ Generate CPU feature element
Parameters: Returns: feature XML element
Return type: lxml.etree.Element
-
generate_host_passthrough
(vcpu_num)[source]¶ Generate host-passthrough XML cpu node
Parameters: vcpu_num (int) – number of virtual CPUs Returns: CPU XML node Return type: lxml.etree.Element
-
generate_topology
(vcpu_num, cores=1, threads=1)[source]¶ Generate CPU <topology> XML child
Parameters: Returns: topology XML element
Return type: lxml.etree.Element
-
generate_vcpu
(vcpu_num)[source]¶ Generate <vcpu> domain XML child
Parameters: vcpu_num (int) – number of virtual cpus Returns: vcpu XML element Return type: lxml.etree.Element
-
generate_vcpu_xml
(vcpu_num)[source]¶ Parameters: vcpu_num (int) – number of virtual cpus Returns: vcpu XML node Return type: lxml.etree.Element
-
model
¶
-
validate
()[source]¶ Validate CPU-related VM spec are compatible
Raises: LagoInitException
– if both ‘cpu_model’ and ‘cpu’ are defined.
-
vcpu_xml
¶
-
vendor
¶
-
-
class
lago.providers.libvirt.cpu.
LibvirtCPU
[source]¶ Bases:
object
Query data from /usr/share/libvirt/cpu_map.xml
-
classmethod
get_cpu_props
(family, arch='x86')[source]¶ Get CPU info XML
Parameters: Returns: CPU xml
Return type: lxml.etree.Element
Raises: LagoException
– If no such CPU family exists
-
classmethod
-
class
lago.providers.libvirt.network.
Network
(env, spec, compat)[source]¶ Bases:
object
-
spec
¶
-
Utilities to help deal with the libvirt python bindings
-
lago.providers.libvirt.utils.
DOMAIN_STATES
= {<class 'sphinx.ext.autodoc.VIR_DOMAIN_SHUTOFF'>: 'shut off', <class 'sphinx.ext.autodoc.VIR_DOMAIN_PAUSED'>: 'paused', <class 'sphinx.ext.autodoc.VIR_DOMAIN_SHUTDOWN'>: 'beign shut down', <class 'sphinx.ext.autodoc.VIR_DOMAIN_BLOCKED'>: 'blocked', <class 'sphinx.ext.autodoc.VIR_DOMAIN_PMSUSPENDED'>: 'suspended', <class 'sphinx.ext.autodoc.VIR_DOMAIN_NOSTATE'>: 'no state', <class 'sphinx.ext.autodoc.VIR_DOMAIN_RUNNING'>: 'running', <class 'sphinx.ext.autodoc.VIR_DOMAIN_CRASHED'>: 'crashed'}¶ Mapping of domain statuses values to human readable strings
-
class
lago.providers.libvirt.utils.
Domain
[source]¶ Bases:
object
Class to namespace libvirt domain related helpers
-
static
resolve_state
(state_number)[source]¶ Get a nice description from a domain state number
Parameters: state_number (list of int) – State number as returned by libvirt.virDomain.state()
Returns: - small human readable description of the domain state, unknown
- if the state is not in the known list
Return type: str
-
static
-
lago.providers.libvirt.utils.
LIBVIRT_CONNECTIONS
= {}¶ Singleton with the cached opened libvirt connections
-
class
lago.providers.libvirt.vm.
LocalLibvirtVMProvider
(vm)[source]¶ Bases:
lago.plugins.vm.VMProviderPlugin
-
_shutdown
(libvirt_cmd, ssh_cmd, msg)[source]¶ Choose the invoking method (using libvirt or ssh) to shutdown / poweroff the domain.
If acpi is defined in the domain use libvirt, otherwise use ssh.
Parameters: - libvirt_cmd (function) – Libvirt function the invoke
- ssh_cmd (list of str) – Shell command to invoke on the domain
- msg (str) – Name of the command that should be inserted to the log message.
- Returns
- None
Raises: RuntimeError
– If acpi is not configured an ssh isn’t available
-
export_disks
(standalone, dst_dir, compress, *args, **kwargs)[source]¶ Exports all the disks of self. For each disk type, handler function should be added.
Parameters:
-
extract_paths
(paths, ignore_nopath)[source]¶ Extract the given paths from the domain
Attempt to extract all files defined in
paths
with the method defined inextract_paths()
, if it fails, will try extracting the files with libguestfs.Parameters: - paths (list of str) – paths to extract
- ignore_nopath (boolean) – if True will ignore none existing paths.
Returns: None
Raises: ExtractPathNoPathError
– if a none existing path was found on the VM, and ignore_nopath is True.ExtractPathError
– on all other failures.
-
interactive_console
(*args, **kwargs)[source]¶ Opens an interactive console
Returns: result of the virsh command execution Return type: lago.utils.CommandStatus
-
Submodules¶
lago.brctl module¶
lago.build module¶
-
class
lago.build.
Build
(name, disk_path, paths)[source]¶ Bases:
object
A Build object represents a build section in the init file. Each build section (which in turn belongs to a specific disk) should get his own Build object
In order to add support for a new build command, a new function with the name of the command should be implemented in this class. this function should accept a list of options and arguments and return a named tuple ‘Command’, where ‘Command.name’ is the name of the command and ‘Command.cmd’ is the a list containing the command and its args, for example: Command.name = ‘virt-customize’ Command.cmd = [‘virt-customize’, ‘-a’, PATH_TO_DISk, SOME_CMDS...]
-
name
¶ str – The name of the vm this builder belongs
-
disk_path
¶ str – The path to the disk that needs to be customized
-
paths
¶ lago.paths.Paths – The paths of the current prefix
-
build_cmds
¶ list of str – A list of commands that should be invoked on the disk located in disk_path
-
build
()[source]¶ Run all the commands in self.build_cmds
Raises: lago.build.BuildException
– If a command returned a non-zero code
-
get_cmd_handler
(cmd)[source]¶ Return an handler for cmd. The handler and the command should have the same name. See class description for more info about handlers.
Parameters: cmd (str) – The name of the command Returns: which handles cmd Return type: callable Raises: lago.build.BuildException
– If an handler for cmd doesn’t exist
-
classmethod
get_instance_from_build_spec
(name, disk_path, build_spec, paths)[source]¶ Parameters: - name (str) – The name of the vm this builder belongs
- disk_path (str) – The path to the disk that needs to be customized
- paths (lago.paths.Paths) – The paths of the current prefix
- build_spec (dict) – The build spec part, associated with the disk located at disk_path, from the init file.
Returns: - An instance of Build with a normalized build spec i.e ready to
be invoked.
-
normalize_build_spec
(build_spec)[source]¶ Convert a build spec into a list of Command tuples. After running this command, self.build_cmds should hold all the commands that should be run on the disk in self.disk_path.
Parameters: build_spec (dict) – The buildspec part from the init file
-
static
normalize_options
(options)[source]¶ Turns a mapping of ‘option: arg’ to a list and prefix the options. for example:
- dict = {
- o1: a1, o2: , o3: a3,
}
will be transformed to:
[prefix_option(o1), a1, prefix_option(o2), prefix_option(o3), a3]
note that empty arguments are omitted
Parameters: options (dict) – A mapping between options and arguments Returns: A normalized version of ‘options’ as mentioned above Return type: lst
-
static
prefix_option
(option)[source]¶ Depends on the option’s length, prefix it with ‘-‘ or ‘–’ :param option: The option to prefix :type option: str
Returns: prefixed option Return type: str
-
virt_customize
(options)[source]¶ Handler for ‘virt-customize’ note: if ‘ssh-inject’ option was specified without a path to a key, the prefix’ key will be copied to the vm.
Parameters: options (lst of str) – Options and arguments for ‘virt-customize’ Returns: which handles cmd Return type: callable Raises: lago.build.BuildException
– If an handler for cmd doesn’t exist
-
-
exception
lago.build.
BuildException
[source]¶ Bases:
lago.utils.LagoException
-
class
lago.build.
Command
(name, cmd)¶ Bases:
tuple
-
__getnewargs__
()¶ Return self as a plain tuple. Used by copy and pickle.
-
__getstate__
()¶ Exclude the OrderedDict from pickling
-
__repr__
()¶ Return a nicely formatted representation string
-
_asdict
()¶ Return a new OrderedDict which maps field names to their values
-
_fields
= ('name', 'cmd')¶
-
classmethod
_make
(iterable, new=<built-in method __new__ of type object at 0x906d60>, len=<built-in function len>)¶ Make a new Command object from a sequence or iterable
-
_replace
(_self, **kwds)¶ Return a new Command object replacing specified fields with new values
-
cmd
¶ Alias for field number 1
-
name
¶ Alias for field number 0
-
lago.cmd module¶
lago.config module¶
-
class
lago.config.
ConfigLoad
(root_section='lago')[source]¶ Bases:
object
Merges configuration parameters from 3 different sources: 1. Enviornment vairables 2. config files in .INI format 3. argparse.ArgumentParser
The assumed order(but not necessary) order of calls is: load() - load from config files and environment variables update_parser(parser) - update from the declared argparse parser update_args(args) - update from passed arguments to the parser
-
__getitem__
(key)[source]¶ Get a variable from the default section, good for fail-fast if key does not exists.
Parameters: key (str) – key Returns: config variable Return type: str
-
get
(*args)[source]¶ Get a variable from the default section :param *args: dict.get() args :type *args: args
Returns: config variable Return type: str
-
get_ini
(defaults_only=False, incl_unset=False)[source]¶ Return the config dictionary in INI format :param defaults_only: if set, will ignore arguments set by the CLI. :type defaults_only: bool
Returns: string of the config file in INI format Return type: str
-
get_section
(*args)[source]¶ get a section dictionary Args:
Returns: section config dictionary Return type: dict
-
load
()[source]¶ Load all configuration from INI format files and ENV, always preferring the last read. Order of loading is: 1) Custom paths as defined in constants.CONFS_PATH 2) XDG standard paths 3) Environment variables
Returns: dict of section configuration dicts Return type: dict
-
update_args
(args)[source]¶ Update config dictionary with parsed args, as resolved by argparse. Only root positional arguments that already exist will overridden.
Parameters: args (namespace) – args parsed by argparse
-
update_parser
(parser)[source]¶ Update config dictionary with declared arguments in an argparse.parser New variables will be created, and existing ones overridden.
Parameters: parser (argparse.ArgumentParser) – parser to read variables from
-
-
lago.config.
_get_configs_path
()[source]¶ Get a list of possible configuration files, from the following sources: 1. All files that exists in constants.CONFS_PATH. 2. All XDG standard config files for “lago.conf”, in reversed order of importance.
Returns: list of files Return type: list(str)
-
lago.config.
get_env_dict
(root_section)[source]¶ Read all Lago variables from the environment. The lookup format is: LAGO_VARNAME - will land into ‘lago’ section LAGO__SECTION1__VARNAME - will land into ‘section1’ section, notice the double ‘__’. LAGO__LONG_SECTION_NAME__VARNAME - will land into ‘long_section_name’
Returns: dict of section configuration dicts Return type: dict Examples
>>> os.environ['LAGO_GLOBAL_VAR'] = 'global' >>> os.environ['LAGO__INIT__REPO_PATH'] = '/tmp/store' >>> >>> config.get_env_dict() {'init': {'repo_path': '/tmp/store'}, 'lago': {'global_var': 'global'}}
lago.constants module¶
-
lago.constants.
CONFS_PATH
= ['/etc/lago/lago.conf']¶ CONFS_PATH - default path to first look for configuration files.
-
lago.constants.
LIBEXEC_DIR
= '/usr/libexec/lago/'¶ LIBEXEC_DIR -
lago.dirlock module¶
-
lago.dirlock.
lock
(path, excl, key_path)[source]¶ Waits until the given directory can be locked
Parameters: Returns: None
lago.export module¶
-
class
lago.export.
DiskExportManager
(dst, disk_type, disk, do_compress)[source]¶ Bases:
object
ExportManager object is responsible on the export process of an image from the current Lago prefix.
DiskExportManger is the base class of specific ExportManagers. Each specific ExportManger is responsible on the export process of an image with a specific type (e.g template, file...)
-
src
¶ str – Path to the image that should be exported
-
name
¶ str – The name of the exported disk
-
dst
¶ str – The absolute path of the exported disk
-
disk_type
¶ str – The type of the image e.g template, file, empty...
-
disk
¶ dict – Disk attributes (of the disk that should be exported) as found in workdir/current/virt/VM-NAME
-
exported_metadata
¶ dict – A copy of the source disk metadata, this dict should be updated with new values during the export process. do_compress(bool): If true, apply compression to the exported disk.
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
calc_sha
(checksum)[source]¶ Calculate the checksum of the new exported disk, write it to a file, and update this managers ‘exported_metadata’.
Parameters: checksum (str) – The type of the checksum
-
export
()[source]¶ This method will handle the export process and should implemented in each subclass.
-
static
get_instance_by_type
(dst, disk, do_compress, *args, **kwargs)[source]¶ Parameters: - Returns
- An instance of a subclass of DiskExportManager which matches the disk type.
-
-
class
lago.export.
FileExportManager
(dst, disk_type, disk, do_compress, *args, **kwargs)[source]¶ Bases:
lago.export.DiskExportManager
FileExportManager is responsible exporting images of type file and empty.
-
standalone
¶ bool – If true, create a new image which is the result of merging all the layers of src (the image that we want to export).
-
src_qemu_info
¶ dict – Metadata on src which was generated by qemu-img.
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
lago.export.
TemplateExportManager
(dst, disk_type, disk, do_compress, *args, **kwargs)[source]¶ Bases:
lago.export.DiskExportManager
TemplateExportManager is responsible exporting images of type template.
-
See superclass
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
lago.log_utils module¶
This module defines the special logging tools that lago uses
-
lago.log_utils.
ALWAYS_SHOW_REG
= <_sre.SRE_Pattern object>¶ Regexp that will match the above template
-
lago.log_utils.
ALWAYS_SHOW_TRIGGER_MSG
= 'force-show:%s'¶ Message template that will always shoud the messago
-
class
lago.log_utils.
ColorFormatter
(fmt=None, datefmt=None)[source]¶ Bases:
logging.Formatter
Formatter to add colors to log records
-
CRITICAL
= '\x1b[31m'¶
-
CYAN
= '\x1b[36m'¶
-
DEBUG
= ''¶
-
DEFAULT
= '\x1b[0m'¶
-
ERROR
= '\x1b[31m'¶
-
GREEN
= '\x1b[32m'¶
-
INFO
= '\x1b[36m'¶
-
NONE
= ''¶
-
RED
= '\x1b[31m'¶
-
WARNING
= '\x1b[33m'¶
-
WHITE
= '\x1b[37m'¶
-
YELLOW
= '\x1b[33m'¶
-
classmethod
colored
(color, message)[source]¶ Small function to wrap a string around a color
Parameters: Returns: the colored string
Return type:
-
format
(record)[source]¶ Adds colors to a log record and formats it with the default
Parameters: record (logging.LogRecord) – log record to format Returns: The colored and formatted record string Return type: str
-
-
class
lago.log_utils.
ContextLock
[source]¶ Bases:
object
Context manager to thread lock a block of code
-
lago.log_utils.
END_TASK_MSG
= 'Success'¶ Message to be shown when a task is ended
-
lago.log_utils.
END_TASK_REG
= <_sre.SRE_Pattern object>¶ Regexp that will match the above template
-
lago.log_utils.
END_TASK_TRIGGER_MSG
= 'end task%s'¶ Message template that will trigger a task end
-
class
lago.log_utils.
LogTask
(task, logger=<module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>, level='info', propagate_fail=True, uuid=None)[source]¶ Bases:
object
Context manager for a log task
Example
>>> with LogTask('mytask'): ... pass
-
lago.log_utils.
START_TASK_MSG
= ''¶ Message to be shown when a task is started
-
lago.log_utils.
START_TASK_REG
= <_sre.SRE_Pattern object>¶ Regexp that will match the above template
-
lago.log_utils.
START_TASK_TRIGGER_MSG
= 'start task%s'¶ Message template that will trigger a task
-
class
lago.log_utils.
Task
(name, *args, **kwargs)[source]¶ Bases:
collections.deque
Small wrapper around deque to add the failed status and name to a task
-
name
¶ str – name for this task
-
failed
¶ bool – If this task has failed or not (if there was any error log shown during it’s execution)
-
force_show
¶ bool – If set, will show any log records generated inside this task even if it’s out of nested depth limit
-
-
class
lago.log_utils.
TaskHandler
(initial_depth=0, task_tree_depth=-1, buffer_size=2000, dump_level=40, level=0, formatter=<class 'lago.log_utils.ColorFormatter'>)[source]¶ Bases:
logging.StreamHandler
This log handler will use the concept of tasks, to hide logs, and will show all the logs for the current task if there’s a logged error while running that task.
It will hide any logs that belong to nested tasks that have more than
task_tree_depth
parent levels, and for the ones that are above that level, it will show only the logs that have a loglevel abovelevel
.You can force showing a log record immediately if you use the
log_always()
function bypassing all the filters.If there’s a log record with log level higher than
dump_level
it will be considered a failure, and all the logs for the current task that have a log level abovelevel
will be shown no matter at which depth the task belongs to. Also, all the parent tasks will be tagged as error.-
formatter
¶ logging.LogFormatter – formatter to use
-
initial_depth
¶ int – Initial depth to account for, in case this handler was created in a subtask
-
tasks_by_thread (dict of str
OrderedDict of str: Task): List of thread names, and their currently open tasks with their latest log records
-
dump_level
¶ int – log level from which to consider a log record as error
-
buffer_size
¶ int – Size of the log record deque for each task, the bigger, the more records it can show in case of error but the more memory it will use
-
task_tree_depth
¶ int – number of the nested level to show start/end task logs for, if -1 will show always
-
level
¶ int – Log level to show logs from if the depth limit is not reached
-
main_failed
¶ bool – used to flag from a child thread that the main should fail any current task
-
_tasks_lock
¶ ContextLock – Lock for the tasks_by_thread dict
-
_main_thread_lock
¶ ContextLock – Lock for the main_failed bool
-
TASK_INDICATORS
= ['@', '#', '*', '-', '~']¶ List of chars to show as task prefix, to ease distinguishing them
-
close_children_tasks
(parent_task_name)[source]¶ Closes all the children tasks that were open
Parameters: parent_task_name (str) – Name of the parent task Returns: None
-
emit
(record)[source]¶ Handle the given record, this is the entry point from the python logging facility
- Params:
- record (logging.LogRecord): log record to handle
Returns: None
-
get_task_indicator
(task_level=None)[source]¶ Parameters: task_level (int or None) – task depth level to get the indicator for, if None, will use the current tasks depth Returns: char to prepend to the task logs to indicate it’s level Return type: str
-
get_tasks
(thread_name)[source]¶ Parameters: thread_name (str) – name of the thread to get the tasks for Returns: - list of task names and log records for
- each for the given thread
Return type: OrderedDict of str, Task
-
handle_closed_task
(task_name, record)[source]¶ Do everything needed when a task is closed
- Params:
- task_name (str): name of the task that is finishing record (logging.LogRecord): log record with all the info
Returns: None
-
handle_new_task
(task_name, record)[source]¶ Do everything needed when a task is starting
- Params:
- task_name (str): name of the task that is starting record (logging.LogRecord): log record with all the info
Returns: None
-
mark_main_tasks_as_failed
()[source]¶ Flags to the main thread that all it’s tasks sholud fail
Returns: None
-
mark_parent_tasks_as_failed
(task_name, flush_logs=False)[source]¶ Marks all the parent tasks as failed
Parameters: Returns: None
-
pretty_emit
(record, is_header=False, task_level=None)[source]¶ Wrapper around the
logging.StreamHandler
emit method to add some decoration stuff to the messageParameters: - record (logging.LogRecord) – log record to emit
- is_header (bool) – if this record is a header, usually, a start or end task message
- task_level (int) – If passed, will take that as the current nested task level instead of calculating it from the current tasks
Returns: None
-
should_show_by_depth
(cur_level=None)[source]¶ Parameters: cur_level (int) – depth level to take into account Returns: - True if the given depth level should show messages (not
- taking into account the log level)
Return type: bool
-
should_show_by_level
(record_level, base_level=None)[source]¶ Parameters: - record_level (int) – log level of the record to check
- base_level (int or None) – log level to check against, will use the
object’s
dump_level
if None is passed
Returns: - True if the given log record should be shown according to the
log level
Return type:
-
tasks
¶ Returns –
- OrderedDict of str, Task: list of task names and log records for
- each for the current thread
-
-
lago.log_utils.
end_log_task
(task, logger=<module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>, level='info')[source]¶ Ends a log task
Parameters: - task (str) – name of the log task to end
- logger (logging.Logger) – logger to use
- level (str) – log level to use
Returns: None
-
lago.log_utils.
hide_stevedore_logs
()[source]¶ Hides the logs of stevedore, this function was added in order to support older versions of stevedore
We are using the NullHandler in order to get rid from ‘No handlers could be found for logger...’ msg
Returns: None
-
lago.log_utils.
log_always
(message)[source]¶ Wraps the given message with a tag that will make it be always logged by the task logger
Parameters: message (str) – message to wrap with the tag Returns: - tagged message that will get it shown immediately by the task
- logger
Return type: str
-
lago.log_utils.
log_task
(task, logger=<module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>, level='info', propagate_fail=True, uuid=None)[source]¶ Parameterized decorator to wrap a function in a log task
Example
>>> @log_task('mytask') ... def do_something(): ... pass
-
lago.log_utils.
setup_prefix_logging
(logdir)[source]¶ Sets up a file logger that will create a log in the given logdir (usually a lago prefix)
Parameters: logdir (str) – path to create the log into, will be created if it does not exist Returns: None
-
lago.log_utils.
start_log_task
(task, logger=<module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>, level='info')[source]¶ Starts a log task
Parameters: - task (str) – name of the log task to start
- logger (logging.Logger) – logger to use
- level (str) – log level to use
Returns: None
lago.prefix module¶
-
class
lago.prefix.
Prefix
(prefix)[source]¶ Bases:
object
A prefix is a directory that will contain all the data needed to setup the environment.
-
_prefix
¶ str – Path to the directory of this prefix
-
_paths
¶ lago.path.Paths – Path handler class
-
_virt_env
¶ lago.virt.VirtEnv – Lazily loaded virtual env handler
-
_metadata
¶ dict – Lazily loaded metadata
-
VIRT_ENV_CLASS
¶ alias of
VirtEnv
-
_add_dns_records
(conf, mgmts)[source]¶ Add DNS records dict(‘dns_records’) to
conf
for each management network. Add DNS forwarder IP(‘dns_forward’) for each none management network.Parameters: Returns: None
-
_add_mgmt_to_domains
(conf, mgmts)[source]¶ Add management network key(‘mgmt_net’) to each domain. Note this assumes
conf
was validated.Parameters:
-
_add_nic_to_mapping
(net, dom, nic)[source]¶ Populates the given net spec mapping entry with the nics of the given domain, by the following rules:
- If
net
is management, ‘domain_name’: nic_ip - For each interface: ‘domain_name-eth#’: nic_ip, where # is the
index of the nic in the domain definition. * For each interface: ‘domain_name-net_name-#’: nic_ip, where # is a running number of interfaces from that network. * For each interface: ‘domain_name-net_name’, which has an identical IP to ‘domain_name-net_name-0’
Parameters: Returns: None
- If
-
_allocate_ips_to_nics
(conf)[source]¶ For all the nics of all the domains in the conf that have dynamic ip, allocate one and addit to the network mapping
Parameters: conf (dict) – Configuration spec to extract the domains from Returns: None
-
_allocate_subnets
(conf)[source]¶ Allocate all the subnets needed by the given configuration spec
Parameters: conf (dict) – Configuration spec where to get the nets definitions from Returns: allocated subnets and modified conf Return type: tuple(list, dict)
-
static
_check_predefined_subnets
(conf)[source]¶ Checks if all of the nets defined in the config are inside the allowed range, throws exception if not
Parameters: conf (dict) – Configuration spec where to get the nets definitions from Returns: None Raises: RuntimeError
– If there are any subnets out of the allowed range
-
_config_net_topology
(conf)[source]¶ Initialize and populate all the network related elements, like reserving ips and populating network specs of the given confiiguration spec
Parameters: conf (dict) – Configuration spec to initalize Returns: None
-
_copy_delpoy_scripts
(scripts)[source]¶ Copy the given deploy scripts to the scripts dir in the prefix
Parameters: scripts (list of str) – list of paths of the scripts to copy to the prefix Returns: - list with the paths to the copied scripts, with a
- prefixed with $LAGO_PREFIX_PATH so the full path is not hardcoded
Return type: list of str
-
_copy_deploy_scripts_for_hosts
(domains)[source]¶ Copy the deploy scripts for all the domains into the prefix scripts dir
Parameters: domains (dict) – spec with the domains info as when loaded from the initfile Returns: None
-
_create_disk
(name, spec, template_repo=None, template_store=None)[source]¶ Creates a disc with the given name from the given repo or store
Parameters: - name (str) – Name of the domain to create the disk for
- spec (dict) – Specification of the disk to create
- template_repo (TemplateRepository or None) – template repo instance to use
- template_store (TemplateStore or None) – template store instance to use
Returns: Path to the disk and disk metadata
Return type: Raises: RuntimeError
– If the type of the disk is not supported or failed to create the disk
-
_create_ssh_keys
()[source]¶ Generate a pair of ssh keys for this prefix
Returns: None Raises: RuntimeError
– if it fails to create the keys
-
_create_virt_env
()[source]¶ Create a new virt env from this prefix
Returns: virt env created from this prefix Return type: lago.virt.VirtEnv
-
_get_scripts
(host_metadata)[source]¶ Temporary method to retrieve the host scripts
Parameters: host_metadata (dict) – host metadata to retrieve the scripts for Returns: deploy scripts for the host, empty if none found Return type: list
-
static
_init_net_specs
(conf)[source]¶ Given a configuration specification, initializes all the net definitions in it so they can be used comfortably
Parameters: conf (dict) – Configuration specification Returns: the adapted new conf Return type: dict
-
_ova_to_spec
(filename)[source]¶ Retrieve the given ova and makes a template of it. Creates a disk from network provided ova. Calculates the needed memory from the ovf. The disk will be cached in the template repo
Parameters: filename (str) – the url to retrive the data from Returns: list with the disk specification int: VM memory, None if none defined int: Number of virtual cpus, None if none defined
Return type: list of dict
Raises: RuntimeError
– If the ova format is not supportedTypeError
– If the memory units in the ova are noot supported (currently only ‘MegaBytes’)
-
_register_preallocated_ips
(conf)[source]¶ Parse all the domains in the given conf and preallocate all their ips into the networks mappings, raising exception on duplicated ips or ips out of the allowed ranges
See also
Parameters: conf (dict) – Configuration spec to parse Returns: None Raises: RuntimeError
– if there are any duplicated ips or any ip out of the allowed range
-
_select_mgmt_networks
(conf)[source]¶ Select management networks. If no management network is found, it will mark the first network found by sorted the network lists. Also adding default DNS domain, if none is set.
Parameters: conf (spec) – spec
-
_set_scripts
(host_metadata, scripts)[source]¶ Temporary method to set the host scripts
Parameters: host_metadata (dict) – host metadata to set scripts in Returns: the updated metadata Return type: dict
-
_use_prototype
(spec, prototypes)[source]¶ Populates the given spec with the values of it’s declared prototype
Parameters: Returns: updated spec
Return type:
-
_validate_netconfig
(conf)[source]¶ Validate network configuration
Parameters: conf (dict) – spec
Returns: None
Raises: LagoInitException
– If a VM has more than- one management network configured, or a network which is not
- management has DNS attributes, or a VM is configured with a
- none-existence NIC, or a VM has no management network.
-
cleanup
(*args, **kwargs)[source]¶ Stops any running entities in the prefix and uninitializes it, usually you want to do this if you are going to remove the prefix afterwards
Returns: None
-
create_snapshots
(name)[source]¶ Creates one snapshot on all the domains with the given name
Parameters: name (str) – Name of the snapshots to create Returns: None
-
fetch_url
(url)[source]¶ Retrieves the given url to the prefix
Parameters: url (str) – Url to retrieve Returns: path to the downloaded file Return type: str
-
get_nets
()[source]¶ Retrieve info on all the nets from all the domains
Returns: dictionary with net_name -> net list Return type: dict of str->list(str)
-
get_snapshots
()[source]¶ Retrieve info on all the snapshots from all the domains
Returns: list(str): dictionary with vm_name -> snapshot list Return type: dict of str
-
get_vms
()[source]¶ Retrieve info on all the vms
Returns: dictionary with vm_name -> vm list Return type: dict of str->list(str)
-
initialize
(*args, **kwargs)[source]¶ Initialize this prefix, this includes creating the destination path, and creating the uuid for the prefix, for any other actions see
Prefix.virt_conf()
Will safely roll back if any of those steps fail
Returns: None Raises: RuntimeError
– If it fails to create the prefix dir
-
classmethod
is_prefix
(path)[source]¶ Check if a path is a valid prefix
Parameters: path (str) – path to be checked Returns: True if the given path is a prefix Return type: bool
-
resolve_parent
(disk_path, template_store, template_repo)[source]¶ Given a virtual disk, checks if it has a backing file, if so check if the backing file is in the store, if not download it from the provided template_repo.
After verifying that the backing-file is in the store, create a symlink to that file and locate it near the layered image.
Parameters: - disk_path (str) – path to the layered disk
- template_repo (TemplateRepository or None) – template repo instance to use
- template_store (TemplateStore or None) – template store instance to use
-
classmethod
resolve_prefix_path
(start_path=None)[source]¶ Look for an existing prefix in the given path, in a path/.lago dir, or in a .lago dir under any of it’s parent directories
Parameters: start_path (str) – path to start the search from, if None passed, it will use the current dir Returns: path to the found prefix Return type: str Raises: RuntimeError
– if no prefix was found
-
revert_snapshots
(name)[source]¶ Revert all the snapshots with the given name from all the domains
Parameters: name (str) – Name of the snapshots to revert Returns: None
-
shutdown
(vm_names=None, reboot=False)[source]¶ Shutdown this prefix
Parameters: - vm_names (list of str) – List of the vms to shutdown
- reboot (bool) – If true, reboot the requested vms
Returns: None
-
start
(vm_names=None)[source]¶ Start this prefix
Parameters: vm_names (list of str) – List of the vms to start Returns: None
-
stop
(vm_names=None)[source]¶ Stop this prefix
Parameters: vm_names (list of str) – List of the vms to stop Returns: None
-
virt_conf
(conf, template_repo=None, template_store=None, do_bootstrap=True, do_build=True)[source]¶ Initializes all the virt infrastructure of the prefix, creating the domains disks, doing any network leases and creating all the virt related files and dirs inside this prefix.
Parameters: - conf (dict) – Configuration spec
- template_repo (TemplateRepository) – template repository intance
- template_store (TemplateStore) – template store instance
- do_bootstrap (bool) – If true run virt-sysprep on the images
- do_build (bool) – If true run build commands on the images, see lago.build.py for more info.
Returns: None
-
virt_conf_from_stream
(conf_fd, template_repo=None, template_store=None, do_bootstrap=True, do_build=True)[source]¶ Initializes all the virt infrastructure of the prefix, creating the domains disks, doing any network leases and creating all the virt related files and dirs inside this prefix.
Parameters: - conf_fd (File) – File like object to read the config from
- template_repo (TemplateRepository) – template repository intance
- template_store (TemplateStore) – template store instance
Returns: None
-
virt_env
¶ Getter for this instance’s virt env, creates it if needed
Returns: virt env instance used by this prefix Return type: lago.virt.VirtEnv
-
-
lago.prefix.
_create_ip
(subnet, index)[source]¶ Given a subnet or an ip and an index returns the ip with that lower index from the subnet (255.255.255.0 mask only subnets)
Parameters: Returns: The dotted decimal representation of the ip
Return type:
lago.service module¶
-
class
lago.service.
SysVInitService
(vm, name)[source]¶ Bases:
lago.plugins.service.ServicePlugin
-
BIN_PATH
= '/sbin/service'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
lago.service.
SystemdContainerService
(vm, name)[source]¶ Bases:
lago.plugins.service.ServicePlugin
-
BIN_PATH
= '/usr/bin/docker'¶
-
HOST_BIN_PATH
= '/usr/bin/systemctl'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
lago.service.
SystemdService
(vm, name)[source]¶ Bases:
lago.plugins.service.ServicePlugin
-
BIN_PATH
= '/usr/bin/systemctl'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
lago.ssh module¶
-
lago.ssh.
drain_ssh_channel
(chan, stdin=None, stdout=<open file '<stdout>', mode 'w'>, stderr=<open file '<stderr>', mode 'w'>)[source]¶
-
lago.ssh.
get_ssh_client
(ip_addr, ssh_key=None, host_name=None, ssh_tries=None, propagate_fail=True, username='root', password='123456')[source]¶
-
lago.ssh.
interactive_ssh
(ip_addr, command=None, host_name=None, ssh_key=None, username='root', password='123456')[source]¶
-
lago.ssh.
interactive_ssh_channel
(chan, command=None, stdin=<open file '<stdin>', mode 'r'>)[source]¶
-
lago.ssh.
ssh
(ip_addr, command, host_name=None, data=None, show_output=True, propagate_fail=True, tries=None, ssh_key=None, username='root', password='123456')[source]¶
lago.subnet_lease module¶
Module that handles the leases for the subnets of the virtual network interfaces.
Note
Currently only /24 ranges are handled, and all of them under the 192.168.MIN_SUBNET to 192.168.MAX_SUBNET ranges
The leases are stored under LEASE_DIR
as json files with the form:
[
"/path/to/prefix/uuid/file",
"uuid_hash",
]
Where the uuid_hash is the 32 char uuid of the prefix (the contents of the uuid file at the time of doing the lease)
-
lago.subnet_lease.
MAX_SUBNET
= 209¶ Upper range for the allowed subnets
-
lago.subnet_lease.
MIN_SUBNET
= 200¶ Lower range for the allowed subnets
-
lago.subnet_lease.
_acquire
(*args, **kwargs)[source]¶ Lease a free network for the given uuid path
Parameters: uuid_path (str) – Path to the uuid file of a lago.Prefix
Returns: - the third element of the dotted ip of the leased network
- or
None
if no lease was available
Return type: int or None
-
lago.subnet_lease.
_lease_owned
(path, current_uuid_path)[source]¶ Checks if the given lease is owned by the prefix whose uuid is in the given path
Note
The prefix must be also in the same path it was when it took the lease
Parameters: Returns: True
if the given lease in owned by the prefix,False
otherwise
Return type:
-
lago.subnet_lease.
_lease_valid
(path)[source]¶ Checs if the given lease still has a prefix that owns it
Parameters: path (str) – Path to the lease Returns: True
if the uuid path in the lease still exists and is the- same as the one in the lease
Return type: bool
-
lago.subnet_lease.
_locked
(func)[source]¶ Decorator that will make sure that you have the exclusive lock for the leases
-
lago.subnet_lease.
_release
(*args, **kwargs)[source]¶ Free the lease of the given subnet index
Parameters: index (int) – Third element of a dotted ip representation of the subnet, for example, for 1.2.3.4 it would be 3 Returns: None
-
lago.subnet_lease.
_take_lease
(path, uuid_path)[source]¶ Persist to the given leases path the prefix uuid that’s in the uuid path passed
Parameters: Returns: None
-
lago.subnet_lease.
_validate_lease_dir_present
(func)[source]¶ Decorator that will ensure that the lease dir exists, creating it if necessary
-
lago.subnet_lease.
acquire
(uuid_path)[source]¶ Lease a free network for the given uuid path
Parameters: uuid_path (str) – Path to the uuid file of a lago.Prefix
Returns: the dotted ip of the gateway for the leased net Return type: str
lago.sysprep module¶
lago.templates module¶
This module contains any disk template related classes and functions, including the repository store manager classes and template providers, some useful definitions:
- Template repositories:
- Repository where to fetch templates from, as an http server
- Template store:
- Local store to cache templates
- Template:
- Unititialized disk image to use as base for other disk images
- Template version:
- Specific version of a template, to allow getting updates without having to change the template name everywhere
-
class
lago.templates.
FileSystemTemplateProvider
(root)[source]¶ Handles file type templates, that is, getting a disk template from the host’s filesystem
-
_prefixed
(*path)[source]¶ Join all the given paths prefixed with this provider’s base root path
Parameters: *path (str) – sections of the path to join, passed as positional arguments Returns: Joined paths prepended with the provider root path Return type: str
-
download_image
(handle, dest)[source]¶ Copies over the handl to the destination
Parameters: Returns: None
-
-
class
lago.templates.
HttpTemplateProvider
(baseurl)[source]¶ This provider allows the usage of http urls for templates
-
download_image
(handle, dest)[source]¶ Downloads the image from the http server
Parameters: Returns: None
-
get_hash
(handle)[source]¶ Get the associated hash for the given handle, the hash file must exist (
handle + '.hash'
).Parameters: handle (str) – Path to the template to get the hash from Returns: Hash for the given handle Return type: str
-
get_metadata
(handle)[source]¶ Returns the associated metadata info for the given handle, the metadata file must exist (
handle + '.metadata'
). If the given handle has an.xz
extension, it will get removed when calculating the handle metadata pathParameters: handle (str) – Path to the template to get the metadata from Returns: Metadata for the given handle Return type: dict
-
open_url
(url, suffix='', dest=None)[source]¶ Opens the given url, trying the compressed version first. The compressed version url is generated adding the
.xz
extension to theurl
and adding the given suffix after that.xz
extension. If dest passed, it will download the data to that path if ableParameters: Returns: - response object to read from (lazy read), closed
if no dest passed
Return type: urllib.addinfourl
Raises: RuntimeError
– if the url gave http error when retrieving it
-
-
class
lago.templates.
Template
(name, versions)[source]¶ Disk image template class
-
name
¶ str – Name of this template
-
_versions (dict(str
TemplateVersion)): versions for this template
-
get_latest_version
()[source]¶ Retrieves the latest version for this template, the latest being the one with the newest timestamp
Returns: TemplateVersion
-
get_version
(ver_name=None)[source]¶ Get the given version for this template, or the latest
Parameters: ver_name (str or None) – Version to retieve, None for the latest Returns: - The version matching the given name or the latest
- one
Return type: TemplateVersion
-
-
class
lago.templates.
TemplateRepository
(dom)[source]¶ A template repository is a single source for templates, that uses different providers to actually retrieve them. That means for example that the ‘ovirt’ template repository, could support the ‘http’ and a theoretical ‘gluster’ template providers.
-
_dom
¶ dict – Specification of the template
-
_providers
¶ dict – Providers instances for any source in the spec
-
_get_provider
(spec)[source]¶ Get the provider for the given template spec
Parameters: spec (dict) – Template spec Returns: A provider instance for that spec Return type: HttpTemplateProvider or FileSystemTemplateProvider
-
classmethod
from_url
(path)[source]¶ Instantiate a
TemplateRepository
instance from the data in a file or urlParameters: path (str) – Path or url to the json file to load Returns: A new instance Return type: TemplateRepository
-
-
class
lago.templates.
TemplateStore
(path)[source]¶ Local cache to store templates
The store uses various files to keep track of the templates cached, access and versions. An example template store looks like:
$ tree /var/lib/lago/store/ /var/lib/lago/store/ ├── in_office_repo:centos6_engine:v2.tmp ├── in_office_repo:centos7_engine:v5.tmp ├── in_office_repo:fedora22_host:v2.tmp ├── phx_repo:centos6_engine:v2 ├── phx_repo:centos6_engine:v2.hash ├── phx_repo:centos6_engine:v2.metadata ├── phx_repo:centos6_engine:v2.users ├── phx_repo:centos7_engine:v4.tmp ├── phx_repo:centos7_host:v4.tmp └── phx_repo:storage-nfs:v1.tmp
There you can see the files:
- *.tmp
- Temporary file created while downloading the template from the repository (depends on the provider)
- ${repo_name}:${template_name}:${template_version}
- This file is the actual disk image template
- *.hash
- Cached hash for the template disk image
- *.metadata
- Metadata for this template image in json format, usually this includes the distro and root-password
-
__contains__
(temp_ver)[source]¶ Checks if a given version is in this store
Parameters: temp_ver (TemplateVersion) – Version to look for Returns: True
if the version is in this storeReturn type: bool
-
_prefixed
(*path)[source]¶ Join the given paths and prepend this stores path
Parameters: *path (str) – list of paths to join, as positional arguments Returns: all the paths joined and prepended with the store path Return type: str
-
download
(temp_ver, store_metadata=True)[source]¶ Retrieve the given template version
Parameters: - temp_ver (TemplateVersion) – template version to retrieve
- store_metadata (bool) – If set to
False
, will not refresh the local metadata with the retrieved one
Returns: None
-
get_path
(temp_ver)[source]¶ Get the path of the given version in this store
Parameters: TemplateVersion (temp_ver) – version to look for Returns: The path to the template version inside the store Return type: str Raises: RuntimeError
– if the template is not in the store
-
get_stored_hash
(temp_ver)[source]¶ Retrieves the hash for the given template version from the store
Parameters: temp_ver (TemplateVersion) – template version to retrieve the hash for Returns: hash of the given template version Return type: str
-
get_stored_metadata
(temp_ver)[source]¶ Retrieves the metadata for the given template version from the store
Parameters: temp_ver (TemplateVersion) – template version to retrieve the metadata for Returns: the metadata of the given template version Return type: dict
-
class
lago.templates.
TemplateVersion
(name, source, handle, timestamp)[source]¶ Each template can have multiple versions, each of those is actually a different disk template file representation, under the same base name.
-
download
(destination)[source]¶ Retrieves this template to the destination file
Parameters: destination (str) – file path to write this template to Returns: None
-
get_hash
()[source]¶ Returns the associated hash for this template version
Returns: Hash for this version Return type: str
-
-
lago.templates.
_locked
(func)[source]¶ Decorator that ensures that the decorated function has the lock of the repo while running, meant to decorate only bound functions for classes that have lock_path method.
-
lago.templates.
find_repo_by_name
(name, repo_dir=None)[source]¶ Searches the given repo name inside the repo_dir (will use the config value ‘template_repos’ if no repo dir passed), will rise an exception if not found
Parameters: Returns: path to the repo
Return type: Raises: RuntimeError
– if not found
lago.utils module¶
-
class
lago.utils.
CommandStatus
[source]¶ Bases:
lago.utils.CommandStatus
-
exception
lago.utils.
LagoException
[source]¶ Bases:
exceptions.Exception
-
exception
lago.utils.
LagoInitException
[source]¶ Bases:
lago.utils.LagoException
-
exception
lago.utils.
LagoUserException
[source]¶ Bases:
lago.utils.LagoException
-
class
lago.utils.
LockFile
(path, timeout=None, **kwargs)[source]¶ Bases:
object
Context manager that creates a lock around a directory, with optional timeout in the acquire operation
Parameters: -
__enter__
()[source]¶ Start the lock with timeout if needed in the acquire operation
Raises: TimerException
– if the timeout is reached before acquiring the lock
-
-
class
lago.utils.
RollbackContext
(*args)[source]¶ Bases:
object
A context manager for recording and playing rollback. The first exception will be remembered and re-raised after rollback
Sample usage: > with RollbackContext() as rollback: > step1() > rollback.prependDefer(lambda: undo step1) > def undoStep2(arg): pass > step2() > rollback.prependDefer(undoStep2, arg)
More examples see tests/utilsTests.py @ vdsm code
-
exception
lago.utils.
TimerException
[source]¶ Bases:
exceptions.Exception
Exception to throw when a timeout is reached
-
lago.utils.
_CommandStatus
¶ alias of
CommandStatus
-
lago.utils.
_run_command
(command, input_data=None, stdin=None, out_pipe=-1, err_pipe=-1, env=None, uuid=None, **kwargs)[source]¶ Runs a command
Parameters: - command (list of str) – args of the command to execute, including the command itself as command[0] as [‘ls’, ‘-l’]
- input_data (str) – If passed, will feed that data to the subprocess through stdin
- out_pipe (int or file) – File descriptor as passed to :ref:subprocess.Popen to use as stdout
- stdin (int or file) – File descriptor as passed to :ref:subprocess.Popen to use as stdin
- err_pipe (int or file) – File descriptor as passed to :ref:subprocess.Popen to use as stderr
- of str (env(dict) – str): If set, will use the given dict as env for the subprocess
- uuid (uuid) – If set the command will be logged with the given uuid converted to string, otherwise, a uuid v4 will be generated.
- **kwargs – Any other keyword args passed will be passed to the :ref:subprocess.Popen call
Returns: result of the interactive execution
Return type:
-
lago.utils.
deepcopy
(original_obj)[source]¶ Creates a deep copy of an object with no crossed referenced lists or dicts, useful when loading from yaml as anchors generate those cross-referenced dicts and lists
Parameters: original_obj (object) – Object to deep copy Returns: deep copy of the object Return type: object
-
lago.utils.
filter_spec
(spec, paths, wildcard='*', separator='/')[source]¶ Remove keys from a spec file. For example, with the following path: domains//disks//metadata all the metadata dicts from all domains disks will be removed.
Parameters: Returns: None
Raises: utils.LagoUserException
– If a malformed path was detected
-
lago.utils.
get_hash
(file_path, checksum='sha1')[source]¶ Generate a hash for the given file
Parameters: Returns: hash for that file
Return type:
-
lago.utils.
get_qemu_info
(path, backing_chain=False, fail_on_error=True)[source]¶ Get info on a given qemu disk
Parameters: - path (str) – Path to the required disk
- backing_chain (boo) – if true, include also info about
- image predecessors. (the) –
Returns: if backing_chain == True then a list of dicts else a dict
Return type:
-
lago.utils.
load_virt_stream
(virt_fd)[source]¶ Loads the given conf stream into a dict, trying different formats if needed
Parameters: virt_fd (str) – file like objcect with the virt config to load Returns: Loaded virt config Return type: dict
-
lago.utils.
qemu_rebase
(target, backing_file, safe=True, fail_on_error=True)[source]¶ changes the backing file of ‘source’ to ‘backing_file’ If backing_file is specified as “” (the empty string), then the image is rebased onto no backing file (i.e. it will exist independently of any backing file). (Taken from qemu-img man page)
Parameters:
-
lago.utils.
run_command
(command, input_data=None, out_pipe=-1, err_pipe=-1, env=None, **kwargs)[source]¶ Runs a command non-interactively
Parameters: - command (list of str) – args of the command to execute, including the command itself as command[0] as [‘ls’, ‘-l’]
- input_data (str) – If passed, will feed that data to the subprocess through stdin
- out_pipe (int or file) – File descriptor as passed to :ref:subprocess.Popen to use as stdout
- err_pipe (int or file) – File descriptor as passed to :ref:subprocess.Popen to use as stderr
- of str (env(dict) – str): If set, will use the given dict as env for the subprocess
- **kwargs – Any other keyword args passed will be passed to the :ref:subprocess.Popen call
Returns: result of the interactive execution
Return type:
-
lago.utils.
run_command_with_validation
(cmd, fail_on_error=True, msg='An error has occurred')[source]¶
-
lago.utils.
run_interactive_command
(command, env=None, **kwargs)[source]¶ Runs a command interactively, reusing the current stdin, stdout and stderr
Parameters: - command (list of str) – args of the command to execute, including the command itself as command[0] as [‘ls’, ‘-l’]
- of str (env(dict) – str): If set, will use the given dict as env for the subprocess
- **kwargs – Any other keyword args passed will be passed to the :ref:subprocess.Popen call
Returns: result of the interactive execution
Return type:
lago.virt module¶
-
class
lago.virt.
VirtEnv
(prefix, vm_specs, net_specs)[source]¶ Bases:
object
Env properties: * prefix * vms * net
- libvirt_con
-
_get_stop_shutdown_common_args
(vm_names)[source]¶ Get the common arguments for stop and shutdown commands
Parameters: vm_names (list of str) – The names of the requested vms - Returns
- list of plugins.vm.VMProviderPlugin:
- vms objects that should be stopped
list of virt.Network: net objects that should be stopped str: log message
Raises: utils.LagoUserException
– If a vm name doesn’t exist
-
_get_unused_nets
(vms_to_stop)[source]¶ Return a list of nets that used only by the vms in vms_to_stop
Parameters: vms_to_stop (list of str) – The names of the requested vms - Returns
- list of virt.Network: net objects that used only by
- vms in vms_to_stop
Raises: utils.LagoUserException
– If a vm name doesn’t exist
-
generate_init
(dst, out_format, filters=None)[source]¶ Generate an init file which represents this env and can be used with the images created by self.export_vms
Parameters: - dst (str) – path and name of the new init file
- out_format (plugins.output.OutFormatPlugin) – formatter for the output (the default is yaml)
- filters (list) – list of paths to keys that should be removed from the init file
Returns: None
-
get_compat
()[source]¶ Get compatibility level for this environment - which is the Lago version used to create this environment
-
get_env_spec
(filters=None)[source]¶ Get the spec of the current env. The spec will hold the info about all the domains and networks associated with this env.
Parameters: filters (list) – list of paths to keys that should be removed from the init file Returns: the spec of the current env Return type: dict
-
get_snapshots
(domains=None)[source]¶ Get the list of snapshots for each domain
Parameters: - domanins (list of str) – list of the domains to get the snapshots
- all will be returned if none or empty list passed (for,) –
Returns: with the domain names and the list of snapshots for each
Return type: dict of str -> list(str)
-
get_vms
(vm_names=None)[source]¶ Returns the vm objects associated with vm_names if vm_names is None, return all the vms in the prefix
Parameters: vm_names (list of str) – The names of the requested vms - Returns
- dict: Which contains the requested vm objects indexed by name
Raises: utils.LagoUserException
– If a vm name doesn’t exist
lago.vm module¶
-
class
lago.vm.
DefaultVM
(env, spec)[source]¶ Bases:
lago.plugins.vm.VMPlugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
lago.workdir module¶
A workdir is the base directory where lago will store all the files it needs and that are unique (not shared between workdirs).
It’s basic structure is a directory with one soft link and multiple directories, one per prefix. Where the link points to the default prefix to use.
-
exception
lago.workdir.
MalformedWorkdir
[source]¶ Bases:
lago.workdir.WorkdirError
-
exception
lago.workdir.
PrefixAlreadyExists
[source]¶ Bases:
lago.workdir.WorkdirError
-
exception
lago.workdir.
PrefixNotFound
[source]¶ Bases:
lago.workdir.WorkdirError
-
class
lago.workdir.
Workdir
(path, prefix_class=<class 'lago.prefix.Prefix'>)[source]¶ Bases:
object
This class reperesents a base workdir, where you can store multiple prefixes
- Properties:
- path(str): Path to the workdir perfixes(dict of str->self.prefix_class): dict with the prefixes in the workdir, by name current(str): Name of the current prefix prefix_class(type): Class to use when creating prefixes
-
_set_current
(new_current)[source]¶ Change the current default prefix, for internal usage
Parameters: new_current (str) – Name of the new current prefix, it must already exist Returns: None Raises: PrefixNotFound
– if the given prefix name does not exist in the workdir
-
add_prefix
(workdir, *args, **kwargs)[source]¶ Adds a new prefix to the workdir.
Parameters: - name (str) – Name of the new prefix to add
- *args – args to pass along to the prefix constructor
- *kwargs – kwargs to pass along to the prefix constructor
Returns: The newly created prefix
Raises: PrefixAlreadyExists
– if the prefix name already exists in the workdir
-
cleanup
()[source]¶ Attempt to set a new current symlink if it is broken. If no other prefixes exist and the workdir is empty, try to delete the entire workdir.
Raises: MalformedWorkdir
– if no prefixes were found, but the workdir is not empty.
-
destroy
(workdir, *args, **kwargs)[source]¶ Destroy all the given prefixes and remove any left files if no more prefixes are left
Parameters: - prefix_names (list of str) – list of prefix names to destroy, if None
- passed (default) –
-
get_prefix
(workdir, *args, **kwargs)[source]¶ Retrieve a prefix, resolving the current one if needed
Parameters: name (str) – name of the prefix to retrieve, or current to get the current one Returns: instance of the prefix with the given name Return type: self.prefix_class
-
initialize
(prefix_name='default', *args, **kwargs)[source]¶ Initializes a workdir by adding a new prefix to the workdir.
Parameters: - prefix_name (str) – Name of the new prefix to add
- *args – args to pass along to the prefix constructor
- *kwargs – kwargs to pass along to the prefix constructor
Returns: The newly created prefix
Raises: PrefixAlreadyExists
– if the prefix name already exists in the workdir
-
static
is_possible_workdir
(path)[source]¶ A quick method to suggest if the path is a possible workdir. This does not guarantee that the workdir is not malformed, only that by simple heuristics it might be one. For a full check use
is_workdir()
.Parameters: path (str) – Path Returns: True if path
might be a work dir.Return type: bool
-
classmethod
is_workdir
(path)[source]¶ Check if the given path is a workdir
Parameters: path (str) – Path to check Returns: True if the given path is a workdir Return type: bool
-
join
(*args)[source]¶ Gets a joined path prefixed with the workdir path
Parameters: *args (str) – path sections to join Returns: Joined path prefixed with the workdir path Return type: str
-
load
()[source]¶ Loads the prefixes that are available is the workdir
Returns: None Raises: MalformedWorkdir
– if the wordir is malformed
-
classmethod
resolve_workdir_path
(start_path='.')[source]¶ Look for an existing workdir in the given path, in a path/.lago dir, or in a .lago dir under any of it’s parent directories
Parameters: start_path (str) – path to start the search from, if None passed, it will use the current dir Returns: path to the found prefix Return type: str Raises: LagoUserException
– if no prefix was found
-
set_current
(workdir, *args, **kwargs)[source]¶ Change the current default prefix
Parameters: new_current (str) – Name of the new current prefix, it must already exist Returns: None Raises: PrefixNotFound
– if the given prefix name does not exist in the workdir
-
exception
lago.workdir.
WorkdirError
[source]¶ Bases:
exceptions.RuntimeError
Base exception for workdir errors, catch this one to catch any workdir error
lago_template_repo package¶
-
class
lago_template_repo.
TemplateRepoCLI
[source]¶ Bases:
lago.plugins.cli.CLIPlugin
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
init_args
= {'help': 'Utility for system testing template management'}¶
-
ovirtlago package¶
Submodules¶
ovirtlago.cmd module¶
ovirtlago.constants module¶
ovirtlago.paths module¶
ovirtlago.prefix module¶
-
class
ovirtlago.prefix.
OvirtPrefix
(*args, **kwargs)[source]¶ Bases:
lago.prefix.Prefix
-
VIRT_ENV_CLASS
¶ alias of
OvirtVirtEnv
-
-
class
ovirtlago.prefix.
OvirtWorkdir
(*args, **kwargs)[source]¶ Bases:
lago.workdir.Workdir
ovirtlago.reposetup module¶
-
exception
ovirtlago.reposetup.
RepositoryError
[source]¶ Bases:
exceptions.Exception
-
ovirtlago.reposetup.
_fix_reposync_issues
(reposync_out, repo_path)[source]¶ - Fix for the issue described at::
- https://bugzilla.redhat.com//show_bug.cgi?id=1399235 https://bugzilla.redhat.com//show_bug.cgi?id=1332441
-
ovirtlago.reposetup.
merge
(output_dir, sources, repoman_config=None)[source]¶ Run repoman on
sources
, creating a new RPM repository inoutput_dir
Parameters: - output_dir (str) – Path to create new repository
- sources (list of str) – repoman sources
- repoman_config (str) –
repoman configuration file, if not passed it will use default repoman configurations, equivalent to:
[main]on_empty_source=warn[store.RPMStore]on_wrong_distro=copy_to_allwith_srcrpms=falsewith_sources=false
Raises: RepositoryMergeError
– If repoman command failed.IOError
– Ifrepoman_config
is passed but does not exists.
Returns: None
ovirtlago.testlib module¶
-
class
ovirtlago.testlib.
LogCollectorPlugin
(prefix)[source]¶ Bases:
nose.plugins.base.Plugin
-
name
= 'log-collector-plugin'¶
-
-
class
ovirtlago.testlib.
TaskLogNosePlugin
(*args, **kwargs)[source]¶ Bases:
nose.plugins.base.Plugin
-
name
= 'tasklog-plugin'¶
-
score
= 10000¶
-
ovirtlago.utils module¶
-
ovirtlago.utils.
_create_http_server
(listen_ip, listen_port, root_dir)[source]¶ Starts an http server with an improved request handler
Parameters: Returns: - instance of the http server, already running on a
thread
Return type:
-
ovirtlago.utils.
available_sdks
(modules={'requests.Cookie': None, 'pygments.formatters.latex': <module 'pygments.formatters.latex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/latex.pyc'>, 'jinja2.collections': None, 'sphinx.writers.warnings': None, 'distutils.sysconfig': <module 'distutils.sysconfig' from '/usr/lib/python2.7/distutils/sysconfig.pyc'>, 'pygments.filters': <module 'pygments.filters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/filters/__init__.pyc'>, 'logging.weakref': None, 'sphinx.util.json': None, 'docutils.utils.warnings': None, 'pprint': <module 'pprint' from '/usr/lib/python2.7/pprint.pyc'>, 'unittest.sys': None, 'SocketServer': <module 'SocketServer' from '/usr/lib/python2.7/SocketServer.pyc'>, 'xml.etree.sys': None, 'requests.packages.urllib3.util.wait': <module 'requests.packages.urllib3.util.wait' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/wait.pyc'>, 'distutils.filelist': <module 'distutils.filelist' from '/usr/lib/python2.7/distutils/filelist.pyc'>, 'nose.plugins.optparse': None, 'docutils.writers.urllib': None, 'cmd': <module 'cmd' from '/usr/lib/python2.7/cmd.pyc'>, 'shlex': <module 'shlex' from '/usr/lib/python2.7/shlex.pyc'>, 'sphinx.shutil': None, 'babel.messages.__future__': None, 'babel.messages.array': None, 'babel.cStringIO': None, 'pkg_resources._vendor.pprint': None, 'nose.plugins.multiprocessing': None, 'pygments.styles.pygments': None, 'backports.configparser.helpers': <module 'backports.configparser.helpers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/backports/configparser/helpers.pyc'>, 'sphinx.writers.xml': <module 'sphinx.writers.xml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/xml.pyc'>, 'jinja2.errno': None, 'ovirtlago.re': None, 'babel.messages': <module 'babel.messages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/__init__.pyc'>, 'pkg_resources.extern.appdirs': <module 'pkg_resources._vendor.appdirs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.pyc'>, 'lago.plugins.stevedore': None, 'lago.cmd': <module 'lago.cmd' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/cmd.pyc'>, 'lago.log_utils': <module 'lago.log_utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/log_utils.pyc'>, 'UserList': <module 'UserList' from '/usr/lib/python2.7/UserList.pyc'>, 'docutils.writers.docutils': None, 'new': <module 'new' from '/usr/lib/python2.7/new.pyc'>, 'nose.plugins.re': None, 'readthedocs_ext.readthedocs': <module 'readthedocs_ext.readthedocs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/readthedocs.pyc'>, 'jinja2.markupsafe': None, 'lago.providers.libvirt.xmltodict': None, 'lago.utils': <module 'lago.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/utils.pyc'>, 'babel.localtime.datetime': None, 'codecs': <module 'codecs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/codecs.pyc'>, 'setuptools.dist': <module 'setuptools.dist' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/dist.pyc'>, 'jinja2.lexer': <module 'jinja2.lexer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/lexer.pyc'>, 'docutils.parsers.rst.languages.sys': None, 'docutils.utils.math.docutils': None, 'pygments.filters.pygments': None, 'sphinx.pycode.pgen2.re': None, 'requests.packages.urllib3.util.retry': <module 'requests.packages.urllib3.util.retry' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/retry.pyc'>, 'distutils.sys': None, 'nose.tools.nontrivial': <module 'nose.tools.nontrivial' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/tools/nontrivial.pyc'>, 'json.decoder': <module 'json.decoder' from '/usr/lib/python2.7/json/decoder.pyc'>, 'sphinx.writers.html': <module 'sphinx.writers.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/html.pyc'>, 'sphinx.builders.subprocess': None, 'docutils.codecs': None, 'sphinx.pycode.__future__': None, 'pkg_resources._vendor.datetime': None, 'pygments.lexers.css': <module 'pygments.lexers.css' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/css.pyc'>, 'ctypes._ctypes': None, '_heapq': <module '_heapq' (built-in)>, 'sphinx.ext.napoleon.sphinx': None, 'requests.packages.urllib3.util': <module 'requests.packages.urllib3.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/__init__.pyc'>, 'email.sys': None, 'tokenize': <module 'tokenize' from '/usr/lib/python2.7/tokenize.pyc'>, 'cPickle': <module 'cPickle' (built-in)>, 'markupsafe.re': None, 'jinja2.tempfile': None, 'sphinx.environment.managers.docutils': None, 'docutils.utils.math': <module 'docutils.utils.math' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/__init__.pyc'>, 'sphinx.builders.os': None, 'sphinx.builders.devhelp': <module 'sphinx.builders.devhelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/devhelp.pyc'>, 'setup': <module 'setup' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/setup.pyc'>, 'pkg_resources._vendor.copy': None, 'fnmatch': <module 'fnmatch' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/fnmatch.pyc'>, 'pygments.regexopt': <module 'pygments.regexopt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/regexopt.pyc'>, 'logging.cStringIO': None, 'sphinx.domains.c': <module 'sphinx.domains.c' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/c.pyc'>, 'lago.plugins.contextlib': None, 'nose.pyversion': <module 'nose.pyversion' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/pyversion.pyc'>, 'xml.sax.xml': None, 'email.message': <module 'email.message' from '/usr/lib/python2.7/email/message.pyc'>, 'strop': <module 'strop' (built-in)>, 'sphinx.builders.shlex': None, 'six.moves.html_parser': <module 'HTMLParser' from '/usr/lib/python2.7/HTMLParser.pyc'>, 'ovirtlago.yaml': None, 'lago.argparse': None, 'sphinx.re': None, 'sphinx.util.stemmer': <module 'sphinx.util.stemmer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/stemmer.pyc'>, 'sphinx.pycode.sphinx': None, 'os.path': <module 'posixpath' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/posixpath.pyc'>, 'email.base64mime': <module 'email.base64mime' from '/usr/lib/python2.7/email/base64mime.pyc'>, 'requests.packages.urllib3.util.request': <module 'requests.packages.urllib3.util.request' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/request.pyc'>, 'docutils.utils.pygments': None, 'sphinx.util.requests': <module 'sphinx.util.requests' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/requests.pyc'>, 'functools': <module 'functools' from '/usr/lib/python2.7/functools.pyc'>, 'pkg_resources._vendor.weakref': None, 'distutils.fancy_getopt': <module 'distutils.fancy_getopt' from '/usr/lib/python2.7/distutils/fancy_getopt.pyc'>, 'sphinx.ext.__future__': None, 'babel.messages.time': None, 'uuid': <module 'uuid' from '/usr/lib/python2.7/uuid.pyc'>, 'requests.time': None, 'lago.providers.libvirt.os': None, 'imp': <module 'imp' (built-in)>, 'multiprocessing.os': None, 'sphinx.pycode.sys': None, 'docutils.parsers.rst.languages.en': <module 'docutils.parsers.rst.languages.en' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/languages/en.pyc'>, 'sphinx_rtd_theme': <module 'sphinx_rtd_theme' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx_rtd_theme/__init__.pyc'>, 'jinja2': <module 'jinja2' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/__init__.pyc'>, 'setuptools.extern.pkg_resources': None, 'sphinx.util.os': None, 'sphinx.environment.managers.bisect': None, 'lago.plugins.yaml': None, 'sphinx.writers.re': None, 'requests.packages.urllib3.util.collections': None, 'sphinx.writers.textwrap': None, 'babel.localedata': <module 'babel.localedata' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/localedata.pyc'>, 'babel.localtime._unix': <module 'babel.localtime._unix' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/localtime/_unix.pyc'>, 'babel.core': <module 'babel.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/core.pyc'>, 'docutils.writers': <module 'docutils.writers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/__init__.pyc'>, 'sphinx.websupport.six': None, 'encodings.stringprep': None, 'pytz.pytz': None, 're': <module 're' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/re.pyc'>, 'readthedocs_ext.comments.docutils': None, 'email.quopri': None, 'ovirtlago.collections': None, 'lago.urlparse': None, 'lago_template_repo.os': None, 'pygments.lexers.special': <module 'pygments.lexers.special' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/special.pyc'>, 'lago.errno': None, 'babel.localtime.threading': None, 'sphinx.util.sys': None, 'sphinx.operator': None, 'readthedocs_ext.comments.hasher': <module 'readthedocs_ext.comments.hasher' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/hasher.pyc'>, 'markupsafe.string': None, '_locale': <module '_locale' (built-in)>, 'lago.providers.libvirt.pkg_resources': None, 'logging': <module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>, 'traceback': <module 'traceback' from '/usr/lib/python2.7/traceback.pyc'>, 'imagesize.get': <module 'imagesize.get' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/imagesize/get.pyc'>, 'docutils.utils.unicodedata': None, 'ctypes.re': None, 'sphinx.itertools': None, 'lago.signal': None, 'PIL.PIL': None, 'sphinx.domains.docutils': None, 'sphinx.environment.managers.itertools': None, 'pkg_resources._vendor.packaging._compat': <module 'pkg_resources._vendor.packaging._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_compat.pyc'>, 'sphinx.util.logging': <module 'sphinx.util.logging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/logging.pyc'>, 'docutils.utils.punctuation_chars': <module 'docutils.utils.punctuation_chars' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/punctuation_chars.pyc'>, 'lago.urllib': None, 'sphinx.alabaster': None, 'lago.hashlib': None, 'babel.messages.operator': None, 'docutils.parsers.rst.roles': <module 'docutils.parsers.rst.roles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/roles.pyc'>, 'keyword': <module 'keyword' from '/usr/lib/python2.7/keyword.pyc'>, 'stringprep': <module 'stringprep' from '/usr/lib/python2.7/stringprep.pyc'>, 'pygments.lexers.fnmatch': None, 'jinja2.math': None, 'sphinx.util.datetime': None, 'sphinx.builders.datetime': None, 'requests.packages.urllib3.packages.thread': None, 'readthedocs_ext.comments.sphinx': None, 'docutils.parsers.rst.directives.tables': <module 'docutils.parsers.rst.directives.tables' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/tables.pyc'>, 'pkg_resources.extern.pyparsing': <module 'pkg_resources._vendor.pyparsing' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc'>, 'docutils.transforms.universal': <module 'docutils.transforms.universal' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/universal.pyc'>, 'readthedocs_ext': <module 'readthedocs_ext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/__init__.pyc'>, 'requests.os': None, 'babel.StringIO': None, 'babel.babel': None, 'email.MIMEMultipart': <email.LazyImporter object>, 'unittest.difflib': None, 'jinja2.hashlib': None, 'glob': <module 'glob' from '/usr/lib/python2.7/glob.pyc'>, 'lago.plugins.collections': None, 'jinja2.operator': None, 'sphinx.util.struct': None, 'requests.cookielib': None, 'ovirtlago.functools': None, 'sphinx.writers.six': None, 'sphinx.domains.rst': <module 'sphinx.domains.rst' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/rst.pyc'>, 'random': <module 'random' from '/usr/lib/python2.7/random.pyc'>, 'requests.urlparse': None, 'pygments.operator': None, 'setuptools.sys': None, 'pytz.cStringIO': None, 'jinja2.marshal': None, 'email.time': None, 'requests.packages.urllib3.packages.six.moves': <module 'requests.packages.urllib3.packages.six.moves' (built-in)>, 'pkg_resources._vendor.warnings': None, 'sphinx.pycode.pgen2.token': <module 'sphinx.pycode.pgen2.token' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/token.pyc'>, 'nose.plugins.errorclass': <module 'nose.plugins.errorclass' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/errorclass.pyc'>, 'docutils.utils.math.latex2mathml': <module 'docutils.utils.math.latex2mathml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/latex2mathml.pyc'>, 'xml.etree.ElementTree': <module 'xml.etree.ElementTree' from '/usr/lib/python2.7/xml/etree/ElementTree.pyc'>, 'lago.plugins.scp': None, 'sphinx.environment.time': None, 'pytz.tzinfo': <module 'pytz.tzinfo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/tzinfo.pyc'>, 'lago.providers.libvirt.cpu': <module 'lago.providers.libvirt.cpu' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/cpu.pyc'>, 'nose.tools.unittest': None, 'pytz.UserDict': None, 'jinja2.cStringIO': None, 'lago.time': None, 'docutils.types': None, 'lago.providers.libvirt.collections': None, 'pyexpat.model': <module 'pyexpat.model' (built-in)>, 'pkg_resources._vendor.six.moves': <module 'pkg_resources._vendor.six.moves' (built-in)>, 'nose.failure': <module 'nose.failure' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/failure.pyc'>, 'sphinx.writers.docutils': None, 'docutils.utils.smartquotes': <module 'docutils.utils.smartquotes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/smartquotes.pyc'>, 'sphinx.builders.qthelp': <module 'sphinx.builders.qthelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/qthelp.pyc'>, 'requests.status_codes': <module 'requests.status_codes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/status_codes.pyc'>, 'docutils.parsers.rst.directives.PIL': None, 'docutils.writers.latex2e.re': None, 'urllib': <module 'urllib' from '/usr/lib/python2.7/urllib.pyc'>, 'sphinx.posixpath': None, 'sphinx.pycode.pgen2.parse': <module 'sphinx.pycode.pgen2.parse' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/parse.pyc'>, 'Queue': <module 'Queue' from '/usr/lib/python2.7/Queue.pyc'>, 'ctypes': <module 'ctypes' from '/usr/lib/python2.7/ctypes/__init__.pyc'>, 'sphinx.pygments': None, 'sphinx.websupport.storage': <module 'sphinx.websupport.storage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/storage/__init__.pyc'>, 'readthedocs_ext.requests': None, 'unittest.signal': None, 'PIL._util': <module 'PIL._util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/_util.pyc'>, 'requests': <module 'requests' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/__init__.pyc'>, 'sphinx.search.en': <module 'sphinx.search.en' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/search/en.pyc'>, 'sphinx.websupport.os': None, 'email.uu': None, 'docutils.transforms.frontmatter': <module 'docutils.transforms.frontmatter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/frontmatter.pyc'>, 'pygments.lexers.re': None, 'email.calendar': None, 'jinja2.random': None, 'pkgutil': <module 'pkgutil' from '/usr/lib/python2.7/pkgutil.pyc'>, 'nose.plugins.base': <module 'nose.plugins.base' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/base.pyc'>, 'sphinx.util.images': <module 'sphinx.util.images' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/images.pyc'>, 'docutils.utils.code_analyzer': <module 'docutils.utils.code_analyzer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/code_analyzer.pyc'>, 'sphinx.domains.javascript': <module 'sphinx.domains.javascript' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/javascript.pyc'>, 'ovirtsdk.infrastructure.errors': <sphinx.ext.autodoc._MockModule object>, 'pkg_resources._vendor.sys': None, 'pytz': <module 'pytz' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/__init__.pyc'>, 'jinja2.bccache': <module 'jinja2.bccache' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/bccache.pyc'>, 'sphinx.websupport.jinja2': None, 'readthedocs_ext.comments.backend': <module 'readthedocs_ext.comments.backend' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/backend.pyc'>, 'encodings.re': None, 'zlib': <module 'zlib' (built-in)>, 'email.random': None, 'setuptools': <module 'setuptools' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/__init__.pyc'>, 'sphinx.locale.six': None, 'sphinx.ext.os': None, 'sphinx.domains.cpp': <module 'sphinx.domains.cpp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/cpp.pyc'>, 'sphinx.writers.os': None, 'pkg_resources._vendor.appdirs': <module 'pkg_resources._vendor.appdirs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.pyc'>, 'ovirtlago.itertools': None, 'io': <module 'io' from '/usr/lib/python2.7/io.pyc'>, 'distutils.ConfigParser': None, 'lago.os': None, 'lago.xdg': None, 'ovirtlago.ovirtlago': None, 'unittest.time': None, 'rfc822': <module 'rfc822' from '/usr/lib/python2.7/rfc822.pyc'>, 'ovirtlago.unittest': None, 'pkg_resources._vendor.packaging': <module 'pkg_resources._vendor.packaging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.pyc'>, '_weakref': <module '_weakref' (built-in)>, 'docutils.parsers.rst.directives': <module 'docutils.parsers.rst.directives' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/__init__.pyc'>, 'urlparse': <module 'urlparse' from '/usr/lib/python2.7/urlparse.pyc'>, 'pygments.cStringIO': None, 'gzip': <module 'gzip' from '/usr/lib/python2.7/gzip.pyc'>, 'rpmUtils': <sphinx.ext.autodoc._MockModule object>, 'requests.packages.urllib3.packages.six': <module 'requests.packages.urllib3.packages.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/six.pyc'>, 'sphinx.util.math': None, 'jinja2.threading': None, '_bisect': <module '_bisect' (built-in)>, 'markupsafe.sys': None, 'sphinx.collections': None, 'sphinx.environment.types': None, 'sphinx.util.smartypants': <module 'sphinx.util.smartypants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/smartypants.pyc'>, 'sphinx.directives.re': None, 'requests.packages.urllib3.util.errno': None, 'collections': <module 'collections' from '/usr/lib/python2.7/collections.pyc'>, 'unittest.main': <module 'unittest.main' from '/usr/lib/python2.7/unittest/main.pyc'>, 'ConfigParser': <module 'ConfigParser' from '/usr/lib/python2.7/ConfigParser.pyc'>, 'pkg_resources._vendor.packaging._structures': <module 'pkg_resources._vendor.packaging._structures' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_structures.pyc'>, 'docutils.writers.StringIO': None, 'textwrap': <module 'textwrap' from '/usr/lib/python2.7/textwrap.pyc'>, 'certifi.warnings': None, 'docutils.ConfigParser': None, 'lago.plugins.json': None, 'jinja2.types': None, 'requests.packages.urllib3.util.math': None, 'ovirtlago.pkg_resources': None, 'requests.socket': None, 'lago.configparser': None, 'nilsimsa': <module 'nilsimsa' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nilsimsa/__init__.pyc'>, 'docutils.StringIO': None, 'sphinx.pycode.nodes': <module 'sphinx.pycode.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/nodes.pyc'>, 'pygments.lexers._mapping': <module 'pygments.lexers._mapping' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/_mapping.pyc'>, 'pygments.lexers.os': None, 'lago.providers.libvirt.logging': None, 'pygments.lexers.markup': <module 'pygments.lexers.markup' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/markup.pyc'>, 'setuptools.platform': None, 'sphinx.util.six': None, 'nose.warnings': None, 'sphinx.environment.fnmatch': None, 'sphinx.directives.code': <module 'sphinx.directives.code' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/code.pyc'>, 'sphinx.environment.managers.toctree': <module 'sphinx.environment.managers.toctree' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/managers/toctree.pyc'>, 'jinja2.ext': <module 'jinja2.ext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/ext.pyc'>, 'pygments.os': None, 'jinja2.fnmatch': None, 'docutils.transforms.re': None, 'imghdr': <module 'imghdr' from '/usr/lib/python2.7/imghdr.pyc'>, 'sphinx.application': <module 'sphinx.application' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/application.pyc'>, 'nose.suite': <module 'nose.suite' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/suite.pyc'>, 'docutils.readers.standalone': <module 'docutils.readers.standalone' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/readers/standalone.pyc'>, 'lago.plugins.vm': <module 'lago.plugins.vm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/vm.pyc'>, 'sphinx.ext.re': None, 'setuptools.monkey': <module 'setuptools.monkey' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/monkey.pyc'>, 'distutils.dir_util': <module 'distutils.dir_util' from '/usr/lib/python2.7/distutils/dir_util.pyc'>, 'sphinx.builders.socket': None, 'requests.packages.urllib3.packages.ssl_match_hostname': <module 'requests.packages.urllib3.packages.ssl_match_hostname' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc'>, 'pygments.formatters.fnmatch': None, 'ovirtlago.virt': <module 'ovirtlago.virt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/virt.pyc'>, '_socket': <module '_socket' (built-in)>, 'email.Utils': <email.LazyImporter object>, 'lago': <module 'lago' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/__init__.pyc'>, 'nose.plugins.cPickle': None, 'pygments.formatters': <module 'pygments.formatters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/__init__.pyc'>, 'docutils.parsers.rst.languages.docutils': None, 'jinja2.environment': <module 'jinja2.environment' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/environment.pyc'>, 'docutils.parsers.rst.sys': None, 'mimetools': <module 'mimetools' from '/usr/lib/python2.7/mimetools.pyc'>, 'babel.os': None, 'distutils.fnmatch': None, 'ovirtsdk': <sphinx.ext.autodoc._MockModule object>, 'docutils.writers.latex2e.os': None, 'docutils.parsers': <module 'docutils.parsers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/__init__.pyc'>, 'docutils.writers.manpage': <module 'docutils.writers.manpage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/manpage.pyc'>, 'logging.traceback': None, 'markupsafe.collections': None, 'genericpath': <module 'genericpath' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/genericpath.pyc'>, 'urllib2': <module 'urllib2' from '/usr/lib/python2.7/urllib2.pyc'>, 'ctypes.ctypes': None, 'time': <module 'time' (built-in)>, 'nose.ConfigParser': None, 'docutils.parsers.rst.states': <module 'docutils.parsers.rst.states' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/states.pyc'>, 'pygments.lexers.pygments': None, 'sphinx.directives': <module 'sphinx.directives' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/__init__.pyc'>, 'pkg_resources._vendor.traceback': None, 'docutils.utils.sys': None, 'jinja2.tests': <module 'jinja2.tests' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/tests.pyc'>, 'requests.packages.urllib3.packages.six.moves.http_client': <module 'httplib' from '/usr/lib/python2.7/httplib.pyc'>, 'jinja2.string': None, 'babel.messages.babel': None, 'docutils.parsers.rst.directives.time': None, 'sphinx.environment': <module 'sphinx.environment' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/__init__.pyc'>, 'string': <module 'string' from '/usr/lib/python2.7/string.pyc'>, 'markupsafe': <module 'markupsafe' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/markupsafe/__init__.pyc'>, 'email.quoprimime': <module 'email.quoprimime' from '/usr/lib/python2.7/email/quoprimime.pyc'>, 'sphinx.util.nodes': <module 'sphinx.util.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/nodes.pyc'>, 'datetime': <module 'datetime' (built-in)>, 'lxml.etree': <sphinx.ext.autodoc._MockModule object>, 'distutils.getopt': None, 'ovirtlago.paths': <module 'ovirtlago.paths' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/paths.pyc'>, 'ovirtlago.textwrap': None, 'sphinx.builders.sys': None, 'sphinx.search': <module 'sphinx.search' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/search/__init__.pyc'>, 'sphinx.websupport.docutils': None, 'requests.logging': None, 'multiprocessing': <module 'multiprocessing' from '/usr/lib/python2.7/multiprocessing/__init__.pyc'>, 'dis': <module 'dis' from '/usr/lib/python2.7/dis.pyc'>, 'sphinx.pygments_styles': <module 'sphinx.pygments_styles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pygments_styles.pyc'>, 'lago.textwrap': None, 'setuptools.marshal': None, 'jinja2.sys': None, 'babel.util': <module 'babel.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/util.pyc'>, 'jinja2.defaults': <module 'jinja2.defaults' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/defaults.pyc'>, 'xml.sax.io': None, 'docutils.pprint': None, 'nose.plugins.sys': None, 'logging.stat': None, 'PIL.Image': <module 'PIL.Image' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/Image.pyc'>, '_ctypes': <module '_ctypes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so'>, 'exceptions': <module 'exceptions' (built-in)>, 'docutils.utils.roman': <module 'docutils.utils.roman' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/roman.pyc'>, 'sphinx.builders.latex': <module 'sphinx.builders.latex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/latex.pyc'>, 'email.socket': None, 'requests.packages.urllib3.packages.six.moves.urllib.parse': <module 'requests.packages.urllib3.packages.six.moves.urllib_parse' (built-in)>, 'weakref': <module 'weakref' from '/usr/lib/python2.7/weakref.pyc'>, 'ovirtlago.SimpleHTTPServer': None, 'sphinx.builders.plistlib': None, '_json': <module '_json' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_json.x86_64-linux-gnu.so'>, 'email.FeedParser': <email.LazyImporter object>, 'pyexpat.errors': <module 'pyexpat.errors' (built-in)>, 'email.charset': <module 'email.charset' from '/usr/lib/python2.7/email/charset.pyc'>, 'logging.re': None, 'readthedocs_ext.comments.builder': <module 'readthedocs_ext.comments.builder' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/builder.pyc'>, 'six.moves.urllib': <module 'six.moves.urllib' (built-in)>, 'email.MIMEMessage': <email.LazyImporter object>, 'email._parseaddr': <module 'email._parseaddr' from '/usr/lib/python2.7/email/_parseaddr.pyc'>, 'distutils.errno': None, 'sphinx.ext.autodoc': <module 'sphinx.ext.autodoc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/autodoc.pyc'>, 'sphinx.ext.traceback': None, 'alabaster._version': <module 'alabaster._version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/alabaster/_version.pyc'>, 'nose.plugins': <module 'nose.plugins' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/__init__.pyc'>, 'sphinx.util.sphinx': None, 'pickle': <module 'pickle' from '/usr/lib/python2.7/pickle.pyc'>, 'xml.sax.types': None, 'pygments.lexers.python': <module 'pygments.lexers.python' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/python.pyc'>, 'pkg_resources._vendor.os': None, 'setuptools.urllib': None, 'sphinx.directives.docutils': None, 'distutils.email': None, 'sphinx.directives.six': None, 'babel.localtime.re': None, 'sphinx.ext.napoleon.iterators': <module 'sphinx.ext.napoleon.iterators' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/napoleon/iterators.pyc'>, 'xml.etree.ElementPath': <module 'xml.etree.ElementPath' from '/usr/lib/python2.7/xml/etree/ElementPath.pyc'>, 'babel.pytz': None, 'lago_template_repo.sys': None, 'ovirtlago.sys': None, 'email.parser': <module 'email.parser' from '/usr/lib/python2.7/email/parser.pyc'>, 'sphinx.pycode.pgen2': <module 'sphinx.pycode.pgen2' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/__init__.pyc'>, 'ssl': <module 'ssl' from '/usr/lib/python2.7/ssl.pyc'>, 'docutils.languages.en': <module 'docutils.languages.en' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/languages/en.pyc'>, 'marshal': <module 'marshal' (built-in)>, '_weakrefset': <module '_weakrefset' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/_weakrefset.pyc'>, 'nose.plugins.plugintest': <module 'nose.plugins.plugintest' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/plugintest.pyc'>, 'unittest.traceback': None, 'pygments.lexers.ruby': <module 'pygments.lexers.ruby' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/ruby.pyc'>, 'unittest.os': None, 'tty': <module 'tty' from '/usr/lib/python2.7/tty.pyc'>, 'pygments.pygments': None, 'sphinx.directives.codecs': None, 'ovirtlago.configparser': None, 'email.MIMEImage': <email.LazyImporter object>, 'sphinx.ext.types': None, 'jinja2.json': None, 'pygments.formatters.types': None, 'sphinx.ext.time': None, 'platform': <module 'platform' from '/usr/lib/python2.7/platform.pyc'>, 'markupsafe.markupsafe': None, 'ovirtsdk.api': <sphinx.ext.autodoc._MockModule object>, 'unittest.functools': None, 'sphinx.util.termios': None, 'unittest.util': <module 'unittest.util' from '/usr/lib/python2.7/unittest/util.pyc'>, 'sphinx.directives.sphinx': None, 'docutils.writers.html4css1': <module 'docutils.writers.html4css1' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/html4css1/__init__.pyc'>, 'email.encoders': <module 'email.encoders' from '/usr/lib/python2.7/email/encoders.pyc'>, 'docutils.parsers.rst.directives.os': None, 'sphinx.search.re': None, 'jinja2.sandbox': <module 'jinja2.sandbox' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/sandbox.pyc'>, 'sphinx.builders.threading': None, 'distutils.dist': <module 'distutils.dist' from '/usr/lib/python2.7/distutils/dist.pyc'>, 'BaseHTTPServer': <module 'BaseHTTPServer' from '/usr/lib/python2.7/BaseHTTPServer.pyc'>, 'nose.traceback': None, 'docutils.writers.latex2e.docutils': None, 'docutils.utils.math.codecs': None, 'sphinx.builders.zipfile': None, 'pkg_resources._vendor.packaging.__about__': <module 'pkg_resources._vendor.packaging.__about__' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.pyc'>, 'pygments.filters.re': None, 'nose.tools.nose': None, 'lago.providers.libvirt.functools': None, 'lago.warnings': None, 'docutils.utils.math.unichar2tex': <module 'docutils.utils.math.unichar2tex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/unichar2tex.pyc'>, 'docutils.utils.math.gettext': None, 'docutils.io': <module 'docutils.io' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/io.pyc'>, 'sphinx.websupport.search.re': None, 'babel.array': None, 'pkg_resources._vendor.packaging.markers': <module 'pkg_resources._vendor.packaging.markers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.pyc'>, 'pkg_resources._vendor.packaging.version': <module 'pkg_resources._vendor.packaging.version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.pyc'>, 'nose.optparse': None, 'pygments.lexers.sys': None, 'yaml': <sphinx.ext.autodoc._MockModule object>, 'xml.parsers.pyexpat': None, 'array': <module 'array' (built-in)>, 'requests.packages.urllib3.util.url': <module 'requests.packages.urllib3.util.url' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/url.pyc'>, 'setuptools.version': <module 'setuptools.version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/version.pyc'>, 'pytz.exceptions': <module 'pytz.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/exceptions.pyc'>, 'readthedocs_ext.comments.uuid': None, 'types': <module 'types' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/types.pyc'>, 'lago.providers.libvirt.guestfs': None, 'xml.sax.handler': <module 'xml.sax.handler' from '/usr/lib/python2.7/xml/sax/handler.pyc'>, 'sphinx.ext.todo': <module 'sphinx.ext.todo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/todo.pyc'>, 'lago.build': <module 'lago.build' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/build.pyc'>, 'argparse': <module 'argparse' from '/usr/lib/python2.7/argparse.pyc'>, '_codecs': <module '_codecs' (built-in)>, 'babel.messages.email': None, 'docutils.parsers.rst.directives.docutils': None, 'distutils.imp': None, 'copy': <module 'copy' from '/usr/lib/python2.7/copy.pyc'>, 'pkg_resources._vendor.pyparsing': <module 'pkg_resources._vendor.pyparsing' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc'>, 'unittest.weakref': None, 'posix': <module 'posix' (built-in)>, 'sphinx.tempfile': None, 'lago.datetime': None, 'docutils.transforms.parts': <module 'docutils.transforms.parts' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/parts.pyc'>, 'sphinx.builders.sphinx': None, 'encodings.__builtin__': None, 'markupsafe._speedups': <module 'markupsafe._speedups' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/markupsafe/_speedups.so'>, 'ovirtlago.lago': None, 'unittest.result': <module 'unittest.result' from '/usr/lib/python2.7/unittest/result.pyc'>, 'nose.imp': None, 'sphinx.pycode.pgen2.os': None, 'sphinx.search.jssplitter': <module 'sphinx.search.jssplitter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/search/jssplitter.pyc'>, 'nose.plugins.nose': None, 'pygments.modeline': <module 'pygments.modeline' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/modeline.pyc'>, 'requests.packages.urllib3.util.selectors': <module 'requests.packages.urllib3.util.selectors' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/selectors.pyc'>, 'linecache': <module 'linecache' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/linecache.pyc'>, 'sphinx.pycode': <module 'sphinx.pycode' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/__init__.pyc'>, 'docutils.transforms.sys': None, 'hmac': <module 'hmac' from '/usr/lib/python2.7/hmac.pyc'>, 'lago.providers.libvirt.lxml': None, 'subprocess': <module 'subprocess' from '/usr/lib/python2.7/subprocess.pyc'>, 'docutils.writers.latex2e.string': None, 'pytz.datetime': None, 'jinja2.loaders': <module 'jinja2.loaders' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/loaders.pyc'>, 'pygments.formatters._mapping': <module 'pygments.formatters._mapping' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/_mapping.pyc'>, 'xml': <module 'xml' from '/usr/lib/python2.7/xml/__init__.pyc'>, 'babel.textwrap': None, 'docutils.utils.math.math2html': <module 'docutils.utils.math.math2html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/math2html.pyc'>, 'babel.messages.re': None, 'requests.packages.urllib3.packages.ssl_match_hostname.sys': None, 'ovirtlago.warnings': None, 'requests.collections': None, 'docutils.docutils': None, 'lago.plugins.abc': None, 'sphinx.jinja2glue': <module 'sphinx.jinja2glue' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/jinja2glue.pyc'>, 'zipfile': <module 'zipfile' from '/usr/lib/python2.7/zipfile.pyc'>, 'repr': <module 'repr' from '/usr/lib/python2.7/repr.pyc'>, 'sphinx.websupport': <module 'sphinx.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/__init__.pyc'>, 'requests.packages.urllib3': <module 'requests.packages.urllib3' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/__init__.pyc'>, 'sphinx.builders.six': None, 'lago.plugins.lago': None, 'nose.plugins.inspect': None, 'nose.plugins.pkg_resources': None, 'sphinx.builders.docutils': None, 'email': <module 'email' from '/usr/lib/python2.7/email/__init__.pyc'>, 'unittest.re': None, 'threading': <module 'threading' from '/usr/lib/python2.7/threading.pyc'>, 'nose.plugins.skip': <module 'nose.plugins.skip' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/skip.pyc'>, 'email.Message': <email.LazyImporter object>, 'unittest.case': <module 'unittest.case' from '/usr/lib/python2.7/unittest/case.pyc'>, 'sphinx.search.docutils': None, 'docutils.languages': <module 'docutils.languages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/languages/__init__.pyc'>, 'babel.__future__': None, 'pkg_resources._vendor.re': None, 'calendar': <module 'calendar' from '/usr/lib/python2.7/calendar.pyc'>, 'babel.localtime.os': None, 'plistlib': <module 'plistlib' from '/usr/lib/python2.7/plistlib.pyc'>, 'sphinx.pycode.pgen2.collections': None, 'sphinx.writers.copy': None, 'pkg_resources.extern.packaging.version': <module 'pkg_resources._vendor.packaging.version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.pyc'>, 'babel.re': None, '_MozillaCookieJar': <module '_MozillaCookieJar' from '/usr/lib/python2.7/_MozillaCookieJar.pyc'>, 'requests.urllib': None, 'fcntl': <module 'fcntl' (built-in)>, 'docutils.utils.math.subprocess': None, 'distutils.os': None, 'json.re': None, 'nose.importer': <module 'nose.importer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/importer.pyc'>, 'requests.packages.urllib3.connection': <module 'requests.packages.urllib3.connection' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/connection.pyc'>, 'ovirtlago.logging': None, 'sphinx.builders.xml': <module 'sphinx.builders.xml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/xml.pyc'>, 'distutils.spawn': <module 'distutils.spawn' from '/usr/lib/python2.7/distutils/spawn.pyc'>, 'opcode': <module 'opcode' from '/usr/lib/python2.7/opcode.pyc'>, 'docutils.parsers.rst.directives.re': None, 'requests.warnings': None, 'unittest': <module 'unittest' from '/usr/lib/python2.7/unittest/__init__.pyc'>, 'logging.errno': None, 'lago.sys': None, 'sphinx.transforms.compact_bullet_list': <module 'sphinx.transforms.compact_bullet_list' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/transforms/compact_bullet_list.pyc'>, 'nose.inspect': None, 'sre_constants': <module 'sre_constants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/sre_constants.pyc'>, 'sphinx.ext.napoleon': <module 'sphinx.ext.napoleon' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/napoleon/__init__.pyc'>, 'certifi': <module 'certifi' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/certifi/__init__.pyc'>, 'sphinx.util.tags': <module 'sphinx.util.tags' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/tags.pyc'>, 'docutils.parsers.rst.docutils': None, 'docutils.readers': <module 'docutils.readers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/readers/__init__.pyc'>, 'sphinx.environment.sphinx': None, 'sphinx.builders.text': <module 'sphinx.builders.text' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/text.pyc'>, 'logging.atexit': None, 'logging.cPickle': None, 'readthedocs_ext.comments.json': None, 'email.MIMENonMultipart': <email.LazyImporter object>, 'sphinx.util.websupport': <module 'sphinx.util.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/websupport.pyc'>, 'lago.paramiko': None, 'nose.types': None, 'readthedocs_ext.embed': <module 'readthedocs_ext.embed' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/embed.pyc'>, 'sphinx.search.os': None, 'FixTk': <module 'FixTk' from '/usr/lib/python2.7/lib-tk/FixTk.pyc'>, 'lago.providers.libvirt.utils': <module 'lago.providers.libvirt.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/utils.pyc'>, 'pkg_resources._vendor.packaging.specifiers': <module 'pkg_resources._vendor.packaging.specifiers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc'>, 'nose.proxy': <module 'nose.proxy' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/proxy.pyc'>, 'requests.packages.urllib3.packages._abcoll': None, 'sphinx.ext.napoleon.re': None, 'shutil': <module 'shutil' from '/usr/lib/python2.7/shutil.pyc'>, 'sphinx.builders.texinfo': <module 'sphinx.builders.texinfo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/texinfo.pyc'>, 'lago.export': <module 'lago.export' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/export.pyc'>, 'docutils.utils.codecs': None, 'sphinx.util.errno': None, 'PIL.numbers': None, 'pygments.formatters.pygments': None, 'pkg_resources.extern': <module 'pkg_resources.extern' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/extern/__init__.pyc'>, 'multiprocessing.subprocess': None, 'importlib.sys': None, 'ovirtlago.testlib': <module 'ovirtlago.testlib' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/testlib.pyc'>, 'jinja2.visitor': <module 'jinja2.visitor' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/visitor.pyc'>, 'encodings.idna': <module 'encodings.idna' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/idna.pyc'>, 'docutils.utils.math.os': None, 'pygments.lexers.c_cpp': <module 'pygments.lexers.c_cpp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/c_cpp.pyc'>, 'docutils.languages.sys': None, 'docutils.parsers.rst.directives.csv': None, 'requests.packages.chardet': <module 'requests.packages.chardet' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/chardet/__init__.pyc'>, 'struct': <module 'struct' from '/usr/lib/python2.7/struct.pyc'>, 'sphinx.ext.sphinx': None, 'docutils.core': <module 'docutils.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/core.pyc'>, 'lago.select': None, 'email.Parser': <email.LazyImporter object>, 'distutils.types': None, 'pkg_resources.extern.packaging.markers': <module 'pkg_resources._vendor.packaging.markers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.pyc'>, 'httplib': <module 'httplib' from '/usr/lib/python2.7/httplib.pyc'>, 'sphinx.pycode.pgen2.pgen': <module 'sphinx.pycode.pgen2.pgen' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/pgen.pyc'>, 'lago.termios': None, 'sphinx.environment.managers.re': None, 'nose': <module 'nose' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/__init__.pyc'>, 'sphinx.directives.difflib': None, 'SimpleHTTPServer': <module 'SimpleHTTPServer' from '/usr/lib/python2.7/SimpleHTTPServer.pyc'>, 'sphinx.util.contextlib': None, 'nose.unittest': None, 'pygments.lexers.copy': None, 'requests.re': None, 'sphinx.util.multiprocessing': None, 'email.MIMEAudio': <email.LazyImporter object>, 'pygments.formatters.re': None, 'email.errors': <module 'email.errors' from '/usr/lib/python2.7/email/errors.pyc'>, 'nose.plugins.manager': <module 'nose.plugins.manager' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/manager.pyc'>, 'sphinx.util.traceback': None, 'sphinx.ext.posixpath': None, 'sphinx.ext.functools': None, 'inspect': <module 'inspect' from '/usr/lib/python2.7/inspect.pyc'>, 'sphinx.util.locale': None, 'sphinx.domains.string': None, 'email.Iterators': <email.LazyImporter object>, 'lago.providers.libvirt.time': None, 'lago.subnet_lease': <module 'lago.subnet_lease' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/subnet_lease.pyc'>, 'email.Charset': <email.LazyImporter object>, 'jinja2.warnings': None, 'os': <module 'os' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/os.pyc'>, 'docutils.transforms': <module 'docutils.transforms' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/__init__.pyc'>, 'requests.certs': <module 'requests.certs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/certs.pyc'>, 'sphinx.domains.re': None, 'jinja2.itertools': None, 'operator': <module 'operator' (built-in)>, 'jinja2.runtime': <module 'jinja2.runtime' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/runtime.pyc'>, 'readthedocs_ext.__future__': None, 'babel.messages.os': None, 'Cookie': <module 'Cookie' from '/usr/lib/python2.7/Cookie.pyc'>, 'lago_template_repo.lago': None, '_warnings': <module '_warnings' (built-in)>, 'imagesize': <module 'imagesize' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/imagesize/__init__.pyc'>, 'lago.collections': None, 'nose.plugins.itertools': None, 'babel.dates': <module 'babel.dates' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/dates.pyc'>, 'sphinx.builders': <module 'sphinx.builders' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/__init__.pyc'>, 'lago.array': None, 'sphinx.util.jsonimpl': <module 'sphinx.util.jsonimpl' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/jsonimpl.pyc'>, 'sphinx.pycode.re': None, 'multiprocessing.process': <module 'multiprocessing.process' from '/usr/lib/python2.7/multiprocessing/process.pyc'>, 'logging.SocketServer': None, 'requests.struct': None, 'docutils.languages.docutils': None, 'sphinx.ext.coverage': <module 'sphinx.ext.coverage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/coverage.pyc'>, 'lago.grp': None, 'sphinx.writers.texinfo': <module 'sphinx.writers.texinfo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/texinfo.pyc'>, 'sphinx.pkg_resources': None, 'requests.threading': None, 'logging.types': None, 'gettext': <module 'gettext' from '/usr/lib/python2.7/gettext.pyc'>, '_abcoll': <module '_abcoll' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/_abcoll.pyc'>, 'requests.packages.urllib3.request': <module 'requests.packages.urllib3.request' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/request.pyc'>, 'mimetypes': <module 'mimetypes' from '/usr/lib/python2.7/mimetypes.pyc'>, 'sphinx.util.docutils': <module 'sphinx.util.docutils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/docutils.pyc'>, 'pygments.lexers': <module 'pygments.lexers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/__init__.pyc'>, 'unittest.signals': <module 'unittest.signals' from '/usr/lib/python2.7/unittest/signals.pyc'>, 'sphinx.util.io': None, 'termios': <module 'termios' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/termios.x86_64-linux-gnu.so'>, 'sphinx.builders.htmlhelp': <module 'sphinx.builders.htmlhelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/htmlhelp.pyc'>, 'sphinx.pycode.pgen2.six': None, 'sphinx.pycode.pgen2.pickle': None, 'pygments.styles.friendly': <module 'pygments.styles.friendly' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/styles/friendly.pyc'>, 'readthedocs_ext.docutils': None, 'sphinx.util.docstrings': <module 'sphinx.util.docstrings' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/docstrings.pyc'>, 'sphinx.deprecation': <module 'sphinx.deprecation' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/deprecation.pyc'>, 'filecmp': <module 'filecmp' from '/usr/lib/python2.7/filecmp.pyc'>, 'xml.sax.expatreader': <module 'xml.sax.expatreader' from '/usr/lib/python2.7/xml/sax/expatreader.pyc'>, 'sphinx.environment.docutils': None, 'sphinx.uuid': None, 'scp': <sphinx.ext.autodoc._MockModule object>, 'requests.packages.urllib3._collections': <module 'requests.packages.urllib3._collections' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/_collections.pyc'>, '_virtualenv_distutils.sys': None, 'sphinx.builders.epub3': <module 'sphinx.builders.epub3' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/epub3.pyc'>, 'babel.codecs': None, 'sphinx.ext.intersphinx': <module 'sphinx.ext.intersphinx' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/intersphinx.pyc'>, 'sphinx.util.filecmp': None, 'encodings.utf_8': <module 'encodings.utf_8' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/utf_8.pyc'>, 'setuptools.windows_support': <module 'setuptools.windows_support' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/windows_support.pyc'>, 'json.encoder': <module 'json.encoder' from '/usr/lib/python2.7/json/encoder.pyc'>, 'lago.providers.libvirt.network': <module 'lago.providers.libvirt.network' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/network.pyc'>, 'unittest.StringIO': None, 'sphinx.writers.text': <module 'sphinx.writers.text' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/text.pyc'>, 'sphinx.writers': <module 'sphinx.writers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/__init__.pyc'>, 'readthedocs_ext.comments.directive': <module 'readthedocs_ext.comments.directive' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/directive.pyc'>, 'docutils.writers._html_base': <module 'docutils.writers._html_base' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/_html_base.pyc'>, 'babel.messages.pofile': <module 'babel.messages.pofile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/pofile.pyc'>, 'sphinx.domains.copy': None, 'lago.plugins.cli': <module 'lago.plugins.cli' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/cli.pyc'>, 'abc': <module 'abc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/abc.pyc'>, 'lago.plugins.warnings': None, 'optparse': <module 'optparse' from '/usr/lib/python2.7/optparse.pyc'>, 'xml.etree': <module 'xml.etree' from '/usr/lib/python2.7/xml/etree/__init__.pyc'>, 'pygments.lexers.html': <module 'pygments.lexers.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/html.pyc'>, 'sphinx.optparse': None, 'imagesize.struct': None, 'multiprocessing.multiprocessing': None, 'guestfs': <sphinx.ext.autodoc._MockModule object>, 'StringIO': <module 'StringIO' from '/usr/lib/python2.7/StringIO.pyc'>, 'requests.packages.urllib3.util.time': None, 'doctest': <module 'doctest' from '/usr/lib/python2.7/doctest.pyc'>, 'sphinx.domains.unicodedata': None, 'lago.workdir': <module 'lago.workdir' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/workdir.pyc'>, 'sphinx.cmdline': <module 'sphinx.cmdline' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/cmdline.pyc'>, 'ovirtlago.reposetup': <module 'ovirtlago.reposetup' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/reposetup.pyc'>, 'docutils.sys': None, 'sphinx.theming': <module 'sphinx.theming' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/theming.pyc'>, 'select': <module 'select' (built-in)>, 'nose.plugins.os': None, 'lago.lago': None, 'pkg_resources._vendor.six.moves.urllib': <module 'pkg_resources._vendor.six.moves.urllib' (built-in)>, 'requests.structures': <module 'requests.structures' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/structures.pyc'>, 'imagesize.sys': None, 'sphinx.util.gettext': None, 'sphinx.util.itertools': None, 'lago.re': None, 'alabaster.alabaster': None, 'sphinx.ext.docutils': None, 'unicodedata': <module 'unicodedata' (built-in)>, 'nose.os': None, 'encodings.aliases': <module 'encodings.aliases' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/aliases.pyc'>, 'sphinx.pprint': None, 'xml.sax._exceptions': <module 'xml.sax._exceptions' from '/usr/lib/python2.7/xml/sax/_exceptions.pyc'>, 'sphinx.config': <module 'sphinx.config' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/config.pyc'>, 'sphinx.__future__': None, 'nose.time': None, 'numbers': <module 'numbers' from '/usr/lib/python2.7/numbers.pyc'>, 'requests.exceptions': <module 'requests.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/exceptions.pyc'>, 'setuptools.ctypes': None, 'pygments.util': <module 'pygments.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/util.pyc'>, 'docutils.utils.math.datetime': None, 'lago.posixpath': None, 'sphinx.environment.managers': <module 'sphinx.environment.managers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/managers/__init__.pyc'>, 'sphinx.ext.sys': None, 'csv': <module 'csv' from '/usr/lib/python2.7/csv.pyc'>, 'sphinx.util.compat': <module 'sphinx.util.compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/compat.pyc'>, 'ovirtlago.time': None, 'nose.tools': <module 'nose.tools' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/tools/__init__.pyc'>, 'sphinx.directives.sys': None, 'sphinx.transforms.sphinx': None, 'pygments.formatter': <module 'pygments.formatter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatter.pyc'>, 'babel.localtime.babel': None, 'sphinx.util.texescape': <module 'sphinx.util.texescape' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/texescape.pyc'>, 'lago.socket': None, 'sphinx.builders.gettext': <module 'sphinx.builders.gettext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/gettext.pyc'>, 'ovirtlago': <module 'ovirtlago' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/__init__.pyc'>, 'sphinx.io': <module 'sphinx.io' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/io.pyc'>, 'babel.messages.copy': None, 'setuptools.pkg_resources': None, 'sphinx.writers.manpage': <module 'sphinx.writers.manpage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/manpage.pyc'>, 'lago.magic': None, 'nose.itertools': None, 'pytz.lazy': <module 'pytz.lazy' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/lazy.pyc'>, 'PIL.sys': None, 'readthedocs_ext.comments.translator': <module 'readthedocs_ext.comments.translator' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/translator.pyc'>, 'requests.urllib2': None, 'docutils.writers.latex2e': <module 'docutils.writers.latex2e' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/latex2e/__init__.pyc'>, 'lago.plugins.os': None, 'sphinx.builders.pipes': None, 'setuptools.distutils': None, 'pkg_resources._vendor.six': <module 'pkg_resources._vendor.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc'>, 'docutils.utils.re': None, 'email.urllib': None, 'sphinx.writers.posixpath': None, 'sphinx.ext.warnings': None, 'decimal': <module 'decimal' from '/usr/lib/python2.7/decimal.pyc'>, 'pkg_resources.extern.six.moves.urllib': <module 'pkg_resources._vendor.six.moves.urllib' (built-in)>, 'token': <module 'token' from '/usr/lib/python2.7/token.pyc'>, 'ovirtlago.contextlib': None, 'sphinx.domains': <module 'sphinx.domains' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/__init__.pyc'>, 'jinja2.UserList': None, 'lago.sysprep': <module 'lago.sysprep' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/sysprep.pyc'>, 'PIL.ImageMode': <module 'PIL.ImageMode' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/ImageMode.pyc'>, 'sphinx.builders.PIL': None, 'six.moves.urllib.parse': <module 'six.moves.urllib_parse' (built-in)>, 'lago.plugins.logging': None, 'nose.loader': <module 'nose.loader' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/loader.pyc'>, 'distutils.warnings': None, 'sphinx.directives.other': <module 'sphinx.directives.other' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/other.pyc'>, 'encodings.utf_8_sig': <module 'encodings.utf_8_sig' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/utf_8_sig.pyc'>, 'jinja2.compiler': <module 'jinja2.compiler' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/compiler.pyc'>, 'certifi.core': <module 'certifi.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/certifi/core.pyc'>, 'requests.packages.urllib3.packages.ssl_match_hostname.re': None, 'ctypes.struct': None, 'sphinx.pycode.pgen2.tokenize': <module 'sphinx.pycode.pgen2.tokenize' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/tokenize.pyc'>, 'lago.uuid': None, 'sphinx.builders.html': <module 'sphinx.builders.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/html.pyc'>, 'thread': <module 'thread' (built-in)>, 'docutils.parsers.rst.directives.body': <module 'docutils.parsers.rst.directives.body' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/body.pyc'>, 'sphinx.types': None, 'multiprocessing.util': <module 'multiprocessing.util' from '/usr/lib/python2.7/multiprocessing/util.pyc'>, '_collections': <module '_collections' (built-in)>, 'sphinx.websupport.sphinx': None, 'docutils.writers.html4css1.docutils': None, 'email.Errors': <email.LazyImporter object>, 'nose.plugins.deprecated': <module 'nose.plugins.deprecated' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/deprecated.pyc'>, 'ctypes.sys': None, 'pygments.lexers.__future__': None, 'posixpath': <module 'posixpath' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/posixpath.pyc'>, 'docutils.utils.locale': None, 'requests.packages.urllib3.packages.ssl_match_hostname.backports': None, 'requests.json': None, 'rpmUtils.miscutils': <sphinx.ext.autodoc._MockModule object>, 'json._json': None, 'nose.core': <module 'nose.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/core.pyc'>, 'sphinx.util.matching': <module 'sphinx.util.matching' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/matching.pyc'>, 'docutils.parsers.sys': None, 'hashlib': <module 'hashlib' from '/usr/lib/python2.7/hashlib.pyc'>, 'lago.plugins': <module 'lago.plugins' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/__init__.pyc'>, 'requests.cgi': None, 'requests.models': <module 'requests.models' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/models.pyc'>, 'sre_compile': <module 'sre_compile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/sre_compile.pyc'>, 'pkg_resources._vendor.threading': None, 'setuptools.extern.six': <module 'pkg_resources._vendor.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc'>, 'setuptools.itertools': None, 'logging.collections': None, 'email.base64': None, 'multiprocessing.atexit': None, 'sphinx.builders.hashlib': None, 'lago.plugins.enum': None, 'requests.packages.chardet.sys': None, 'ovirtlago.constants': <module 'ovirtlago.constants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/constants.pyc'>, 'sphinx.util.osutil': <module 'sphinx.util.osutil' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/osutil.pyc'>, 'warnings': <module 'warnings' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/warnings.pyc'>, 'encodings.ascii': <module 'encodings.ascii' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/ascii.pyc'>, 'lago.glob': None, 'docutils.utils.os': None, 'docutils.transforms.misc': <module 'docutils.transforms.misc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/misc.pyc'>, 'json.sys': None, 'lago.service': <module 'lago.service' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/service.pyc'>, 'multiprocessing._multiprocessing': None, 'bdb': <module 'bdb' from '/usr/lib/python2.7/bdb.pyc'>, '_virtualenv_distutils': <module '_virtualenv_distutils' from '/usr/lib/python2.7/distutils/__init__.pyc'>, 'pkg_resources.extern.six.moves': <module 'pkg_resources._vendor.six.moves' (built-in)>, 'nose.tools.trivial': <module 'nose.tools.trivial' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/tools/trivial.pyc'>, 'lago.providers.libvirt.lago': None, 'heapq': <module 'heapq' from '/usr/lib/python2.7/heapq.pyc'>, 'sphinx.builders.changes': <module 'sphinx.builders.changes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/changes.pyc'>, 'logging.os': None, 'ctypes._endian': <module 'ctypes._endian' from '/usr/lib/python2.7/ctypes/_endian.pyc'>, 'encodings.encodings': None, 'unittest.pprint': None, 'nose.stat': None, 'sphinx.ext.glob': None, 'setuptools.imp': None, 'requests.utils': <module 'requests.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/utils.pyc'>, 'sphinx.pycode.pgen2.string': None, 'pygments.sys': None, 'docutils.transforms.components': <module 'docutils.transforms.components' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/components.pyc'>, 'xml.sax._weakref': None, 'docutils.utils.math.unicodedata': None, 'docutils.parsers.docutils': None, 'docutils.readers.sys': None, 'babel.messages.datetime': None, 'requests.hashlib': None, 'pytz.tzfile': <module 'pytz.tzfile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/tzfile.pyc'>, 'sphinx.builders.applehelp': <module 'sphinx.builders.applehelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/applehelp.pyc'>, 'locale': <module 'locale' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/locale.pyc'>, 'PIL.collections': None, 'jinja2.os': None, 'lago.providers.libvirt.copy': None, 'xml.sax.saxutils': <module 'xml.sax.saxutils' from '/usr/lib/python2.7/xml/sax/saxutils.pyc'>, 'jinja2.urllib': None, 'docutils.parsers.rst.languages': <module 'docutils.parsers.rst.languages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/languages/__init__.pyc'>, 'sphinx.environment.glob': None, 'sphinx.writers.sphinx': None, 'pygments.StringIO': None, 'requests.StringIO': None, 'pkg_resources._vendor.string': None, 'sphinx.versioning': <module 'sphinx.versioning' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/versioning.pyc'>, 'pygments.time': None, 'sphinx.locale.gettext': None, 'lago.brctl': <module 'lago.brctl' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/brctl.pyc'>, 'setuptools.setuptools': None, 'babel.messages.cgi': None, 'pdb': <module 'pdb' from '/usr/lib/python2.7/pdb.pyc'>, 'unittest.collections': None, 'logging.struct': None, 'pkg_resources._vendor.sre_constants': None, 'sphinx.builders.time': None, 'sphinx.ext.napoleon.six': None, 'requests.packages.urllib3.connectionpool': <module 'requests.packages.urllib3.connectionpool' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.pyc'>, 'sphinx.builders.collections': None, 'lago.shutil': None, 'requests.packages.urllib3.util.ssl_': <module 'requests.packages.urllib3.util.ssl_' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.pyc'>, 'requests.certifi': None, 'pytz.os': None, 'pytz.bisect': None, 'sphinx.pycode.pgen2.grammar': <module 'sphinx.pycode.pgen2.grammar' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/grammar.pyc'>, 'sphinx.ext.six': None, 'copy_reg': <module 'copy_reg' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/copy_reg.pyc'>, 'nose.plugins.logging': None, '__main__': <module '__main__' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/bin/sphinx-build'>, 'requests.packages.urllib3.filepost': <module 'requests.packages.urllib3.filepost' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/filepost.pyc'>, 'ovirtsdk.infrastructure': <sphinx.ext.autodoc._MockModule object>, 'requests.encodings': None, 'sphinx.util.shutil': None, 'email.MIMEBase': <email.LazyImporter object>, 'docutils.parsers.rst.types': None, 'docutils.utils.math.urllib': None, 'requests.packages.urllib3.util.response': <module 'requests.packages.urllib3.util.response' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/response.pyc'>, 'sphinx.util': <module 'sphinx.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/__init__.pyc'>, 'configparser': <module 'configparser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/configparser.pyc'>, 'sphinx.builders.uuid': None, 'babel._compat': <module 'babel._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/_compat.pyc'>, 'json.json': None, 'distutils.archive_util': <module 'distutils.archive_util' from '/usr/lib/python2.7/distutils/archive_util.pyc'>, 'email.re': None, 'sys': <module 'sys' (built-in)>, 'sphinx.util.imagesize': None, 'xml.sax.sys': None, 'requests.hooks': <module 'requests.hooks' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/hooks.pyc'>, 'sphinx.util.inspect': <module 'sphinx.util.inspect' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/inspect.pyc'>, 'sphinx.sphinx_rtd_theme': None, 'requests.netrc': None, 'setuptools.extern': <module 'setuptools.extern' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/extern/__init__.pyc'>, 'PIL.__builtin__': None, 'jinja2.optimizer': <module 'jinja2.optimizer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/optimizer.pyc'>, 'sphinx.util.functools': None, 'docutils.writers.sys': None, 'distutils': <module 'distutils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/distutils/__init__.pyc'>, 'lago.fcntl': None, 'requests._internal_utils': <module 'requests._internal_utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/_internal_utils.pyc'>, 'email.mime': <module 'email.mime' from '/usr/lib/python2.7/email/mime/__init__.pyc'>, 'PIL': <module 'PIL' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/__init__.pyc'>, 'requests.io': None, 'xml.sax.urllib': None, 'sphinx.websupport.errors': <module 'sphinx.websupport.errors' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/errors.pyc'>, 'lago.plugins.output': <module 'lago.plugins.output' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/output.pyc'>, 'logging.socket': None, 'zipimport': <module 'zipimport' (built-in)>, 'jinja2.nodes': <module 'jinja2.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/nodes.pyc'>, 'sphinx.builders.re': None, 'signal': <module 'signal' (built-in)>, 'quopri': <module 'quopri' from '/usr/lib/python2.7/quopri.pyc'>, 'distutils.version': <module 'distutils.version' from '/usr/lib/python2.7/distutils/version.pyc'>, 'sphinx.writers.itertools': None, 'requests.packages.urllib3.contrib': <module 'requests.packages.urllib3.contrib' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/contrib/__init__.pyc'>, 'sphinx.builders.websupport': <module 'sphinx.builders.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/websupport.pyc'>, 'xml.parsers.expat': <module 'xml.parsers.expat' from '/usr/lib/python2.7/xml/parsers/expat.pyc'>, 'ovirtlago.ovirtsdk': None, 'HTMLParser': <module 'HTMLParser' from '/usr/lib/python2.7/HTMLParser.pyc'>, 'setuptools.importlib': None, 'sphinx.builders.epub': <module 'sphinx.builders.epub' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/epub.pyc'>, 'lago.ssh': <module 'lago.ssh' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/ssh.pyc'>, 'cgi': <module 'cgi' from '/usr/lib/python2.7/cgi.pyc'>, 'docutils.optparse': None, 'UserDict': <module 'UserDict' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/UserDict.pyc'>, 'jinja2.keyword': None, 'jinja2.filters': <module 'jinja2.filters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/filters.pyc'>, 'lockfile': <sphinx.ext.autodoc._MockModule object>, 'unittest.loader': <module 'unittest.loader' from '/usr/lib/python2.7/unittest/loader.pyc'>, 'jinja2.jinja2': None, 'distutils.pwd': None, '__future__': <module '__future__' from '/usr/lib/python2.7/__future__.pyc'>, 'pkg_resources.extern.packaging.requirements': <module 'pkg_resources._vendor.packaging.requirements' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.pyc'>, 'distutils.string': None, 'ovirtlago.BaseHTTPServer': None, 'errno': <module 'errno' (built-in)>, 'pkg_resources._vendor.packaging.requirements': <module 'pkg_resources._vendor.packaging.requirements' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.pyc'>, 'babel.bisect': None, 'docutils.parsers.rst.directives.misc': <module 'docutils.parsers.rst.directives.misc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/misc.pyc'>, 'pygments.itertools': None, 'docutils.frontend': <module 'docutils.frontend' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/frontend.pyc'>, 'docutils.writers.latex2e.sys': None, 'setuptools.msvc': <module 'setuptools.msvc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/msvc.pyc'>, 'jinja2.idtracking': <module 'jinja2.idtracking' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/idtracking.pyc'>, 'sphinx.six': None, 'email.os': None, 'requests.compat': <module 'requests.compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/compat.pyc'>, 'pwd': <module 'pwd' (built-in)>, 'babel.collections': None, '_struct': <module '_struct' (built-in)>, 'docutils.parsers.rst.directives.admonitions': <module 'docutils.parsers.rst.directives.admonitions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/admonitions.pyc'>, 'uu': <module 'uu' from '/usr/lib/python2.7/uu.pyc'>, 'requests.packages': <module 'requests.packages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/__init__.pyc'>, 'nose.plugins.textwrap': None, 'multiprocessing.signal': None, 'xml.sax': <module 'xml.sax' from '/usr/lib/python2.7/xml/sax/__init__.pyc'>, 'setuptools.extern.six.moves': <module 'pkg_resources._vendor.six.moves' (built-in)>, 'logging.codecs': None, '_random': <module '_random' (built-in)>, 'jinja2.decimal': None, 'lago.prefix': <module 'lago.prefix' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/prefix.pyc'>, 'lago.providers.libvirt': <module 'lago.providers.libvirt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/__init__.pyc'>, 'sphinx.builders.dummy': <module 'sphinx.builders.dummy' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/dummy.pyc'>, 'email.Generator': <email.LazyImporter object>, 'sphinx.util.template': <module 'sphinx.util.template' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/template.pyc'>, 'grp': <module 'grp' (built-in)>, 'sphinx.zipfile': None, 'requests.packages.urllib3.util.timeout': <module 'requests.packages.urllib3.util.timeout' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/timeout.pyc'>, 'email.warnings': None, 'readthedocs_ext.comments.nilsimsa': None, 'requests.packages.urllib3.poolmanager': <module 'requests.packages.urllib3.poolmanager' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/poolmanager.pyc'>, 'sphinx.builders.posixpath': None, 'distutils.file_util': <module 'distutils.file_util' from '/usr/lib/python2.7/distutils/file_util.pyc'>, 'requests.calendar': None, 'sphinx.ext.zlib': None, 'sitecustomize': <module 'sitecustomize' from '/usr/lib/python2.7/sitecustomize.pyc'>, 'lago.threading': None, 'rpmUtils.arch': <sphinx.ext.autodoc._MockModule object>, 'ovirtlago.utils': <module 'ovirtlago.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/utils.pyc'>, 'nose.plugins.warnings': None, 'docutils.statemachine': <module 'docutils.statemachine' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/statemachine.pyc'>, 'distutils.debug': <module 'distutils.debug' from '/usr/lib/python2.7/distutils/debug.pyc'>, 'setuptools.types': None, 'ctypes.os': None, 'sphinx.ext.inspect': None, 'jinja2.cPickle': None, 'gc': <module 'gc' (built-in)>, 'backports': <module 'backports' (built-in)>, 'base64': <module 'base64' from '/usr/lib/python2.7/base64.pyc'>, 'sphinx.ext.viewcode': <module 'sphinx.ext.viewcode' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/viewcode.pyc'>, 'lago.io': None, 'docutils.utils.docutils': None, 'nose.new': None, 'docutils.writers.latex2e.urllib': None, 'PIL.warnings': None, 'sphinx.util.pycompat': <sphinx.util.pycompat._DeprecationWrapper object>, 'email.Header': <email.LazyImporter object>, 'sphinx.sphinx': None, 'lago.xmltodict': None, 'xml.etree.warnings': None, 'sphinx.ext': <module 'sphinx.ext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/__init__.pyc'>, 'magic': <sphinx.ext.autodoc._MockModule object>, 'docutils.parsers.rst.tableparser': <module 'docutils.parsers.rst.tableparser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/tableparser.pyc'>, 'email.codecs': None, 'babel.threading': None, 'babel.messages.plurals': <module 'babel.messages.plurals' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/plurals.pyc'>, 'jinja2.exceptions': <module 'jinja2.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/exceptions.pyc'>, 'sphinx.docutils': None, 'logging.threading': None, 'babel.messages.struct': None, 'jinja2.parser': <module 'jinja2.parser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/parser.pyc'>, 'lago.__future__': None, 'logging.io': None, 'pkg_resources._vendor.collections': None, 'pipes': <module 'pipes' from '/usr/lib/python2.7/pipes.pyc'>, 'sphinx.writers.websupport': <module 'sphinx.writers.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/websupport.pyc'>, 'lago.paths': <module 'lago.paths' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/paths.pyc'>, 'lago.plugins.copy': None, 'requests.packages.urllib3.exceptions': <module 'requests.packages.urllib3.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/exceptions.pyc'>, 'ctypes.tempfile': None, 'unittest.suite': <module 'unittest.suite' from '/usr/lib/python2.7/unittest/suite.pyc'>, 'json.scanner': <module 'json.scanner' from '/usr/lib/python2.7/json/scanner.pyc'>, 'sphinx.environment.re': None, 'sphinx.addnodes': <module 'sphinx.addnodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/addnodes.pyc'>, 'xdg.BaseDirectory': <module 'xdg.BaseDirectory' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/xdg/BaseDirectory.pyc'>, 'distutils.ccompiler': <module 'distutils.ccompiler' from '/usr/lib/python2.7/distutils/ccompiler.pyc'>, 'pkg_resources': <module 'pkg_resources' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/__init__.pyc'>, 'docutils.utils.urischemes': <module 'docutils.utils.urischemes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/urischemes.pyc'>, 'sphinx.pycode.pgen2.literals': <module 'sphinx.pycode.pgen2.literals' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyc'>, 'sphinx.util.babel': None, '_sre': <module '_sre' (built-in)>, 'sphinx.util.docfields': <module 'sphinx.util.docfields' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/docfields.pyc'>, 'pygments.formatters.html': <module 'pygments.formatters.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/html.pyc'>, 'docutils.re': None, 'lago.providers.libvirt.libvirt': None, 'sphinx.websupport.posixpath': None, 'requests.api': <module 'requests.api' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/api.pyc'>, 'docutils.parsers.rst.directives.urllib': None, 'lago.yaml': None, 'binascii': <module 'binascii' (built-in)>, 'lago.Queue': None, 'unittest.fnmatch': None, 'pygments.formatters.sys': None, 'sphinx.ext.napoleon.sys': None, 'jinja2.weakref': None, 'backports.configparser': <module 'backports.configparser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/backports/configparser/__init__.pyc'>, 'babel.itertools': None, 'docutils.unicodedata': None, 'xml.sax.weakref': None, 'requests.packages.urllib3.fields': <module 'requests.packages.urllib3.fields' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/fields.pyc'>, 'markupbase': <module 'markupbase' from '/usr/lib/python2.7/markupbase.pyc'>, 'sre_parse': <module 'sre_parse' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/sre_parse.pyc'>, 'docutils.writers.docutils_xml': <module 'docutils.writers.docutils_xml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/docutils_xml.pyc'>, 'sphinx.websupport.search.six': None, 'pkg_resources.extern.six': <module 'pkg_resources._vendor.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc'>, 'jinja2.utils': <module 'jinja2.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/utils.pyc'>, 'setuptools.re': None, 'nose.result': <module 'nose.result' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/result.pyc'>, 'six': <module 'six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/six.pyc'>, 'ovirtlago.shutil': None, 'babel.localtime.subprocess': None, 'ctypes.util': <module 'ctypes.util' from '/usr/lib/python2.7/ctypes/util.pyc'>, 'sphinx.util.fileutil': <module 'sphinx.util.fileutil' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/fileutil.pyc'>, 'lxml': <sphinx.ext.autodoc._MockModule object>, 'docutils.writers.xml': None, 'sphinx.roles': <module 'sphinx.roles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/roles.pyc'>, 'multiprocessing.sys': None, 'sphinx.domains.sphinx': None, 'pkg_resources._vendor.__builtin__': None, 'nose.sys': None, 'pkg_resources.extern.packaging.specifiers': <module 'pkg_resources._vendor.packaging.specifiers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc'>, 'stevedore.extension': <sphinx.ext.autodoc._MockModule object>, 'distutils.core': <module 'distutils.core' from '/usr/lib/python2.7/distutils/core.pyc'>, 'requests.base64': None, 'stevedore': <sphinx.ext.autodoc._MockModule object>, 'email.string': None, 'pygments.lexers.jvm': <module 'pygments.lexers.jvm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/jvm.pyc'>, 'sphinx.jinja2': None, 'sphinx.util.console': <module 'sphinx.util.console' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/console.pyc'>, 'docutils.parsers.rst.directives.images': <module 'docutils.parsers.rst.directives.images' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/images.pyc'>, 'pygments.styles': <module 'pygments.styles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/styles/__init__.pyc'>, 'sysconfig': <module 'sysconfig' from '/usr/lib/python2.7/sysconfig.pyc'>, 'sphinx.pycode.os': None, 'email.MIMEText': <email.LazyImporter object>, 'distutils.dep_util': <module 'distutils.dep_util' from '/usr/lib/python2.7/distutils/dep_util.pyc'>, 'tempfile': <module 'tempfile' from '/usr/lib/python2.7/tempfile.pyc'>, 'setuptools.extension': <module 'setuptools.extension' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/extension.pyc'>, 'sphinx.builders.linkcheck': <module 'sphinx.builders.linkcheck' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/linkcheck.pyc'>, 'lago.vm': <module 'lago.vm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/vm.pyc'>, 'pkg_resources._vendor': <module 'pkg_resources._vendor' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/__init__.pyc'>, 'docutils.writers.re': None, 'docutils.utils': <module 'docutils.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/__init__.pyc'>, 'multiprocessing.itertools': None, 'requests.adapters': <module 'requests.adapters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/adapters.pyc'>, 'docutils.parsers.rst.directives.html': <module 'docutils.parsers.rst.directives.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/html.pyc'>, 'docutils.transforms.writer_aux': <module 'docutils.transforms.writer_aux' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/writer_aux.pyc'>, 'sphinx.warnings': None, 'distutils.grp': None, 'sphinx.environment.managers.unicodedata': None, 'sphinx.transforms': <module 'sphinx.transforms' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/transforms/__init__.pyc'>, 'requests.packages.urllib3.packages.ssl_match_hostname._implementation': <module 'requests.packages.urllib3.packages.ssl_match_hostname._implementation' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc'>, 'logging.handlers': <module 'logging.handlers' from '/usr/lib/python2.7/logging/handlers.pyc'>, 'sphinx.util.codecs': None, 'requests.packages.urllib3.packages.ordered_dict': <module 'requests.packages.urllib3.packages.ordered_dict' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/ordered_dict.pyc'>, 'pygments.formatters.os': None, 'lago.pkg_resources': None, 'cStringIO': <module 'cStringIO' (built-in)>, 'requests.datetime': None, 'sphinx.environment.six': None, 'docutils.parsers.rst.re': None, 'PIL._imaging': <module 'PIL._imaging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/_imaging.so'>, 'ovirtlago.nose': None, 'encodings': <module 'encodings' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/__init__.pyc'>, 'PIL._binary': <module 'PIL._binary' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/_binary.pyc'>, 'sphinx.util.parallel': <module 'sphinx.util.parallel' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/parallel.pyc'>, 'docutils': <module 'docutils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/__init__.pyc'>, 'sphinx.util.collections': None, 'UserString': <module 'UserString' from '/usr/lib/python2.7/UserString.pyc'>, 'lago.virt': <module 'lago.virt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/virt.pyc'>, 'babel.plural': <module 'babel.plural' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/plural.pyc'>, 'math': <module 'math' (built-in)>, 'lago.providers.libvirt.vm': <module 'lago.providers.libvirt.vm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/vm.pyc'>, 'babel.sys': None, 'sphinx.util.jsdump': <module 'sphinx.util.jsdump' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/jsdump.pyc'>, 'sphinx.util.jinja2': None, 'sphinx.environment.managers.six': None, 'lago_template_repo': <module 'lago_template_repo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago_template_repo/__init__.pyc'>, 'jinja2.copy': None, 'lago.json': None, 'requests.copy': None, 'babel.localtime.__future__': None, 'setuptools.numbers': None, 'sphinx.sys': None, 'babel.localtime': <module 'babel.localtime' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/localtime/__init__.pyc'>, 'distutils.util': <module 'distutils.util' from '/usr/lib/python2.7/distutils/util.pyc'>, 'pygments.filter': <module 'pygments.filter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/filter.pyc'>, '_LWPCookieJar': <module '_LWPCookieJar' from '/usr/lib/python2.7/_LWPCookieJar.pyc'>, 'docutils.utils.math.tex2mathml_extern': <module 'docutils.utils.math.tex2mathml_extern' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/tex2mathml_extern.pyc'>, 'sphinx.transforms.docutils': None, 'requests.packages.urllib3.packages': <module 'requests.packages.urllib3.packages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/__init__.pyc'>, 'nose.nose': None, 'lago.logging': None, 'xml.sax.os': None, 'sphinx.builders.multiprocessing': None, 'email.feedparser': <module 'email.feedparser' from '/usr/lib/python2.7/email/feedparser.pyc'>, 'requests.codecs': None, 'sphinx.environment.os': None, 'atexit': <module 'atexit' from '/usr/lib/python2.7/atexit.pyc'>, '_csv': <module '_csv' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_csv.x86_64-linux-gnu.so'>, 'email.quopriMIME': <email.LazyImporter object>, 'alabaster.os': None, 'nose.selector': <module 'nose.selector' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/selector.pyc'>, 'xdg.os': None, 'docutils.utils.error_reporting': <module 'docutils.utils.error_reporting' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/error_reporting.pyc'>, 'sphinx.writers.latex': <module 'sphinx.writers.latex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/latex.pyc'>, 'babel.messages.difflib': None, '_hashlib': <module '_hashlib' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so'>, 'lago.config': <module 'lago.config' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/config.pyc'>, 'pygments.__future__': None, 'pytz.struct': None, 'nose.plugins.unittest': None, 'sphinx.ext.napoleon.collections': None, 'jinja2.functools': None, 'paramiko': <sphinx.ext.autodoc._MockModule object>, 'nose.logging': None, 'babel': <module 'babel' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/__init__.pyc'>, 'nose.config': <module 'nose.config' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/config.pyc'>, 'encodings.codecs': None, 'sphinx.pycode.pgen2.sphinx': None, 'docutils.parsers.rst.directives.codecs': None, 'sphinx.util.PIL': None, 'lago.lockfile': None, 'lago.dirlock': <module 'lago.dirlock' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/dirlock.pyc'>, '_ssl': <module '_ssl' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so'>, 'docutils.transforms.os': None, 'docutils._compat': <module 'docutils._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/_compat.pyc'>, '_io': <module '_io' (built-in)>, 'sphinx.search.six': None, 'docutils.utils.math.sys': None, 'sphinx.domains.python': <module 'sphinx.domains.python' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/python.pyc'>, 'sphinx.websupport.search': <module 'sphinx.websupport.search' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/search/__init__.pyc'>, 'sphinx.util.imghdr': None, 'email.iterators': <module 'email.iterators' from '/usr/lib/python2.7/email/iterators.pyc'>, 'unittest.types': None, 'sphinx.directives.patches': <module 'sphinx.directives.patches' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/patches.pyc'>, 'lago.subprocess': None, 'importlib': <module 'importlib' from '/usr/lib/python2.7/importlib/__init__.pyc'>, 'requests.sessions': <module 'requests.sessions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/sessions.pyc'>, 'babel.messages.catalog': <module 'babel.messages.catalog' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/catalog.pyc'>, 'sphinx.builders.requests': None, 'sphinx.domains.std': <module 'sphinx.domains.std' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/std.pyc'>, 'docutils.writers.html4css1.os': None, 'logging.thread': None, 'docutils.parsers.rst.directives.sys': None, 'sphinx.util.re': None, 'xdg': <module 'xdg' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/xdg/__init__.pyc'>, 'ovirtlago.datetime': None, 'setuptools.functools': None, 'alabaster': <module 'alabaster' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/alabaster/__init__.pyc'>, 'sphinx.transforms.os': None, 'distutils.cmd': <module 'distutils.cmd' from '/usr/lib/python2.7/distutils/cmd.pyc'>, 'docutils.transforms.time': None, 'sphinx.pycode.pgen2.logging': None, 'distutils.re': None, 'lago_template_repo.logging': None, 'pygments.lexer': <module 'pygments.lexer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexer.pyc'>, 'cookielib': <module 'cookielib' from '/usr/lib/python2.7/cookielib.pyc'>, 'sphinx.util.i18n': <module 'sphinx.util.i18n' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/i18n.pyc'>, 'sphinx.pycode.six': None, 'jinja2.UserDict': None, 'bisect': <module 'bisect' from '/usr/lib/python2.7/bisect.pyc'>, 'unittest.runner': <module 'unittest.runner' from '/usr/lib/python2.7/unittest/runner.pyc'>, 'nose.__future__': None, 'babel.localtime.time': None, 'readthedocs_ext.comments.__future__': None, 'ovirtlago.cmd': <module 'ovirtlago.cmd' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/cmd.pyc'>, 'sphinx.builders.codecs': None, 'babel.cPickle': None, 'setuptools.os': None, 'requests.auth': <module 'requests.auth' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/auth.pyc'>, 'babel.localtime.sys': None, 'requests.packages.urllib3.util.select': None, 'sphinx.search.sphinx': None, 'sphinx.builders.zlib': None, 'docutils.writers.os': None, 'sphinx.ext.napoleon.docstring': <module 'sphinx.ext.napoleon.docstring' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/napoleon/docstring.pyc'>, 'sphinx.ext.doctest': <module 'sphinx.ext.doctest' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/doctest.pyc'>, 'pygments.plugin': <module 'pygments.plugin' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/plugin.pyc'>, 'docutils.writers.PIL': None, 'sphinx.util.__future__': None, 'jinja2.sets': None, 'itertools': <module 'itertools' (built-in)>, 'lago.plugins.operator': None, 'docutils.transforms.docutils': None, 'PIL.__future__': None, 'sphinx.ext.napoleon.inspect': None, 'nilsimsa.sys': None, 'sphinx.environment.managers.string': None, 'setuptools.depends': <module 'setuptools.depends' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/depends.pyc'>, 'xml.parsers': <module 'xml.parsers' from '/usr/lib/python2.7/xml/parsers/__init__.pyc'>, 'pygments': <module 'pygments' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/__init__.pyc'>, 'nose.util': <module 'nose.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/util.pyc'>, 'ovirtlago.threading': None, 'email.base64MIME': <email.LazyImporter object>, 'nose.re': None, 'json': <module 'json' from '/usr/lib/python2.7/json/__init__.pyc'>, 'sphinx.ext.codecs': None, 'babel.localtime.pytz': None, 'babel.warnings': None, 'docutils.parsers.rst': <module 'docutils.parsers.rst' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/__init__.pyc'>, 'docutils.warnings': None, 'email.utils': <module 'email.utils' from '/usr/lib/python2.7/email/utils.pyc'>, 'docutils.nodes': <module 'docutils.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/nodes.pyc'>, 'docutils.os': None, 'email.email': None, 'xml.etree.re': None, 'sphinx.pycode.pgen2.__future__': None, 'sphinx.builders.manpage': <module 'sphinx.builders.manpage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/manpage.pyc'>, 'multiprocessing.weakref': None, 'pyexpat': <module 'pyexpat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so'>, 'distutils.distutils': None, 'pygments.lexers.javascript': <module 'pygments.lexers.javascript' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/javascript.pyc'>, 'site': <module 'site' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/site.pyc'>, 'PIL.os': None, 'readthedocs_ext.comments.collections': None, 'lago.functools': None, 'distutils.opcode': None, 'lago.traceback': None, 'email.binascii': None, 'nose.tools.re': None, 'sphinx.domains.six': None, 'sphinx.builders.shutil': None, 'sphinx.builders.__future__': None, 'libvirt': <sphinx.ext.autodoc._MockModule object>, 'lago.copy': None, 'email.cStringIO': None, 'lago.tty': None, 'pygments.formatters.__future__': None, 'difflib': <module 'difflib' from '/usr/lib/python2.7/difflib.pyc'>, 'distutils.errors': <module 'distutils.errors' from '/usr/lib/python2.7/distutils/errors.pyc'>, 'unittest.warnings': None, 'sets': <module 'sets' from '/usr/lib/python2.7/sets.pyc'>, 'logging.logging': None, 'nose.case': <module 'nose.case' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/case.pyc'>, 'xml.sax.urlparse': None, 'pytz.threading': None, 'pkg_resources.extern.packaging': <module 'pkg_resources._vendor.packaging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.pyc'>, 'six.moves': <module 'six.moves' (built-in)>, 'sphinx.environment.codecs': None, 'babel.messages.mofile': <module 'babel.messages.mofile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/mofile.pyc'>, 'logging.config': <module 'logging.config' from '/usr/lib/python2.7/logging/config.pyc'>, 'docutils.utils.math.tex2unichar': <module 'docutils.utils.math.tex2unichar' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/tex2unichar.pyc'>, 'requests.sys': None, 'pkg_resources.extern.sys': None, 'nose.plugins.cStringIO': None, 'distutils.subprocess': None, 'sphinx.pycode.pgen2.driver': <module 'sphinx.pycode.pgen2.driver' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/driver.pyc'>, 'requests.packages.urllib3.response': <module 'requests.packages.urllib3.response' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/response.pyc'>, 'pygments.unistring': <module 'pygments.unistring' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/unistring.pyc'>, 'distutils.log': <module 'distutils.log' from '/usr/lib/python2.7/distutils/log.pyc'>, 'pygments.lexers.types': None, 'sphinx.environment.managers.indexentries': <module 'sphinx.environment.managers.indexentries' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/managers/indexentries.pyc'>, 'lago.templates': <module 'lago.templates' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/templates.pyc'>, 'jinja2._compat': <module 'jinja2._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/_compat.pyc'>, 'lago.abc': None, 'docutils.writers.latex2e.time': None, 'lago.providers': <module 'lago.providers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/__init__.pyc'>, 'docutils.transforms.references': <module 'docutils.transforms.references' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/references.pyc'>, 'readthedocs_ext.comments.requests': None, 'pygments.codecs': None, 'pygments.style': <module 'pygments.style' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/style.pyc'>, 'xmltodict': <sphinx.ext.autodoc._MockModule object>, '_multiprocessing': <module '_multiprocessing' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_multiprocessing.x86_64-linux-gnu.so'>, 'ovirtsdk.infrastructure.errors.RequestError': <sphinx.ext.autodoc._MockModule object>, 'sphinx.transforms.i18n': <module 'sphinx.transforms.i18n' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/transforms/i18n.pyc'>, 'jinja2.stat': None, 'lago.providers.libvirt.pwd': None, 'lago.plugins.functools': None, 'sphinx.environment.managers.sphinx': None, 'enum': <sphinx.ext.autodoc._MockModule object>, 'lago.plugins.service': <module 'lago.plugins.service' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/service.pyc'>, 'logging.sys': None, 'sphinx.traceback': None, 'requests.cookies': <module 'requests.cookies' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/cookies.pyc'>, '_functools': <module '_functools' (built-in)>, 'setuptools.fnmatch': None, 'socket': <module 'socket' from '/usr/lib/python2.7/socket.pyc'>, 'sphinx.locale': <module 'sphinx.locale' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/locale/__init__.pyc'>, 'netrc': <module 'netrc' from '/usr/lib/python2.7/netrc.pyc'>, 'sphinx.websupport.sys': None, 'sphinx_rtd_theme.os': None, 'sphinx.util.warnings': None, 'babel.decimal': None, 'sphinx.util.cgi': None, 'sphinx.writers.sys': None, '__builtin__': <module '__builtin__' (built-in)>, 'setuptools.warnings': None, 'docutils.readers.docutils': None, 'xml.sax.xmlreader': <module 'xml.sax.xmlreader' from '/usr/lib/python2.7/xml/sax/xmlreader.pyc'>, 'ctypes.errno': None, 'json.struct': None, 'sphinx.util.time': None, 'ovirtlago.os': None, 'pygments.token': <module 'pygments.token' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/token.pyc'>, 'sphinx.highlighting': <module 'sphinx.highlighting' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/highlighting.pyc'>, 'multiprocessing.threading': None, 'pytz.sys': None, 'distutils.stat': None, 'lago_template_repo.collections': None, 'sphinx.os': None, 'setuptools.py26compat': <module 'setuptools.py26compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/py26compat.pyc'>, 'logging.time': None, 'distutils.extension': <module 'distutils.extension' from '/usr/lib/python2.7/distutils/extension.pyc'>, 'sphinx.environment.sys': None, 'certifi.os': None, 'logging.warnings': None, 'nose.exc': <module 'nose.exc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/exc.pyc'>, 'jinja2.re': None, 'pygments.re': None, 'markupsafe._compat': <module 'markupsafe._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/markupsafe/_compat.pyc'>, 'sphinx.errors': <module 'sphinx.errors' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/errors.pyc'>, 'ovirtlago.prefix': <module 'ovirtlago.prefix' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/prefix.pyc'>, 'contextlib': <module 'contextlib' from '/usr/lib/python2.7/contextlib.pyc'>, 'requests.packages.urllib3.packages.six.moves.urllib': <module 'requests.packages.urllib3.packages.six.moves.urllib' (built-in)>, 'babel.datetime': None, 'getopt': <module 'getopt' from '/usr/lib/python2.7/getopt.pyc'>, 'docutils.readers.doctree': <module 'docutils.readers.doctree' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/readers/doctree.pyc'>, 'stat': <module 'stat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/stat.pyc'>, 'requests.packages.urllib3.util.connection': <module 'requests.packages.urllib3.util.connection' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/connection.pyc'>, 'distutils.config': <module 'distutils.config' from '/usr/lib/python2.7/distutils/config.pyc'>, 'email.Encoders': <email.LazyImporter object>, 'lago.constants': <module 'lago.constants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/constants.pyc'>, 'pytz.gettext': None, 'sphinx': <module 'sphinx' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/__init__.pyc'>, 'sphinx.util.fcntl': None, 'encodings.unicodedata': None, 'readthedocs_ext.comments': <module 'readthedocs_ext.comments' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/__init__.pyc'>, 'pkg_resources._vendor.types': None, 'nose.tools.time': None})[source]¶
-
ovirtlago.utils.
generate_request_handler
(root_dir)[source]¶ Factory for _BetterHTTPRequestHandler classes
Parameters: root_dir (path) – Path to the dir to serve Returns: - A ready to be used improved http request
- handler
Return type: _BetterHTTPRequestHandler
-
ovirtlago.utils.
get_data_file
(basename)[source]¶ Load a data as a string from the data directory
Parameters: basename (str) – filename Returns: string representation of the file Return type: str
-
ovirtlago.utils.
repo_server_context
(*args, **kwds)[source]¶ Context manager that starts an http server that serves the given prefix’s yum repository. Will listen on
constants.REPO_SERVER_PORT
and on the first network defined in the previx virt configParameters: prefix (ovirtlago.prefix.OvirtPrefix) – prefix to start the server for Returns: None
-
ovirtlago.utils.
require_sdk
(version, modules={'requests.Cookie': None, 'pygments.formatters.latex': <module 'pygments.formatters.latex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/latex.pyc'>, 'jinja2.collections': None, 'sphinx.writers.warnings': None, 'distutils.sysconfig': <module 'distutils.sysconfig' from '/usr/lib/python2.7/distutils/sysconfig.pyc'>, 'pygments.filters': <module 'pygments.filters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/filters/__init__.pyc'>, 'logging.weakref': None, 'sphinx.util.json': None, 'docutils.utils.warnings': None, 'pprint': <module 'pprint' from '/usr/lib/python2.7/pprint.pyc'>, 'unittest.sys': None, 'SocketServer': <module 'SocketServer' from '/usr/lib/python2.7/SocketServer.pyc'>, 'xml.etree.sys': None, 'requests.packages.urllib3.util.wait': <module 'requests.packages.urllib3.util.wait' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/wait.pyc'>, 'distutils.filelist': <module 'distutils.filelist' from '/usr/lib/python2.7/distutils/filelist.pyc'>, 'nose.plugins.optparse': None, 'docutils.writers.urllib': None, 'cmd': <module 'cmd' from '/usr/lib/python2.7/cmd.pyc'>, 'shlex': <module 'shlex' from '/usr/lib/python2.7/shlex.pyc'>, 'sphinx.shutil': None, 'babel.messages.__future__': None, 'babel.messages.array': None, 'babel.cStringIO': None, 'pkg_resources._vendor.pprint': None, 'nose.plugins.multiprocessing': None, 'pygments.styles.pygments': None, 'backports.configparser.helpers': <module 'backports.configparser.helpers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/backports/configparser/helpers.pyc'>, 'sphinx.writers.xml': <module 'sphinx.writers.xml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/xml.pyc'>, 'jinja2.errno': None, 'ovirtlago.re': None, 'babel.messages': <module 'babel.messages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/__init__.pyc'>, 'pkg_resources.extern.appdirs': <module 'pkg_resources._vendor.appdirs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.pyc'>, 'lago.plugins.stevedore': None, 'lago.cmd': <module 'lago.cmd' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/cmd.pyc'>, 'lago.log_utils': <module 'lago.log_utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/log_utils.pyc'>, 'UserList': <module 'UserList' from '/usr/lib/python2.7/UserList.pyc'>, 'docutils.writers.docutils': None, 'new': <module 'new' from '/usr/lib/python2.7/new.pyc'>, 'nose.plugins.re': None, 'readthedocs_ext.readthedocs': <module 'readthedocs_ext.readthedocs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/readthedocs.pyc'>, 'jinja2.markupsafe': None, 'lago.providers.libvirt.xmltodict': None, 'lago.utils': <module 'lago.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/utils.pyc'>, 'babel.localtime.datetime': None, 'codecs': <module 'codecs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/codecs.pyc'>, 'setuptools.dist': <module 'setuptools.dist' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/dist.pyc'>, 'jinja2.lexer': <module 'jinja2.lexer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/lexer.pyc'>, 'docutils.parsers.rst.languages.sys': None, 'docutils.utils.math.docutils': None, 'pygments.filters.pygments': None, 'sphinx.pycode.pgen2.re': None, 'requests.packages.urllib3.util.retry': <module 'requests.packages.urllib3.util.retry' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/retry.pyc'>, 'distutils.sys': None, 'nose.tools.nontrivial': <module 'nose.tools.nontrivial' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/tools/nontrivial.pyc'>, 'json.decoder': <module 'json.decoder' from '/usr/lib/python2.7/json/decoder.pyc'>, 'sphinx.writers.html': <module 'sphinx.writers.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/html.pyc'>, 'sphinx.builders.subprocess': None, 'docutils.codecs': None, 'sphinx.pycode.__future__': None, 'pkg_resources._vendor.datetime': None, 'pygments.lexers.css': <module 'pygments.lexers.css' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/css.pyc'>, 'ctypes._ctypes': None, '_heapq': <module '_heapq' (built-in)>, 'sphinx.ext.napoleon.sphinx': None, 'requests.packages.urllib3.util': <module 'requests.packages.urllib3.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/__init__.pyc'>, 'email.sys': None, 'tokenize': <module 'tokenize' from '/usr/lib/python2.7/tokenize.pyc'>, 'cPickle': <module 'cPickle' (built-in)>, 'markupsafe.re': None, 'jinja2.tempfile': None, 'sphinx.environment.managers.docutils': None, 'docutils.utils.math': <module 'docutils.utils.math' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/__init__.pyc'>, 'sphinx.builders.os': None, 'sphinx.builders.devhelp': <module 'sphinx.builders.devhelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/devhelp.pyc'>, 'setup': <module 'setup' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/setup.pyc'>, 'pkg_resources._vendor.copy': None, 'fnmatch': <module 'fnmatch' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/fnmatch.pyc'>, 'pygments.regexopt': <module 'pygments.regexopt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/regexopt.pyc'>, 'logging.cStringIO': None, 'sphinx.domains.c': <module 'sphinx.domains.c' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/c.pyc'>, 'lago.plugins.contextlib': None, 'nose.pyversion': <module 'nose.pyversion' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/pyversion.pyc'>, 'xml.sax.xml': None, 'email.message': <module 'email.message' from '/usr/lib/python2.7/email/message.pyc'>, 'strop': <module 'strop' (built-in)>, 'sphinx.builders.shlex': None, 'six.moves.html_parser': <module 'HTMLParser' from '/usr/lib/python2.7/HTMLParser.pyc'>, 'ovirtlago.yaml': None, 'lago.argparse': None, 'sphinx.re': None, 'sphinx.util.stemmer': <module 'sphinx.util.stemmer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/stemmer.pyc'>, 'sphinx.pycode.sphinx': None, 'os.path': <module 'posixpath' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/posixpath.pyc'>, 'email.base64mime': <module 'email.base64mime' from '/usr/lib/python2.7/email/base64mime.pyc'>, 'requests.packages.urllib3.util.request': <module 'requests.packages.urllib3.util.request' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/request.pyc'>, 'docutils.utils.pygments': None, 'sphinx.util.requests': <module 'sphinx.util.requests' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/requests.pyc'>, 'functools': <module 'functools' from '/usr/lib/python2.7/functools.pyc'>, 'pkg_resources._vendor.weakref': None, 'distutils.fancy_getopt': <module 'distutils.fancy_getopt' from '/usr/lib/python2.7/distutils/fancy_getopt.pyc'>, 'sphinx.ext.__future__': None, 'babel.messages.time': None, 'uuid': <module 'uuid' from '/usr/lib/python2.7/uuid.pyc'>, 'requests.time': None, 'lago.providers.libvirt.os': None, 'imp': <module 'imp' (built-in)>, 'multiprocessing.os': None, 'sphinx.pycode.sys': None, 'docutils.parsers.rst.languages.en': <module 'docutils.parsers.rst.languages.en' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/languages/en.pyc'>, 'sphinx_rtd_theme': <module 'sphinx_rtd_theme' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx_rtd_theme/__init__.pyc'>, 'jinja2': <module 'jinja2' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/__init__.pyc'>, 'setuptools.extern.pkg_resources': None, 'sphinx.util.os': None, 'sphinx.environment.managers.bisect': None, 'lago.plugins.yaml': None, 'sphinx.writers.re': None, 'requests.packages.urllib3.util.collections': None, 'sphinx.writers.textwrap': None, 'babel.localedata': <module 'babel.localedata' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/localedata.pyc'>, 'babel.localtime._unix': <module 'babel.localtime._unix' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/localtime/_unix.pyc'>, 'babel.core': <module 'babel.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/core.pyc'>, 'docutils.writers': <module 'docutils.writers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/__init__.pyc'>, 'sphinx.websupport.six': None, 'encodings.stringprep': None, 'pytz.pytz': None, 're': <module 're' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/re.pyc'>, 'readthedocs_ext.comments.docutils': None, 'email.quopri': None, 'ovirtlago.collections': None, 'lago.urlparse': None, 'lago_template_repo.os': None, 'pygments.lexers.special': <module 'pygments.lexers.special' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/special.pyc'>, 'lago.errno': None, 'babel.localtime.threading': None, 'sphinx.util.sys': None, 'sphinx.operator': None, 'readthedocs_ext.comments.hasher': <module 'readthedocs_ext.comments.hasher' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/hasher.pyc'>, 'markupsafe.string': None, '_locale': <module '_locale' (built-in)>, 'lago.providers.libvirt.pkg_resources': None, 'logging': <module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>, 'traceback': <module 'traceback' from '/usr/lib/python2.7/traceback.pyc'>, 'imagesize.get': <module 'imagesize.get' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/imagesize/get.pyc'>, 'docutils.utils.unicodedata': None, 'ctypes.re': None, 'sphinx.itertools': None, 'lago.signal': None, 'PIL.PIL': None, 'sphinx.domains.docutils': None, 'sphinx.environment.managers.itertools': None, 'pkg_resources._vendor.packaging._compat': <module 'pkg_resources._vendor.packaging._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_compat.pyc'>, 'sphinx.util.logging': <module 'sphinx.util.logging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/logging.pyc'>, 'docutils.utils.punctuation_chars': <module 'docutils.utils.punctuation_chars' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/punctuation_chars.pyc'>, 'lago.urllib': None, 'sphinx.alabaster': None, 'lago.hashlib': None, 'babel.messages.operator': None, 'docutils.parsers.rst.roles': <module 'docutils.parsers.rst.roles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/roles.pyc'>, 'keyword': <module 'keyword' from '/usr/lib/python2.7/keyword.pyc'>, 'stringprep': <module 'stringprep' from '/usr/lib/python2.7/stringprep.pyc'>, 'pygments.lexers.fnmatch': None, 'jinja2.math': None, 'sphinx.util.datetime': None, 'sphinx.builders.datetime': None, 'requests.packages.urllib3.packages.thread': None, 'readthedocs_ext.comments.sphinx': None, 'docutils.parsers.rst.directives.tables': <module 'docutils.parsers.rst.directives.tables' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/tables.pyc'>, 'pkg_resources.extern.pyparsing': <module 'pkg_resources._vendor.pyparsing' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc'>, 'docutils.transforms.universal': <module 'docutils.transforms.universal' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/universal.pyc'>, 'readthedocs_ext': <module 'readthedocs_ext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/__init__.pyc'>, 'requests.os': None, 'babel.StringIO': None, 'babel.babel': None, 'email.MIMEMultipart': <email.LazyImporter object>, 'unittest.difflib': None, 'jinja2.hashlib': None, 'glob': <module 'glob' from '/usr/lib/python2.7/glob.pyc'>, 'lago.plugins.collections': None, 'jinja2.operator': None, 'sphinx.util.struct': None, 'requests.cookielib': None, 'ovirtlago.functools': None, 'sphinx.writers.six': None, 'sphinx.domains.rst': <module 'sphinx.domains.rst' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/rst.pyc'>, 'random': <module 'random' from '/usr/lib/python2.7/random.pyc'>, 'requests.urlparse': None, 'pygments.operator': None, 'setuptools.sys': None, 'pytz.cStringIO': None, 'jinja2.marshal': None, 'email.time': None, 'requests.packages.urllib3.packages.six.moves': <module 'requests.packages.urllib3.packages.six.moves' (built-in)>, 'pkg_resources._vendor.warnings': None, 'sphinx.pycode.pgen2.token': <module 'sphinx.pycode.pgen2.token' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/token.pyc'>, 'nose.plugins.errorclass': <module 'nose.plugins.errorclass' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/errorclass.pyc'>, 'docutils.utils.math.latex2mathml': <module 'docutils.utils.math.latex2mathml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/latex2mathml.pyc'>, 'xml.etree.ElementTree': <module 'xml.etree.ElementTree' from '/usr/lib/python2.7/xml/etree/ElementTree.pyc'>, 'lago.plugins.scp': None, 'sphinx.environment.time': None, 'pytz.tzinfo': <module 'pytz.tzinfo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/tzinfo.pyc'>, 'lago.providers.libvirt.cpu': <module 'lago.providers.libvirt.cpu' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/cpu.pyc'>, 'nose.tools.unittest': None, 'pytz.UserDict': None, 'jinja2.cStringIO': None, 'lago.time': None, 'docutils.types': None, 'lago.providers.libvirt.collections': None, 'pyexpat.model': <module 'pyexpat.model' (built-in)>, 'pkg_resources._vendor.six.moves': <module 'pkg_resources._vendor.six.moves' (built-in)>, 'nose.failure': <module 'nose.failure' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/failure.pyc'>, 'sphinx.writers.docutils': None, 'docutils.utils.smartquotes': <module 'docutils.utils.smartquotes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/smartquotes.pyc'>, 'sphinx.builders.qthelp': <module 'sphinx.builders.qthelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/qthelp.pyc'>, 'requests.status_codes': <module 'requests.status_codes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/status_codes.pyc'>, 'docutils.parsers.rst.directives.PIL': None, 'docutils.writers.latex2e.re': None, 'urllib': <module 'urllib' from '/usr/lib/python2.7/urllib.pyc'>, 'sphinx.posixpath': None, 'sphinx.pycode.pgen2.parse': <module 'sphinx.pycode.pgen2.parse' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/parse.pyc'>, 'Queue': <module 'Queue' from '/usr/lib/python2.7/Queue.pyc'>, 'ctypes': <module 'ctypes' from '/usr/lib/python2.7/ctypes/__init__.pyc'>, 'sphinx.pygments': None, 'sphinx.websupport.storage': <module 'sphinx.websupport.storage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/storage/__init__.pyc'>, 'readthedocs_ext.requests': None, 'unittest.signal': None, 'PIL._util': <module 'PIL._util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/_util.pyc'>, 'requests': <module 'requests' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/__init__.pyc'>, 'sphinx.search.en': <module 'sphinx.search.en' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/search/en.pyc'>, 'sphinx.websupport.os': None, 'email.uu': None, 'docutils.transforms.frontmatter': <module 'docutils.transforms.frontmatter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/frontmatter.pyc'>, 'pygments.lexers.re': None, 'email.calendar': None, 'jinja2.random': None, 'pkgutil': <module 'pkgutil' from '/usr/lib/python2.7/pkgutil.pyc'>, 'nose.plugins.base': <module 'nose.plugins.base' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/base.pyc'>, 'sphinx.util.images': <module 'sphinx.util.images' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/images.pyc'>, 'docutils.utils.code_analyzer': <module 'docutils.utils.code_analyzer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/code_analyzer.pyc'>, 'sphinx.domains.javascript': <module 'sphinx.domains.javascript' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/javascript.pyc'>, 'ovirtsdk.infrastructure.errors': <sphinx.ext.autodoc._MockModule object>, 'pkg_resources._vendor.sys': None, 'pytz': <module 'pytz' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/__init__.pyc'>, 'jinja2.bccache': <module 'jinja2.bccache' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/bccache.pyc'>, 'sphinx.websupport.jinja2': None, 'readthedocs_ext.comments.backend': <module 'readthedocs_ext.comments.backend' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/backend.pyc'>, 'encodings.re': None, 'zlib': <module 'zlib' (built-in)>, 'email.random': None, 'setuptools': <module 'setuptools' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/__init__.pyc'>, 'sphinx.locale.six': None, 'sphinx.ext.os': None, 'sphinx.domains.cpp': <module 'sphinx.domains.cpp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/cpp.pyc'>, 'sphinx.writers.os': None, 'pkg_resources._vendor.appdirs': <module 'pkg_resources._vendor.appdirs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.pyc'>, 'ovirtlago.itertools': None, 'io': <module 'io' from '/usr/lib/python2.7/io.pyc'>, 'distutils.ConfigParser': None, 'lago.os': None, 'lago.xdg': None, 'ovirtlago.ovirtlago': None, 'unittest.time': None, 'rfc822': <module 'rfc822' from '/usr/lib/python2.7/rfc822.pyc'>, 'ovirtlago.unittest': None, 'pkg_resources._vendor.packaging': <module 'pkg_resources._vendor.packaging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.pyc'>, '_weakref': <module '_weakref' (built-in)>, 'docutils.parsers.rst.directives': <module 'docutils.parsers.rst.directives' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/__init__.pyc'>, 'urlparse': <module 'urlparse' from '/usr/lib/python2.7/urlparse.pyc'>, 'pygments.cStringIO': None, 'gzip': <module 'gzip' from '/usr/lib/python2.7/gzip.pyc'>, 'rpmUtils': <sphinx.ext.autodoc._MockModule object>, 'requests.packages.urllib3.packages.six': <module 'requests.packages.urllib3.packages.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/six.pyc'>, 'sphinx.util.math': None, 'jinja2.threading': None, '_bisect': <module '_bisect' (built-in)>, 'markupsafe.sys': None, 'sphinx.collections': None, 'sphinx.environment.types': None, 'sphinx.util.smartypants': <module 'sphinx.util.smartypants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/smartypants.pyc'>, 'sphinx.directives.re': None, 'requests.packages.urllib3.util.errno': None, 'collections': <module 'collections' from '/usr/lib/python2.7/collections.pyc'>, 'unittest.main': <module 'unittest.main' from '/usr/lib/python2.7/unittest/main.pyc'>, 'ConfigParser': <module 'ConfigParser' from '/usr/lib/python2.7/ConfigParser.pyc'>, 'pkg_resources._vendor.packaging._structures': <module 'pkg_resources._vendor.packaging._structures' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_structures.pyc'>, 'docutils.writers.StringIO': None, 'textwrap': <module 'textwrap' from '/usr/lib/python2.7/textwrap.pyc'>, 'certifi.warnings': None, 'docutils.ConfigParser': None, 'lago.plugins.json': None, 'jinja2.types': None, 'requests.packages.urllib3.util.math': None, 'ovirtlago.pkg_resources': None, 'requests.socket': None, 'lago.configparser': None, 'nilsimsa': <module 'nilsimsa' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nilsimsa/__init__.pyc'>, 'docutils.StringIO': None, 'sphinx.pycode.nodes': <module 'sphinx.pycode.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/nodes.pyc'>, 'pygments.lexers._mapping': <module 'pygments.lexers._mapping' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/_mapping.pyc'>, 'pygments.lexers.os': None, 'lago.providers.libvirt.logging': None, 'pygments.lexers.markup': <module 'pygments.lexers.markup' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/markup.pyc'>, 'setuptools.platform': None, 'sphinx.util.six': None, 'nose.warnings': None, 'sphinx.environment.fnmatch': None, 'sphinx.directives.code': <module 'sphinx.directives.code' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/code.pyc'>, 'sphinx.environment.managers.toctree': <module 'sphinx.environment.managers.toctree' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/managers/toctree.pyc'>, 'jinja2.ext': <module 'jinja2.ext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/ext.pyc'>, 'pygments.os': None, 'jinja2.fnmatch': None, 'docutils.transforms.re': None, 'imghdr': <module 'imghdr' from '/usr/lib/python2.7/imghdr.pyc'>, 'sphinx.application': <module 'sphinx.application' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/application.pyc'>, 'nose.suite': <module 'nose.suite' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/suite.pyc'>, 'docutils.readers.standalone': <module 'docutils.readers.standalone' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/readers/standalone.pyc'>, 'lago.plugins.vm': <module 'lago.plugins.vm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/vm.pyc'>, 'sphinx.ext.re': None, 'setuptools.monkey': <module 'setuptools.monkey' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/monkey.pyc'>, 'distutils.dir_util': <module 'distutils.dir_util' from '/usr/lib/python2.7/distutils/dir_util.pyc'>, 'sphinx.builders.socket': None, 'requests.packages.urllib3.packages.ssl_match_hostname': <module 'requests.packages.urllib3.packages.ssl_match_hostname' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc'>, 'pygments.formatters.fnmatch': None, 'ovirtlago.virt': <module 'ovirtlago.virt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/virt.pyc'>, '_socket': <module '_socket' (built-in)>, 'email.Utils': <email.LazyImporter object>, 'lago': <module 'lago' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/__init__.pyc'>, 'nose.plugins.cPickle': None, 'pygments.formatters': <module 'pygments.formatters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/__init__.pyc'>, 'docutils.parsers.rst.languages.docutils': None, 'jinja2.environment': <module 'jinja2.environment' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/environment.pyc'>, 'docutils.parsers.rst.sys': None, 'mimetools': <module 'mimetools' from '/usr/lib/python2.7/mimetools.pyc'>, 'babel.os': None, 'distutils.fnmatch': None, 'ovirtsdk': <sphinx.ext.autodoc._MockModule object>, 'docutils.writers.latex2e.os': None, 'docutils.parsers': <module 'docutils.parsers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/__init__.pyc'>, 'docutils.writers.manpage': <module 'docutils.writers.manpage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/manpage.pyc'>, 'logging.traceback': None, 'markupsafe.collections': None, 'genericpath': <module 'genericpath' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/genericpath.pyc'>, 'urllib2': <module 'urllib2' from '/usr/lib/python2.7/urllib2.pyc'>, 'ctypes.ctypes': None, 'time': <module 'time' (built-in)>, 'nose.ConfigParser': None, 'docutils.parsers.rst.states': <module 'docutils.parsers.rst.states' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/states.pyc'>, 'pygments.lexers.pygments': None, 'sphinx.directives': <module 'sphinx.directives' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/__init__.pyc'>, 'pkg_resources._vendor.traceback': None, 'docutils.utils.sys': None, 'jinja2.tests': <module 'jinja2.tests' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/tests.pyc'>, 'requests.packages.urllib3.packages.six.moves.http_client': <module 'httplib' from '/usr/lib/python2.7/httplib.pyc'>, 'jinja2.string': None, 'babel.messages.babel': None, 'docutils.parsers.rst.directives.time': None, 'sphinx.environment': <module 'sphinx.environment' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/__init__.pyc'>, 'string': <module 'string' from '/usr/lib/python2.7/string.pyc'>, 'markupsafe': <module 'markupsafe' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/markupsafe/__init__.pyc'>, 'email.quoprimime': <module 'email.quoprimime' from '/usr/lib/python2.7/email/quoprimime.pyc'>, 'sphinx.util.nodes': <module 'sphinx.util.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/nodes.pyc'>, 'datetime': <module 'datetime' (built-in)>, 'lxml.etree': <sphinx.ext.autodoc._MockModule object>, 'distutils.getopt': None, 'ovirtlago.paths': <module 'ovirtlago.paths' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/paths.pyc'>, 'ovirtlago.textwrap': None, 'sphinx.builders.sys': None, 'sphinx.search': <module 'sphinx.search' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/search/__init__.pyc'>, 'sphinx.websupport.docutils': None, 'requests.logging': None, 'multiprocessing': <module 'multiprocessing' from '/usr/lib/python2.7/multiprocessing/__init__.pyc'>, 'dis': <module 'dis' from '/usr/lib/python2.7/dis.pyc'>, 'sphinx.pygments_styles': <module 'sphinx.pygments_styles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pygments_styles.pyc'>, 'lago.textwrap': None, 'setuptools.marshal': None, 'jinja2.sys': None, 'babel.util': <module 'babel.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/util.pyc'>, 'jinja2.defaults': <module 'jinja2.defaults' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/defaults.pyc'>, 'xml.sax.io': None, 'docutils.pprint': None, 'nose.plugins.sys': None, 'logging.stat': None, 'PIL.Image': <module 'PIL.Image' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/Image.pyc'>, '_ctypes': <module '_ctypes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so'>, 'exceptions': <module 'exceptions' (built-in)>, 'docutils.utils.roman': <module 'docutils.utils.roman' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/roman.pyc'>, 'sphinx.builders.latex': <module 'sphinx.builders.latex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/latex.pyc'>, 'email.socket': None, 'requests.packages.urllib3.packages.six.moves.urllib.parse': <module 'requests.packages.urllib3.packages.six.moves.urllib_parse' (built-in)>, 'weakref': <module 'weakref' from '/usr/lib/python2.7/weakref.pyc'>, 'ovirtlago.SimpleHTTPServer': None, 'sphinx.builders.plistlib': None, '_json': <module '_json' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_json.x86_64-linux-gnu.so'>, 'email.FeedParser': <email.LazyImporter object>, 'pyexpat.errors': <module 'pyexpat.errors' (built-in)>, 'email.charset': <module 'email.charset' from '/usr/lib/python2.7/email/charset.pyc'>, 'logging.re': None, 'readthedocs_ext.comments.builder': <module 'readthedocs_ext.comments.builder' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/builder.pyc'>, 'six.moves.urllib': <module 'six.moves.urllib' (built-in)>, 'email.MIMEMessage': <email.LazyImporter object>, 'email._parseaddr': <module 'email._parseaddr' from '/usr/lib/python2.7/email/_parseaddr.pyc'>, 'distutils.errno': None, 'sphinx.ext.autodoc': <module 'sphinx.ext.autodoc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/autodoc.pyc'>, 'sphinx.ext.traceback': None, 'alabaster._version': <module 'alabaster._version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/alabaster/_version.pyc'>, 'nose.plugins': <module 'nose.plugins' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/__init__.pyc'>, 'sphinx.util.sphinx': None, 'pickle': <module 'pickle' from '/usr/lib/python2.7/pickle.pyc'>, 'xml.sax.types': None, 'pygments.lexers.python': <module 'pygments.lexers.python' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/python.pyc'>, 'pkg_resources._vendor.os': None, 'setuptools.urllib': None, 'sphinx.directives.docutils': None, 'distutils.email': None, 'sphinx.directives.six': None, 'babel.localtime.re': None, 'sphinx.ext.napoleon.iterators': <module 'sphinx.ext.napoleon.iterators' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/napoleon/iterators.pyc'>, 'xml.etree.ElementPath': <module 'xml.etree.ElementPath' from '/usr/lib/python2.7/xml/etree/ElementPath.pyc'>, 'babel.pytz': None, 'lago_template_repo.sys': None, 'ovirtlago.sys': None, 'email.parser': <module 'email.parser' from '/usr/lib/python2.7/email/parser.pyc'>, 'sphinx.pycode.pgen2': <module 'sphinx.pycode.pgen2' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/__init__.pyc'>, 'ssl': <module 'ssl' from '/usr/lib/python2.7/ssl.pyc'>, 'docutils.languages.en': <module 'docutils.languages.en' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/languages/en.pyc'>, 'marshal': <module 'marshal' (built-in)>, '_weakrefset': <module '_weakrefset' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/_weakrefset.pyc'>, 'nose.plugins.plugintest': <module 'nose.plugins.plugintest' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/plugintest.pyc'>, 'unittest.traceback': None, 'pygments.lexers.ruby': <module 'pygments.lexers.ruby' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/ruby.pyc'>, 'unittest.os': None, 'tty': <module 'tty' from '/usr/lib/python2.7/tty.pyc'>, 'pygments.pygments': None, 'sphinx.directives.codecs': None, 'ovirtlago.configparser': None, 'email.MIMEImage': <email.LazyImporter object>, 'sphinx.ext.types': None, 'jinja2.json': None, 'pygments.formatters.types': None, 'sphinx.ext.time': None, 'platform': <module 'platform' from '/usr/lib/python2.7/platform.pyc'>, 'markupsafe.markupsafe': None, 'ovirtsdk.api': <sphinx.ext.autodoc._MockModule object>, 'unittest.functools': None, 'sphinx.util.termios': None, 'unittest.util': <module 'unittest.util' from '/usr/lib/python2.7/unittest/util.pyc'>, 'sphinx.directives.sphinx': None, 'docutils.writers.html4css1': <module 'docutils.writers.html4css1' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/html4css1/__init__.pyc'>, 'email.encoders': <module 'email.encoders' from '/usr/lib/python2.7/email/encoders.pyc'>, 'docutils.parsers.rst.directives.os': None, 'sphinx.search.re': None, 'jinja2.sandbox': <module 'jinja2.sandbox' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/sandbox.pyc'>, 'sphinx.builders.threading': None, 'distutils.dist': <module 'distutils.dist' from '/usr/lib/python2.7/distutils/dist.pyc'>, 'BaseHTTPServer': <module 'BaseHTTPServer' from '/usr/lib/python2.7/BaseHTTPServer.pyc'>, 'nose.traceback': None, 'docutils.writers.latex2e.docutils': None, 'docutils.utils.math.codecs': None, 'sphinx.builders.zipfile': None, 'pkg_resources._vendor.packaging.__about__': <module 'pkg_resources._vendor.packaging.__about__' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.pyc'>, 'pygments.filters.re': None, 'nose.tools.nose': None, 'lago.providers.libvirt.functools': None, 'lago.warnings': None, 'docutils.utils.math.unichar2tex': <module 'docutils.utils.math.unichar2tex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/unichar2tex.pyc'>, 'docutils.utils.math.gettext': None, 'docutils.io': <module 'docutils.io' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/io.pyc'>, 'sphinx.websupport.search.re': None, 'babel.array': None, 'pkg_resources._vendor.packaging.markers': <module 'pkg_resources._vendor.packaging.markers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.pyc'>, 'pkg_resources._vendor.packaging.version': <module 'pkg_resources._vendor.packaging.version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.pyc'>, 'nose.optparse': None, 'pygments.lexers.sys': None, 'yaml': <sphinx.ext.autodoc._MockModule object>, 'xml.parsers.pyexpat': None, 'array': <module 'array' (built-in)>, 'requests.packages.urllib3.util.url': <module 'requests.packages.urllib3.util.url' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/url.pyc'>, 'setuptools.version': <module 'setuptools.version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/version.pyc'>, 'pytz.exceptions': <module 'pytz.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/exceptions.pyc'>, 'readthedocs_ext.comments.uuid': None, 'types': <module 'types' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/types.pyc'>, 'lago.providers.libvirt.guestfs': None, 'xml.sax.handler': <module 'xml.sax.handler' from '/usr/lib/python2.7/xml/sax/handler.pyc'>, 'sphinx.ext.todo': <module 'sphinx.ext.todo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/todo.pyc'>, 'lago.build': <module 'lago.build' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/build.pyc'>, 'argparse': <module 'argparse' from '/usr/lib/python2.7/argparse.pyc'>, '_codecs': <module '_codecs' (built-in)>, 'babel.messages.email': None, 'docutils.parsers.rst.directives.docutils': None, 'distutils.imp': None, 'copy': <module 'copy' from '/usr/lib/python2.7/copy.pyc'>, 'pkg_resources._vendor.pyparsing': <module 'pkg_resources._vendor.pyparsing' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc'>, 'unittest.weakref': None, 'posix': <module 'posix' (built-in)>, 'sphinx.tempfile': None, 'lago.datetime': None, 'docutils.transforms.parts': <module 'docutils.transforms.parts' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/parts.pyc'>, 'sphinx.builders.sphinx': None, 'encodings.__builtin__': None, 'markupsafe._speedups': <module 'markupsafe._speedups' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/markupsafe/_speedups.so'>, 'ovirtlago.lago': None, 'unittest.result': <module 'unittest.result' from '/usr/lib/python2.7/unittest/result.pyc'>, 'nose.imp': None, 'sphinx.pycode.pgen2.os': None, 'sphinx.search.jssplitter': <module 'sphinx.search.jssplitter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/search/jssplitter.pyc'>, 'nose.plugins.nose': None, 'pygments.modeline': <module 'pygments.modeline' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/modeline.pyc'>, 'requests.packages.urllib3.util.selectors': <module 'requests.packages.urllib3.util.selectors' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/selectors.pyc'>, 'linecache': <module 'linecache' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/linecache.pyc'>, 'sphinx.pycode': <module 'sphinx.pycode' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/__init__.pyc'>, 'docutils.transforms.sys': None, 'hmac': <module 'hmac' from '/usr/lib/python2.7/hmac.pyc'>, 'lago.providers.libvirt.lxml': None, 'subprocess': <module 'subprocess' from '/usr/lib/python2.7/subprocess.pyc'>, 'docutils.writers.latex2e.string': None, 'pytz.datetime': None, 'jinja2.loaders': <module 'jinja2.loaders' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/loaders.pyc'>, 'pygments.formatters._mapping': <module 'pygments.formatters._mapping' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/_mapping.pyc'>, 'xml': <module 'xml' from '/usr/lib/python2.7/xml/__init__.pyc'>, 'babel.textwrap': None, 'docutils.utils.math.math2html': <module 'docutils.utils.math.math2html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/math2html.pyc'>, 'babel.messages.re': None, 'requests.packages.urllib3.packages.ssl_match_hostname.sys': None, 'ovirtlago.warnings': None, 'requests.collections': None, 'docutils.docutils': None, 'lago.plugins.abc': None, 'sphinx.jinja2glue': <module 'sphinx.jinja2glue' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/jinja2glue.pyc'>, 'zipfile': <module 'zipfile' from '/usr/lib/python2.7/zipfile.pyc'>, 'repr': <module 'repr' from '/usr/lib/python2.7/repr.pyc'>, 'sphinx.websupport': <module 'sphinx.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/__init__.pyc'>, 'requests.packages.urllib3': <module 'requests.packages.urllib3' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/__init__.pyc'>, 'sphinx.builders.six': None, 'lago.plugins.lago': None, 'nose.plugins.inspect': None, 'nose.plugins.pkg_resources': None, 'sphinx.builders.docutils': None, 'email': <module 'email' from '/usr/lib/python2.7/email/__init__.pyc'>, 'unittest.re': None, 'threading': <module 'threading' from '/usr/lib/python2.7/threading.pyc'>, 'nose.plugins.skip': <module 'nose.plugins.skip' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/skip.pyc'>, 'email.Message': <email.LazyImporter object>, 'unittest.case': <module 'unittest.case' from '/usr/lib/python2.7/unittest/case.pyc'>, 'sphinx.search.docutils': None, 'docutils.languages': <module 'docutils.languages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/languages/__init__.pyc'>, 'babel.__future__': None, 'pkg_resources._vendor.re': None, 'calendar': <module 'calendar' from '/usr/lib/python2.7/calendar.pyc'>, 'babel.localtime.os': None, 'plistlib': <module 'plistlib' from '/usr/lib/python2.7/plistlib.pyc'>, 'sphinx.pycode.pgen2.collections': None, 'sphinx.writers.copy': None, 'pkg_resources.extern.packaging.version': <module 'pkg_resources._vendor.packaging.version' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.pyc'>, 'babel.re': None, '_MozillaCookieJar': <module '_MozillaCookieJar' from '/usr/lib/python2.7/_MozillaCookieJar.pyc'>, 'requests.urllib': None, 'fcntl': <module 'fcntl' (built-in)>, 'docutils.utils.math.subprocess': None, 'distutils.os': None, 'json.re': None, 'nose.importer': <module 'nose.importer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/importer.pyc'>, 'requests.packages.urllib3.connection': <module 'requests.packages.urllib3.connection' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/connection.pyc'>, 'ovirtlago.logging': None, 'sphinx.builders.xml': <module 'sphinx.builders.xml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/xml.pyc'>, 'distutils.spawn': <module 'distutils.spawn' from '/usr/lib/python2.7/distutils/spawn.pyc'>, 'opcode': <module 'opcode' from '/usr/lib/python2.7/opcode.pyc'>, 'docutils.parsers.rst.directives.re': None, 'requests.warnings': None, 'unittest': <module 'unittest' from '/usr/lib/python2.7/unittest/__init__.pyc'>, 'logging.errno': None, 'lago.sys': None, 'sphinx.transforms.compact_bullet_list': <module 'sphinx.transforms.compact_bullet_list' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/transforms/compact_bullet_list.pyc'>, 'nose.inspect': None, 'sre_constants': <module 'sre_constants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/sre_constants.pyc'>, 'sphinx.ext.napoleon': <module 'sphinx.ext.napoleon' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/napoleon/__init__.pyc'>, 'certifi': <module 'certifi' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/certifi/__init__.pyc'>, 'sphinx.util.tags': <module 'sphinx.util.tags' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/tags.pyc'>, 'docutils.parsers.rst.docutils': None, 'docutils.readers': <module 'docutils.readers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/readers/__init__.pyc'>, 'sphinx.environment.sphinx': None, 'sphinx.builders.text': <module 'sphinx.builders.text' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/text.pyc'>, 'logging.atexit': None, 'logging.cPickle': None, 'readthedocs_ext.comments.json': None, 'email.MIMENonMultipart': <email.LazyImporter object>, 'sphinx.util.websupport': <module 'sphinx.util.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/websupport.pyc'>, 'lago.paramiko': None, 'nose.types': None, 'readthedocs_ext.embed': <module 'readthedocs_ext.embed' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/embed.pyc'>, 'sphinx.search.os': None, 'FixTk': <module 'FixTk' from '/usr/lib/python2.7/lib-tk/FixTk.pyc'>, 'lago.providers.libvirt.utils': <module 'lago.providers.libvirt.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/utils.pyc'>, 'pkg_resources._vendor.packaging.specifiers': <module 'pkg_resources._vendor.packaging.specifiers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc'>, 'nose.proxy': <module 'nose.proxy' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/proxy.pyc'>, 'requests.packages.urllib3.packages._abcoll': None, 'sphinx.ext.napoleon.re': None, 'shutil': <module 'shutil' from '/usr/lib/python2.7/shutil.pyc'>, 'sphinx.builders.texinfo': <module 'sphinx.builders.texinfo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/texinfo.pyc'>, 'lago.export': <module 'lago.export' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/export.pyc'>, 'docutils.utils.codecs': None, 'sphinx.util.errno': None, 'PIL.numbers': None, 'pygments.formatters.pygments': None, 'pkg_resources.extern': <module 'pkg_resources.extern' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/extern/__init__.pyc'>, 'multiprocessing.subprocess': None, 'importlib.sys': None, 'ovirtlago.testlib': <module 'ovirtlago.testlib' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/testlib.pyc'>, 'jinja2.visitor': <module 'jinja2.visitor' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/visitor.pyc'>, 'encodings.idna': <module 'encodings.idna' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/idna.pyc'>, 'docutils.utils.math.os': None, 'pygments.lexers.c_cpp': <module 'pygments.lexers.c_cpp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/c_cpp.pyc'>, 'docutils.languages.sys': None, 'docutils.parsers.rst.directives.csv': None, 'requests.packages.chardet': <module 'requests.packages.chardet' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/chardet/__init__.pyc'>, 'struct': <module 'struct' from '/usr/lib/python2.7/struct.pyc'>, 'sphinx.ext.sphinx': None, 'docutils.core': <module 'docutils.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/core.pyc'>, 'lago.select': None, 'email.Parser': <email.LazyImporter object>, 'distutils.types': None, 'pkg_resources.extern.packaging.markers': <module 'pkg_resources._vendor.packaging.markers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.pyc'>, 'httplib': <module 'httplib' from '/usr/lib/python2.7/httplib.pyc'>, 'sphinx.pycode.pgen2.pgen': <module 'sphinx.pycode.pgen2.pgen' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/pgen.pyc'>, 'lago.termios': None, 'sphinx.environment.managers.re': None, 'nose': <module 'nose' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/__init__.pyc'>, 'sphinx.directives.difflib': None, 'SimpleHTTPServer': <module 'SimpleHTTPServer' from '/usr/lib/python2.7/SimpleHTTPServer.pyc'>, 'sphinx.util.contextlib': None, 'nose.unittest': None, 'pygments.lexers.copy': None, 'requests.re': None, 'sphinx.util.multiprocessing': None, 'email.MIMEAudio': <email.LazyImporter object>, 'pygments.formatters.re': None, 'email.errors': <module 'email.errors' from '/usr/lib/python2.7/email/errors.pyc'>, 'nose.plugins.manager': <module 'nose.plugins.manager' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/manager.pyc'>, 'sphinx.util.traceback': None, 'sphinx.ext.posixpath': None, 'sphinx.ext.functools': None, 'inspect': <module 'inspect' from '/usr/lib/python2.7/inspect.pyc'>, 'sphinx.util.locale': None, 'sphinx.domains.string': None, 'email.Iterators': <email.LazyImporter object>, 'lago.providers.libvirt.time': None, 'lago.subnet_lease': <module 'lago.subnet_lease' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/subnet_lease.pyc'>, 'email.Charset': <email.LazyImporter object>, 'jinja2.warnings': None, 'os': <module 'os' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/os.pyc'>, 'docutils.transforms': <module 'docutils.transforms' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/__init__.pyc'>, 'requests.certs': <module 'requests.certs' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/certs.pyc'>, 'sphinx.domains.re': None, 'jinja2.itertools': None, 'operator': <module 'operator' (built-in)>, 'jinja2.runtime': <module 'jinja2.runtime' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/runtime.pyc'>, 'readthedocs_ext.__future__': None, 'babel.messages.os': None, 'Cookie': <module 'Cookie' from '/usr/lib/python2.7/Cookie.pyc'>, 'lago_template_repo.lago': None, '_warnings': <module '_warnings' (built-in)>, 'imagesize': <module 'imagesize' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/imagesize/__init__.pyc'>, 'lago.collections': None, 'nose.plugins.itertools': None, 'babel.dates': <module 'babel.dates' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/dates.pyc'>, 'sphinx.builders': <module 'sphinx.builders' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/__init__.pyc'>, 'lago.array': None, 'sphinx.util.jsonimpl': <module 'sphinx.util.jsonimpl' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/jsonimpl.pyc'>, 'sphinx.pycode.re': None, 'multiprocessing.process': <module 'multiprocessing.process' from '/usr/lib/python2.7/multiprocessing/process.pyc'>, 'logging.SocketServer': None, 'requests.struct': None, 'docutils.languages.docutils': None, 'sphinx.ext.coverage': <module 'sphinx.ext.coverage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/coverage.pyc'>, 'lago.grp': None, 'sphinx.writers.texinfo': <module 'sphinx.writers.texinfo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/texinfo.pyc'>, 'sphinx.pkg_resources': None, 'requests.threading': None, 'logging.types': None, 'gettext': <module 'gettext' from '/usr/lib/python2.7/gettext.pyc'>, '_abcoll': <module '_abcoll' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/_abcoll.pyc'>, 'requests.packages.urllib3.request': <module 'requests.packages.urllib3.request' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/request.pyc'>, 'mimetypes': <module 'mimetypes' from '/usr/lib/python2.7/mimetypes.pyc'>, 'sphinx.util.docutils': <module 'sphinx.util.docutils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/docutils.pyc'>, 'pygments.lexers': <module 'pygments.lexers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/__init__.pyc'>, 'unittest.signals': <module 'unittest.signals' from '/usr/lib/python2.7/unittest/signals.pyc'>, 'sphinx.util.io': None, 'termios': <module 'termios' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/termios.x86_64-linux-gnu.so'>, 'sphinx.builders.htmlhelp': <module 'sphinx.builders.htmlhelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/htmlhelp.pyc'>, 'sphinx.pycode.pgen2.six': None, 'sphinx.pycode.pgen2.pickle': None, 'pygments.styles.friendly': <module 'pygments.styles.friendly' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/styles/friendly.pyc'>, 'readthedocs_ext.docutils': None, 'sphinx.util.docstrings': <module 'sphinx.util.docstrings' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/docstrings.pyc'>, 'sphinx.deprecation': <module 'sphinx.deprecation' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/deprecation.pyc'>, 'filecmp': <module 'filecmp' from '/usr/lib/python2.7/filecmp.pyc'>, 'xml.sax.expatreader': <module 'xml.sax.expatreader' from '/usr/lib/python2.7/xml/sax/expatreader.pyc'>, 'sphinx.environment.docutils': None, 'sphinx.uuid': None, 'scp': <sphinx.ext.autodoc._MockModule object>, 'requests.packages.urllib3._collections': <module 'requests.packages.urllib3._collections' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/_collections.pyc'>, '_virtualenv_distutils.sys': None, 'sphinx.builders.epub3': <module 'sphinx.builders.epub3' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/epub3.pyc'>, 'babel.codecs': None, 'sphinx.ext.intersphinx': <module 'sphinx.ext.intersphinx' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/intersphinx.pyc'>, 'sphinx.util.filecmp': None, 'encodings.utf_8': <module 'encodings.utf_8' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/utf_8.pyc'>, 'setuptools.windows_support': <module 'setuptools.windows_support' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/windows_support.pyc'>, 'json.encoder': <module 'json.encoder' from '/usr/lib/python2.7/json/encoder.pyc'>, 'lago.providers.libvirt.network': <module 'lago.providers.libvirt.network' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/network.pyc'>, 'unittest.StringIO': None, 'sphinx.writers.text': <module 'sphinx.writers.text' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/text.pyc'>, 'sphinx.writers': <module 'sphinx.writers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/__init__.pyc'>, 'readthedocs_ext.comments.directive': <module 'readthedocs_ext.comments.directive' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/directive.pyc'>, 'docutils.writers._html_base': <module 'docutils.writers._html_base' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/_html_base.pyc'>, 'babel.messages.pofile': <module 'babel.messages.pofile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/pofile.pyc'>, 'sphinx.domains.copy': None, 'lago.plugins.cli': <module 'lago.plugins.cli' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/cli.pyc'>, 'abc': <module 'abc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/abc.pyc'>, 'lago.plugins.warnings': None, 'optparse': <module 'optparse' from '/usr/lib/python2.7/optparse.pyc'>, 'xml.etree': <module 'xml.etree' from '/usr/lib/python2.7/xml/etree/__init__.pyc'>, 'pygments.lexers.html': <module 'pygments.lexers.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/html.pyc'>, 'sphinx.optparse': None, 'imagesize.struct': None, 'multiprocessing.multiprocessing': None, 'guestfs': <sphinx.ext.autodoc._MockModule object>, 'StringIO': <module 'StringIO' from '/usr/lib/python2.7/StringIO.pyc'>, 'requests.packages.urllib3.util.time': None, 'doctest': <module 'doctest' from '/usr/lib/python2.7/doctest.pyc'>, 'sphinx.domains.unicodedata': None, 'lago.workdir': <module 'lago.workdir' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/workdir.pyc'>, 'sphinx.cmdline': <module 'sphinx.cmdline' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/cmdline.pyc'>, 'ovirtlago.reposetup': <module 'ovirtlago.reposetup' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/reposetup.pyc'>, 'docutils.sys': None, 'sphinx.theming': <module 'sphinx.theming' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/theming.pyc'>, 'select': <module 'select' (built-in)>, 'nose.plugins.os': None, 'lago.lago': None, 'pkg_resources._vendor.six.moves.urllib': <module 'pkg_resources._vendor.six.moves.urllib' (built-in)>, 'requests.structures': <module 'requests.structures' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/structures.pyc'>, 'imagesize.sys': None, 'sphinx.util.gettext': None, 'sphinx.util.itertools': None, 'lago.re': None, 'alabaster.alabaster': None, 'sphinx.ext.docutils': None, 'unicodedata': <module 'unicodedata' (built-in)>, 'nose.os': None, 'encodings.aliases': <module 'encodings.aliases' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/aliases.pyc'>, 'sphinx.pprint': None, 'xml.sax._exceptions': <module 'xml.sax._exceptions' from '/usr/lib/python2.7/xml/sax/_exceptions.pyc'>, 'sphinx.config': <module 'sphinx.config' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/config.pyc'>, 'sphinx.__future__': None, 'nose.time': None, 'numbers': <module 'numbers' from '/usr/lib/python2.7/numbers.pyc'>, 'requests.exceptions': <module 'requests.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/exceptions.pyc'>, 'setuptools.ctypes': None, 'pygments.util': <module 'pygments.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/util.pyc'>, 'docutils.utils.math.datetime': None, 'lago.posixpath': None, 'sphinx.environment.managers': <module 'sphinx.environment.managers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/managers/__init__.pyc'>, 'sphinx.ext.sys': None, 'csv': <module 'csv' from '/usr/lib/python2.7/csv.pyc'>, 'sphinx.util.compat': <module 'sphinx.util.compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/compat.pyc'>, 'ovirtlago.time': None, 'nose.tools': <module 'nose.tools' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/tools/__init__.pyc'>, 'sphinx.directives.sys': None, 'sphinx.transforms.sphinx': None, 'pygments.formatter': <module 'pygments.formatter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatter.pyc'>, 'babel.localtime.babel': None, 'sphinx.util.texescape': <module 'sphinx.util.texescape' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/texescape.pyc'>, 'lago.socket': None, 'sphinx.builders.gettext': <module 'sphinx.builders.gettext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/gettext.pyc'>, 'ovirtlago': <module 'ovirtlago' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/__init__.pyc'>, 'sphinx.io': <module 'sphinx.io' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/io.pyc'>, 'babel.messages.copy': None, 'setuptools.pkg_resources': None, 'sphinx.writers.manpage': <module 'sphinx.writers.manpage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/manpage.pyc'>, 'lago.magic': None, 'nose.itertools': None, 'pytz.lazy': <module 'pytz.lazy' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/lazy.pyc'>, 'PIL.sys': None, 'readthedocs_ext.comments.translator': <module 'readthedocs_ext.comments.translator' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/translator.pyc'>, 'requests.urllib2': None, 'docutils.writers.latex2e': <module 'docutils.writers.latex2e' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/latex2e/__init__.pyc'>, 'lago.plugins.os': None, 'sphinx.builders.pipes': None, 'setuptools.distutils': None, 'pkg_resources._vendor.six': <module 'pkg_resources._vendor.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc'>, 'docutils.utils.re': None, 'email.urllib': None, 'sphinx.writers.posixpath': None, 'sphinx.ext.warnings': None, 'decimal': <module 'decimal' from '/usr/lib/python2.7/decimal.pyc'>, 'pkg_resources.extern.six.moves.urllib': <module 'pkg_resources._vendor.six.moves.urllib' (built-in)>, 'token': <module 'token' from '/usr/lib/python2.7/token.pyc'>, 'ovirtlago.contextlib': None, 'sphinx.domains': <module 'sphinx.domains' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/__init__.pyc'>, 'jinja2.UserList': None, 'lago.sysprep': <module 'lago.sysprep' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/sysprep.pyc'>, 'PIL.ImageMode': <module 'PIL.ImageMode' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/ImageMode.pyc'>, 'sphinx.builders.PIL': None, 'six.moves.urllib.parse': <module 'six.moves.urllib_parse' (built-in)>, 'lago.plugins.logging': None, 'nose.loader': <module 'nose.loader' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/loader.pyc'>, 'distutils.warnings': None, 'sphinx.directives.other': <module 'sphinx.directives.other' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/other.pyc'>, 'encodings.utf_8_sig': <module 'encodings.utf_8_sig' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/utf_8_sig.pyc'>, 'jinja2.compiler': <module 'jinja2.compiler' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/compiler.pyc'>, 'certifi.core': <module 'certifi.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/certifi/core.pyc'>, 'requests.packages.urllib3.packages.ssl_match_hostname.re': None, 'ctypes.struct': None, 'sphinx.pycode.pgen2.tokenize': <module 'sphinx.pycode.pgen2.tokenize' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/tokenize.pyc'>, 'lago.uuid': None, 'sphinx.builders.html': <module 'sphinx.builders.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/html.pyc'>, 'thread': <module 'thread' (built-in)>, 'docutils.parsers.rst.directives.body': <module 'docutils.parsers.rst.directives.body' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/body.pyc'>, 'sphinx.types': None, 'multiprocessing.util': <module 'multiprocessing.util' from '/usr/lib/python2.7/multiprocessing/util.pyc'>, '_collections': <module '_collections' (built-in)>, 'sphinx.websupport.sphinx': None, 'docutils.writers.html4css1.docutils': None, 'email.Errors': <email.LazyImporter object>, 'nose.plugins.deprecated': <module 'nose.plugins.deprecated' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/plugins/deprecated.pyc'>, 'ctypes.sys': None, 'pygments.lexers.__future__': None, 'posixpath': <module 'posixpath' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/posixpath.pyc'>, 'docutils.utils.locale': None, 'requests.packages.urllib3.packages.ssl_match_hostname.backports': None, 'requests.json': None, 'rpmUtils.miscutils': <sphinx.ext.autodoc._MockModule object>, 'json._json': None, 'nose.core': <module 'nose.core' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/core.pyc'>, 'sphinx.util.matching': <module 'sphinx.util.matching' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/matching.pyc'>, 'docutils.parsers.sys': None, 'hashlib': <module 'hashlib' from '/usr/lib/python2.7/hashlib.pyc'>, 'lago.plugins': <module 'lago.plugins' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/__init__.pyc'>, 'requests.cgi': None, 'requests.models': <module 'requests.models' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/models.pyc'>, 'sre_compile': <module 'sre_compile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/sre_compile.pyc'>, 'pkg_resources._vendor.threading': None, 'setuptools.extern.six': <module 'pkg_resources._vendor.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc'>, 'setuptools.itertools': None, 'logging.collections': None, 'email.base64': None, 'multiprocessing.atexit': None, 'sphinx.builders.hashlib': None, 'lago.plugins.enum': None, 'requests.packages.chardet.sys': None, 'ovirtlago.constants': <module 'ovirtlago.constants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/constants.pyc'>, 'sphinx.util.osutil': <module 'sphinx.util.osutil' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/osutil.pyc'>, 'warnings': <module 'warnings' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/warnings.pyc'>, 'encodings.ascii': <module 'encodings.ascii' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/ascii.pyc'>, 'lago.glob': None, 'docutils.utils.os': None, 'docutils.transforms.misc': <module 'docutils.transforms.misc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/misc.pyc'>, 'json.sys': None, 'lago.service': <module 'lago.service' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/service.pyc'>, 'multiprocessing._multiprocessing': None, 'bdb': <module 'bdb' from '/usr/lib/python2.7/bdb.pyc'>, '_virtualenv_distutils': <module '_virtualenv_distutils' from '/usr/lib/python2.7/distutils/__init__.pyc'>, 'pkg_resources.extern.six.moves': <module 'pkg_resources._vendor.six.moves' (built-in)>, 'nose.tools.trivial': <module 'nose.tools.trivial' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/tools/trivial.pyc'>, 'lago.providers.libvirt.lago': None, 'heapq': <module 'heapq' from '/usr/lib/python2.7/heapq.pyc'>, 'sphinx.builders.changes': <module 'sphinx.builders.changes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/changes.pyc'>, 'logging.os': None, 'ctypes._endian': <module 'ctypes._endian' from '/usr/lib/python2.7/ctypes/_endian.pyc'>, 'encodings.encodings': None, 'unittest.pprint': None, 'nose.stat': None, 'sphinx.ext.glob': None, 'setuptools.imp': None, 'requests.utils': <module 'requests.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/utils.pyc'>, 'sphinx.pycode.pgen2.string': None, 'pygments.sys': None, 'docutils.transforms.components': <module 'docutils.transforms.components' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/components.pyc'>, 'xml.sax._weakref': None, 'docutils.utils.math.unicodedata': None, 'docutils.parsers.docutils': None, 'docutils.readers.sys': None, 'babel.messages.datetime': None, 'requests.hashlib': None, 'pytz.tzfile': <module 'pytz.tzfile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pytz/tzfile.pyc'>, 'sphinx.builders.applehelp': <module 'sphinx.builders.applehelp' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/applehelp.pyc'>, 'locale': <module 'locale' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/locale.pyc'>, 'PIL.collections': None, 'jinja2.os': None, 'lago.providers.libvirt.copy': None, 'xml.sax.saxutils': <module 'xml.sax.saxutils' from '/usr/lib/python2.7/xml/sax/saxutils.pyc'>, 'jinja2.urllib': None, 'docutils.parsers.rst.languages': <module 'docutils.parsers.rst.languages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/languages/__init__.pyc'>, 'sphinx.environment.glob': None, 'sphinx.writers.sphinx': None, 'pygments.StringIO': None, 'requests.StringIO': None, 'pkg_resources._vendor.string': None, 'sphinx.versioning': <module 'sphinx.versioning' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/versioning.pyc'>, 'pygments.time': None, 'sphinx.locale.gettext': None, 'lago.brctl': <module 'lago.brctl' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/brctl.pyc'>, 'setuptools.setuptools': None, 'babel.messages.cgi': None, 'pdb': <module 'pdb' from '/usr/lib/python2.7/pdb.pyc'>, 'unittest.collections': None, 'logging.struct': None, 'pkg_resources._vendor.sre_constants': None, 'sphinx.builders.time': None, 'sphinx.ext.napoleon.six': None, 'requests.packages.urllib3.connectionpool': <module 'requests.packages.urllib3.connectionpool' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.pyc'>, 'sphinx.builders.collections': None, 'lago.shutil': None, 'requests.packages.urllib3.util.ssl_': <module 'requests.packages.urllib3.util.ssl_' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.pyc'>, 'requests.certifi': None, 'pytz.os': None, 'pytz.bisect': None, 'sphinx.pycode.pgen2.grammar': <module 'sphinx.pycode.pgen2.grammar' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/grammar.pyc'>, 'sphinx.ext.six': None, 'copy_reg': <module 'copy_reg' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/copy_reg.pyc'>, 'nose.plugins.logging': None, '__main__': <module '__main__' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/bin/sphinx-build'>, 'requests.packages.urllib3.filepost': <module 'requests.packages.urllib3.filepost' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/filepost.pyc'>, 'ovirtsdk.infrastructure': <sphinx.ext.autodoc._MockModule object>, 'requests.encodings': None, 'sphinx.util.shutil': None, 'email.MIMEBase': <email.LazyImporter object>, 'docutils.parsers.rst.types': None, 'docutils.utils.math.urllib': None, 'requests.packages.urllib3.util.response': <module 'requests.packages.urllib3.util.response' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/response.pyc'>, 'sphinx.util': <module 'sphinx.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/__init__.pyc'>, 'configparser': <module 'configparser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/configparser.pyc'>, 'sphinx.builders.uuid': None, 'babel._compat': <module 'babel._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/_compat.pyc'>, 'json.json': None, 'distutils.archive_util': <module 'distutils.archive_util' from '/usr/lib/python2.7/distutils/archive_util.pyc'>, 'email.re': None, 'sys': <module 'sys' (built-in)>, 'sphinx.util.imagesize': None, 'xml.sax.sys': None, 'requests.hooks': <module 'requests.hooks' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/hooks.pyc'>, 'sphinx.util.inspect': <module 'sphinx.util.inspect' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/inspect.pyc'>, 'sphinx.sphinx_rtd_theme': None, 'requests.netrc': None, 'setuptools.extern': <module 'setuptools.extern' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/extern/__init__.pyc'>, 'PIL.__builtin__': None, 'jinja2.optimizer': <module 'jinja2.optimizer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/optimizer.pyc'>, 'sphinx.util.functools': None, 'docutils.writers.sys': None, 'distutils': <module 'distutils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/distutils/__init__.pyc'>, 'lago.fcntl': None, 'requests._internal_utils': <module 'requests._internal_utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/_internal_utils.pyc'>, 'email.mime': <module 'email.mime' from '/usr/lib/python2.7/email/mime/__init__.pyc'>, 'PIL': <module 'PIL' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/__init__.pyc'>, 'requests.io': None, 'xml.sax.urllib': None, 'sphinx.websupport.errors': <module 'sphinx.websupport.errors' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/errors.pyc'>, 'lago.plugins.output': <module 'lago.plugins.output' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/output.pyc'>, 'logging.socket': None, 'zipimport': <module 'zipimport' (built-in)>, 'jinja2.nodes': <module 'jinja2.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/nodes.pyc'>, 'sphinx.builders.re': None, 'signal': <module 'signal' (built-in)>, 'quopri': <module 'quopri' from '/usr/lib/python2.7/quopri.pyc'>, 'distutils.version': <module 'distutils.version' from '/usr/lib/python2.7/distutils/version.pyc'>, 'sphinx.writers.itertools': None, 'requests.packages.urllib3.contrib': <module 'requests.packages.urllib3.contrib' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/contrib/__init__.pyc'>, 'sphinx.builders.websupport': <module 'sphinx.builders.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/websupport.pyc'>, 'xml.parsers.expat': <module 'xml.parsers.expat' from '/usr/lib/python2.7/xml/parsers/expat.pyc'>, 'ovirtlago.ovirtsdk': None, 'HTMLParser': <module 'HTMLParser' from '/usr/lib/python2.7/HTMLParser.pyc'>, 'setuptools.importlib': None, 'sphinx.builders.epub': <module 'sphinx.builders.epub' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/epub.pyc'>, 'lago.ssh': <module 'lago.ssh' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/ssh.pyc'>, 'cgi': <module 'cgi' from '/usr/lib/python2.7/cgi.pyc'>, 'docutils.optparse': None, 'UserDict': <module 'UserDict' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/UserDict.pyc'>, 'jinja2.keyword': None, 'jinja2.filters': <module 'jinja2.filters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/filters.pyc'>, 'lockfile': <sphinx.ext.autodoc._MockModule object>, 'unittest.loader': <module 'unittest.loader' from '/usr/lib/python2.7/unittest/loader.pyc'>, 'jinja2.jinja2': None, 'distutils.pwd': None, '__future__': <module '__future__' from '/usr/lib/python2.7/__future__.pyc'>, 'pkg_resources.extern.packaging.requirements': <module 'pkg_resources._vendor.packaging.requirements' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.pyc'>, 'distutils.string': None, 'ovirtlago.BaseHTTPServer': None, 'errno': <module 'errno' (built-in)>, 'pkg_resources._vendor.packaging.requirements': <module 'pkg_resources._vendor.packaging.requirements' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.pyc'>, 'babel.bisect': None, 'docutils.parsers.rst.directives.misc': <module 'docutils.parsers.rst.directives.misc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/misc.pyc'>, 'pygments.itertools': None, 'docutils.frontend': <module 'docutils.frontend' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/frontend.pyc'>, 'docutils.writers.latex2e.sys': None, 'setuptools.msvc': <module 'setuptools.msvc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/msvc.pyc'>, 'jinja2.idtracking': <module 'jinja2.idtracking' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/idtracking.pyc'>, 'sphinx.six': None, 'email.os': None, 'requests.compat': <module 'requests.compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/compat.pyc'>, 'pwd': <module 'pwd' (built-in)>, 'babel.collections': None, '_struct': <module '_struct' (built-in)>, 'docutils.parsers.rst.directives.admonitions': <module 'docutils.parsers.rst.directives.admonitions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/admonitions.pyc'>, 'uu': <module 'uu' from '/usr/lib/python2.7/uu.pyc'>, 'requests.packages': <module 'requests.packages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/__init__.pyc'>, 'nose.plugins.textwrap': None, 'multiprocessing.signal': None, 'xml.sax': <module 'xml.sax' from '/usr/lib/python2.7/xml/sax/__init__.pyc'>, 'setuptools.extern.six.moves': <module 'pkg_resources._vendor.six.moves' (built-in)>, 'logging.codecs': None, '_random': <module '_random' (built-in)>, 'jinja2.decimal': None, 'lago.prefix': <module 'lago.prefix' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/prefix.pyc'>, 'lago.providers.libvirt': <module 'lago.providers.libvirt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/__init__.pyc'>, 'sphinx.builders.dummy': <module 'sphinx.builders.dummy' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/dummy.pyc'>, 'email.Generator': <email.LazyImporter object>, 'sphinx.util.template': <module 'sphinx.util.template' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/template.pyc'>, 'grp': <module 'grp' (built-in)>, 'sphinx.zipfile': None, 'requests.packages.urllib3.util.timeout': <module 'requests.packages.urllib3.util.timeout' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/timeout.pyc'>, 'email.warnings': None, 'readthedocs_ext.comments.nilsimsa': None, 'requests.packages.urllib3.poolmanager': <module 'requests.packages.urllib3.poolmanager' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/poolmanager.pyc'>, 'sphinx.builders.posixpath': None, 'distutils.file_util': <module 'distutils.file_util' from '/usr/lib/python2.7/distutils/file_util.pyc'>, 'requests.calendar': None, 'sphinx.ext.zlib': None, 'sitecustomize': <module 'sitecustomize' from '/usr/lib/python2.7/sitecustomize.pyc'>, 'lago.threading': None, 'rpmUtils.arch': <sphinx.ext.autodoc._MockModule object>, 'ovirtlago.utils': <module 'ovirtlago.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/utils.pyc'>, 'nose.plugins.warnings': None, 'docutils.statemachine': <module 'docutils.statemachine' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/statemachine.pyc'>, 'distutils.debug': <module 'distutils.debug' from '/usr/lib/python2.7/distutils/debug.pyc'>, 'setuptools.types': None, 'ctypes.os': None, 'sphinx.ext.inspect': None, 'jinja2.cPickle': None, 'gc': <module 'gc' (built-in)>, 'backports': <module 'backports' (built-in)>, 'base64': <module 'base64' from '/usr/lib/python2.7/base64.pyc'>, 'sphinx.ext.viewcode': <module 'sphinx.ext.viewcode' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/viewcode.pyc'>, 'lago.io': None, 'docutils.utils.docutils': None, 'nose.new': None, 'docutils.writers.latex2e.urllib': None, 'PIL.warnings': None, 'sphinx.util.pycompat': <sphinx.util.pycompat._DeprecationWrapper object>, 'email.Header': <email.LazyImporter object>, 'sphinx.sphinx': None, 'lago.xmltodict': None, 'xml.etree.warnings': None, 'sphinx.ext': <module 'sphinx.ext' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/__init__.pyc'>, 'magic': <sphinx.ext.autodoc._MockModule object>, 'docutils.parsers.rst.tableparser': <module 'docutils.parsers.rst.tableparser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/tableparser.pyc'>, 'email.codecs': None, 'babel.threading': None, 'babel.messages.plurals': <module 'babel.messages.plurals' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/plurals.pyc'>, 'jinja2.exceptions': <module 'jinja2.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/exceptions.pyc'>, 'sphinx.docutils': None, 'logging.threading': None, 'babel.messages.struct': None, 'jinja2.parser': <module 'jinja2.parser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/parser.pyc'>, 'lago.__future__': None, 'logging.io': None, 'pkg_resources._vendor.collections': None, 'pipes': <module 'pipes' from '/usr/lib/python2.7/pipes.pyc'>, 'sphinx.writers.websupport': <module 'sphinx.writers.websupport' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/websupport.pyc'>, 'lago.paths': <module 'lago.paths' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/paths.pyc'>, 'lago.plugins.copy': None, 'requests.packages.urllib3.exceptions': <module 'requests.packages.urllib3.exceptions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/exceptions.pyc'>, 'ctypes.tempfile': None, 'unittest.suite': <module 'unittest.suite' from '/usr/lib/python2.7/unittest/suite.pyc'>, 'json.scanner': <module 'json.scanner' from '/usr/lib/python2.7/json/scanner.pyc'>, 'sphinx.environment.re': None, 'sphinx.addnodes': <module 'sphinx.addnodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/addnodes.pyc'>, 'xdg.BaseDirectory': <module 'xdg.BaseDirectory' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/xdg/BaseDirectory.pyc'>, 'distutils.ccompiler': <module 'distutils.ccompiler' from '/usr/lib/python2.7/distutils/ccompiler.pyc'>, 'pkg_resources': <module 'pkg_resources' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/__init__.pyc'>, 'docutils.utils.urischemes': <module 'docutils.utils.urischemes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/urischemes.pyc'>, 'sphinx.pycode.pgen2.literals': <module 'sphinx.pycode.pgen2.literals' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyc'>, 'sphinx.util.babel': None, '_sre': <module '_sre' (built-in)>, 'sphinx.util.docfields': <module 'sphinx.util.docfields' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/docfields.pyc'>, 'pygments.formatters.html': <module 'pygments.formatters.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/formatters/html.pyc'>, 'docutils.re': None, 'lago.providers.libvirt.libvirt': None, 'sphinx.websupport.posixpath': None, 'requests.api': <module 'requests.api' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/api.pyc'>, 'docutils.parsers.rst.directives.urllib': None, 'lago.yaml': None, 'binascii': <module 'binascii' (built-in)>, 'lago.Queue': None, 'unittest.fnmatch': None, 'pygments.formatters.sys': None, 'sphinx.ext.napoleon.sys': None, 'jinja2.weakref': None, 'backports.configparser': <module 'backports.configparser' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/backports/configparser/__init__.pyc'>, 'babel.itertools': None, 'docutils.unicodedata': None, 'xml.sax.weakref': None, 'requests.packages.urllib3.fields': <module 'requests.packages.urllib3.fields' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/fields.pyc'>, 'markupbase': <module 'markupbase' from '/usr/lib/python2.7/markupbase.pyc'>, 'sre_parse': <module 'sre_parse' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/sre_parse.pyc'>, 'docutils.writers.docutils_xml': <module 'docutils.writers.docutils_xml' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/writers/docutils_xml.pyc'>, 'sphinx.websupport.search.six': None, 'pkg_resources.extern.six': <module 'pkg_resources._vendor.six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc'>, 'jinja2.utils': <module 'jinja2.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/utils.pyc'>, 'setuptools.re': None, 'nose.result': <module 'nose.result' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/result.pyc'>, 'six': <module 'six' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/six.pyc'>, 'ovirtlago.shutil': None, 'babel.localtime.subprocess': None, 'ctypes.util': <module 'ctypes.util' from '/usr/lib/python2.7/ctypes/util.pyc'>, 'sphinx.util.fileutil': <module 'sphinx.util.fileutil' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/fileutil.pyc'>, 'lxml': <sphinx.ext.autodoc._MockModule object>, 'docutils.writers.xml': None, 'sphinx.roles': <module 'sphinx.roles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/roles.pyc'>, 'multiprocessing.sys': None, 'sphinx.domains.sphinx': None, 'pkg_resources._vendor.__builtin__': None, 'nose.sys': None, 'pkg_resources.extern.packaging.specifiers': <module 'pkg_resources._vendor.packaging.specifiers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc'>, 'stevedore.extension': <sphinx.ext.autodoc._MockModule object>, 'distutils.core': <module 'distutils.core' from '/usr/lib/python2.7/distutils/core.pyc'>, 'requests.base64': None, 'stevedore': <sphinx.ext.autodoc._MockModule object>, 'email.string': None, 'pygments.lexers.jvm': <module 'pygments.lexers.jvm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/jvm.pyc'>, 'sphinx.jinja2': None, 'sphinx.util.console': <module 'sphinx.util.console' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/console.pyc'>, 'docutils.parsers.rst.directives.images': <module 'docutils.parsers.rst.directives.images' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/images.pyc'>, 'pygments.styles': <module 'pygments.styles' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/styles/__init__.pyc'>, 'sysconfig': <module 'sysconfig' from '/usr/lib/python2.7/sysconfig.pyc'>, 'sphinx.pycode.os': None, 'email.MIMEText': <email.LazyImporter object>, 'distutils.dep_util': <module 'distutils.dep_util' from '/usr/lib/python2.7/distutils/dep_util.pyc'>, 'tempfile': <module 'tempfile' from '/usr/lib/python2.7/tempfile.pyc'>, 'setuptools.extension': <module 'setuptools.extension' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/extension.pyc'>, 'sphinx.builders.linkcheck': <module 'sphinx.builders.linkcheck' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/linkcheck.pyc'>, 'lago.vm': <module 'lago.vm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/vm.pyc'>, 'pkg_resources._vendor': <module 'pkg_resources._vendor' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/__init__.pyc'>, 'docutils.writers.re': None, 'docutils.utils': <module 'docutils.utils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/__init__.pyc'>, 'multiprocessing.itertools': None, 'requests.adapters': <module 'requests.adapters' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/adapters.pyc'>, 'docutils.parsers.rst.directives.html': <module 'docutils.parsers.rst.directives.html' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/directives/html.pyc'>, 'docutils.transforms.writer_aux': <module 'docutils.transforms.writer_aux' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/writer_aux.pyc'>, 'sphinx.warnings': None, 'distutils.grp': None, 'sphinx.environment.managers.unicodedata': None, 'sphinx.transforms': <module 'sphinx.transforms' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/transforms/__init__.pyc'>, 'requests.packages.urllib3.packages.ssl_match_hostname._implementation': <module 'requests.packages.urllib3.packages.ssl_match_hostname._implementation' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc'>, 'logging.handlers': <module 'logging.handlers' from '/usr/lib/python2.7/logging/handlers.pyc'>, 'sphinx.util.codecs': None, 'requests.packages.urllib3.packages.ordered_dict': <module 'requests.packages.urllib3.packages.ordered_dict' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/ordered_dict.pyc'>, 'pygments.formatters.os': None, 'lago.pkg_resources': None, 'cStringIO': <module 'cStringIO' (built-in)>, 'requests.datetime': None, 'sphinx.environment.six': None, 'docutils.parsers.rst.re': None, 'PIL._imaging': <module 'PIL._imaging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/_imaging.so'>, 'ovirtlago.nose': None, 'encodings': <module 'encodings' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/encodings/__init__.pyc'>, 'PIL._binary': <module 'PIL._binary' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/PIL/_binary.pyc'>, 'sphinx.util.parallel': <module 'sphinx.util.parallel' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/parallel.pyc'>, 'docutils': <module 'docutils' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/__init__.pyc'>, 'sphinx.util.collections': None, 'UserString': <module 'UserString' from '/usr/lib/python2.7/UserString.pyc'>, 'lago.virt': <module 'lago.virt' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/virt.pyc'>, 'babel.plural': <module 'babel.plural' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/plural.pyc'>, 'math': <module 'math' (built-in)>, 'lago.providers.libvirt.vm': <module 'lago.providers.libvirt.vm' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/libvirt/vm.pyc'>, 'babel.sys': None, 'sphinx.util.jsdump': <module 'sphinx.util.jsdump' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/jsdump.pyc'>, 'sphinx.util.jinja2': None, 'sphinx.environment.managers.six': None, 'lago_template_repo': <module 'lago_template_repo' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago_template_repo/__init__.pyc'>, 'jinja2.copy': None, 'lago.json': None, 'requests.copy': None, 'babel.localtime.__future__': None, 'setuptools.numbers': None, 'sphinx.sys': None, 'babel.localtime': <module 'babel.localtime' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/localtime/__init__.pyc'>, 'distutils.util': <module 'distutils.util' from '/usr/lib/python2.7/distutils/util.pyc'>, 'pygments.filter': <module 'pygments.filter' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/filter.pyc'>, '_LWPCookieJar': <module '_LWPCookieJar' from '/usr/lib/python2.7/_LWPCookieJar.pyc'>, 'docutils.utils.math.tex2mathml_extern': <module 'docutils.utils.math.tex2mathml_extern' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/tex2mathml_extern.pyc'>, 'sphinx.transforms.docutils': None, 'requests.packages.urllib3.packages': <module 'requests.packages.urllib3.packages' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/packages/__init__.pyc'>, 'nose.nose': None, 'lago.logging': None, 'xml.sax.os': None, 'sphinx.builders.multiprocessing': None, 'email.feedparser': <module 'email.feedparser' from '/usr/lib/python2.7/email/feedparser.pyc'>, 'requests.codecs': None, 'sphinx.environment.os': None, 'atexit': <module 'atexit' from '/usr/lib/python2.7/atexit.pyc'>, '_csv': <module '_csv' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_csv.x86_64-linux-gnu.so'>, 'email.quopriMIME': <email.LazyImporter object>, 'alabaster.os': None, 'nose.selector': <module 'nose.selector' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/selector.pyc'>, 'xdg.os': None, 'docutils.utils.error_reporting': <module 'docutils.utils.error_reporting' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/error_reporting.pyc'>, 'sphinx.writers.latex': <module 'sphinx.writers.latex' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/writers/latex.pyc'>, 'babel.messages.difflib': None, '_hashlib': <module '_hashlib' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so'>, 'lago.config': <module 'lago.config' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/config.pyc'>, 'pygments.__future__': None, 'pytz.struct': None, 'nose.plugins.unittest': None, 'sphinx.ext.napoleon.collections': None, 'jinja2.functools': None, 'paramiko': <sphinx.ext.autodoc._MockModule object>, 'nose.logging': None, 'babel': <module 'babel' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/__init__.pyc'>, 'nose.config': <module 'nose.config' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/config.pyc'>, 'encodings.codecs': None, 'sphinx.pycode.pgen2.sphinx': None, 'docutils.parsers.rst.directives.codecs': None, 'sphinx.util.PIL': None, 'lago.lockfile': None, 'lago.dirlock': <module 'lago.dirlock' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/dirlock.pyc'>, '_ssl': <module '_ssl' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so'>, 'docutils.transforms.os': None, 'docutils._compat': <module 'docutils._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/_compat.pyc'>, '_io': <module '_io' (built-in)>, 'sphinx.search.six': None, 'docutils.utils.math.sys': None, 'sphinx.domains.python': <module 'sphinx.domains.python' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/python.pyc'>, 'sphinx.websupport.search': <module 'sphinx.websupport.search' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/websupport/search/__init__.pyc'>, 'sphinx.util.imghdr': None, 'email.iterators': <module 'email.iterators' from '/usr/lib/python2.7/email/iterators.pyc'>, 'unittest.types': None, 'sphinx.directives.patches': <module 'sphinx.directives.patches' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/directives/patches.pyc'>, 'lago.subprocess': None, 'importlib': <module 'importlib' from '/usr/lib/python2.7/importlib/__init__.pyc'>, 'requests.sessions': <module 'requests.sessions' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/sessions.pyc'>, 'babel.messages.catalog': <module 'babel.messages.catalog' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/catalog.pyc'>, 'sphinx.builders.requests': None, 'sphinx.domains.std': <module 'sphinx.domains.std' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/domains/std.pyc'>, 'docutils.writers.html4css1.os': None, 'logging.thread': None, 'docutils.parsers.rst.directives.sys': None, 'sphinx.util.re': None, 'xdg': <module 'xdg' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/xdg/__init__.pyc'>, 'ovirtlago.datetime': None, 'setuptools.functools': None, 'alabaster': <module 'alabaster' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/alabaster/__init__.pyc'>, 'sphinx.transforms.os': None, 'distutils.cmd': <module 'distutils.cmd' from '/usr/lib/python2.7/distutils/cmd.pyc'>, 'docutils.transforms.time': None, 'sphinx.pycode.pgen2.logging': None, 'distutils.re': None, 'lago_template_repo.logging': None, 'pygments.lexer': <module 'pygments.lexer' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexer.pyc'>, 'cookielib': <module 'cookielib' from '/usr/lib/python2.7/cookielib.pyc'>, 'sphinx.util.i18n': <module 'sphinx.util.i18n' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/util/i18n.pyc'>, 'sphinx.pycode.six': None, 'jinja2.UserDict': None, 'bisect': <module 'bisect' from '/usr/lib/python2.7/bisect.pyc'>, 'unittest.runner': <module 'unittest.runner' from '/usr/lib/python2.7/unittest/runner.pyc'>, 'nose.__future__': None, 'babel.localtime.time': None, 'readthedocs_ext.comments.__future__': None, 'ovirtlago.cmd': <module 'ovirtlago.cmd' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/cmd.pyc'>, 'sphinx.builders.codecs': None, 'babel.cPickle': None, 'setuptools.os': None, 'requests.auth': <module 'requests.auth' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/auth.pyc'>, 'babel.localtime.sys': None, 'requests.packages.urllib3.util.select': None, 'sphinx.search.sphinx': None, 'sphinx.builders.zlib': None, 'docutils.writers.os': None, 'sphinx.ext.napoleon.docstring': <module 'sphinx.ext.napoleon.docstring' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/napoleon/docstring.pyc'>, 'sphinx.ext.doctest': <module 'sphinx.ext.doctest' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/ext/doctest.pyc'>, 'pygments.plugin': <module 'pygments.plugin' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/plugin.pyc'>, 'docutils.writers.PIL': None, 'sphinx.util.__future__': None, 'jinja2.sets': None, 'itertools': <module 'itertools' (built-in)>, 'lago.plugins.operator': None, 'docutils.transforms.docutils': None, 'PIL.__future__': None, 'sphinx.ext.napoleon.inspect': None, 'nilsimsa.sys': None, 'sphinx.environment.managers.string': None, 'setuptools.depends': <module 'setuptools.depends' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/depends.pyc'>, 'xml.parsers': <module 'xml.parsers' from '/usr/lib/python2.7/xml/parsers/__init__.pyc'>, 'pygments': <module 'pygments' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/__init__.pyc'>, 'nose.util': <module 'nose.util' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/util.pyc'>, 'ovirtlago.threading': None, 'email.base64MIME': <email.LazyImporter object>, 'nose.re': None, 'json': <module 'json' from '/usr/lib/python2.7/json/__init__.pyc'>, 'sphinx.ext.codecs': None, 'babel.localtime.pytz': None, 'babel.warnings': None, 'docutils.parsers.rst': <module 'docutils.parsers.rst' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/parsers/rst/__init__.pyc'>, 'docutils.warnings': None, 'email.utils': <module 'email.utils' from '/usr/lib/python2.7/email/utils.pyc'>, 'docutils.nodes': <module 'docutils.nodes' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/nodes.pyc'>, 'docutils.os': None, 'email.email': None, 'xml.etree.re': None, 'sphinx.pycode.pgen2.__future__': None, 'sphinx.builders.manpage': <module 'sphinx.builders.manpage' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/builders/manpage.pyc'>, 'multiprocessing.weakref': None, 'pyexpat': <module 'pyexpat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so'>, 'distutils.distutils': None, 'pygments.lexers.javascript': <module 'pygments.lexers.javascript' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/lexers/javascript.pyc'>, 'site': <module 'site' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/site.pyc'>, 'PIL.os': None, 'readthedocs_ext.comments.collections': None, 'lago.functools': None, 'distutils.opcode': None, 'lago.traceback': None, 'email.binascii': None, 'nose.tools.re': None, 'sphinx.domains.six': None, 'sphinx.builders.shutil': None, 'sphinx.builders.__future__': None, 'libvirt': <sphinx.ext.autodoc._MockModule object>, 'lago.copy': None, 'email.cStringIO': None, 'lago.tty': None, 'pygments.formatters.__future__': None, 'difflib': <module 'difflib' from '/usr/lib/python2.7/difflib.pyc'>, 'distutils.errors': <module 'distutils.errors' from '/usr/lib/python2.7/distutils/errors.pyc'>, 'unittest.warnings': None, 'sets': <module 'sets' from '/usr/lib/python2.7/sets.pyc'>, 'logging.logging': None, 'nose.case': <module 'nose.case' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/case.pyc'>, 'xml.sax.urlparse': None, 'pytz.threading': None, 'pkg_resources.extern.packaging': <module 'pkg_resources._vendor.packaging' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.pyc'>, 'six.moves': <module 'six.moves' (built-in)>, 'sphinx.environment.codecs': None, 'babel.messages.mofile': <module 'babel.messages.mofile' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/babel/messages/mofile.pyc'>, 'logging.config': <module 'logging.config' from '/usr/lib/python2.7/logging/config.pyc'>, 'docutils.utils.math.tex2unichar': <module 'docutils.utils.math.tex2unichar' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/utils/math/tex2unichar.pyc'>, 'requests.sys': None, 'pkg_resources.extern.sys': None, 'nose.plugins.cStringIO': None, 'distutils.subprocess': None, 'sphinx.pycode.pgen2.driver': <module 'sphinx.pycode.pgen2.driver' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/driver.pyc'>, 'requests.packages.urllib3.response': <module 'requests.packages.urllib3.response' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/response.pyc'>, 'pygments.unistring': <module 'pygments.unistring' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/unistring.pyc'>, 'distutils.log': <module 'distutils.log' from '/usr/lib/python2.7/distutils/log.pyc'>, 'pygments.lexers.types': None, 'sphinx.environment.managers.indexentries': <module 'sphinx.environment.managers.indexentries' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/environment/managers/indexentries.pyc'>, 'lago.templates': <module 'lago.templates' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/templates.pyc'>, 'jinja2._compat': <module 'jinja2._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/jinja2/_compat.pyc'>, 'lago.abc': None, 'docutils.writers.latex2e.time': None, 'lago.providers': <module 'lago.providers' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/providers/__init__.pyc'>, 'docutils.transforms.references': <module 'docutils.transforms.references' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/transforms/references.pyc'>, 'readthedocs_ext.comments.requests': None, 'pygments.codecs': None, 'pygments.style': <module 'pygments.style' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/style.pyc'>, 'xmltodict': <sphinx.ext.autodoc._MockModule object>, '_multiprocessing': <module '_multiprocessing' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/lib-dynload/_multiprocessing.x86_64-linux-gnu.so'>, 'ovirtsdk.infrastructure.errors.RequestError': <sphinx.ext.autodoc._MockModule object>, 'sphinx.transforms.i18n': <module 'sphinx.transforms.i18n' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/transforms/i18n.pyc'>, 'jinja2.stat': None, 'lago.providers.libvirt.pwd': None, 'lago.plugins.functools': None, 'sphinx.environment.managers.sphinx': None, 'enum': <sphinx.ext.autodoc._MockModule object>, 'lago.plugins.service': <module 'lago.plugins.service' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/plugins/service.pyc'>, 'logging.sys': None, 'sphinx.traceback': None, 'requests.cookies': <module 'requests.cookies' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/cookies.pyc'>, '_functools': <module '_functools' (built-in)>, 'setuptools.fnmatch': None, 'socket': <module 'socket' from '/usr/lib/python2.7/socket.pyc'>, 'sphinx.locale': <module 'sphinx.locale' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/locale/__init__.pyc'>, 'netrc': <module 'netrc' from '/usr/lib/python2.7/netrc.pyc'>, 'sphinx.websupport.sys': None, 'sphinx_rtd_theme.os': None, 'sphinx.util.warnings': None, 'babel.decimal': None, 'sphinx.util.cgi': None, 'sphinx.writers.sys': None, '__builtin__': <module '__builtin__' (built-in)>, 'setuptools.warnings': None, 'docutils.readers.docutils': None, 'xml.sax.xmlreader': <module 'xml.sax.xmlreader' from '/usr/lib/python2.7/xml/sax/xmlreader.pyc'>, 'ctypes.errno': None, 'json.struct': None, 'sphinx.util.time': None, 'ovirtlago.os': None, 'pygments.token': <module 'pygments.token' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/pygments/token.pyc'>, 'sphinx.highlighting': <module 'sphinx.highlighting' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/highlighting.pyc'>, 'multiprocessing.threading': None, 'pytz.sys': None, 'distutils.stat': None, 'lago_template_repo.collections': None, 'sphinx.os': None, 'setuptools.py26compat': <module 'setuptools.py26compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/setuptools/py26compat.pyc'>, 'logging.time': None, 'distutils.extension': <module 'distutils.extension' from '/usr/lib/python2.7/distutils/extension.pyc'>, 'sphinx.environment.sys': None, 'certifi.os': None, 'logging.warnings': None, 'nose.exc': <module 'nose.exc' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/nose/exc.pyc'>, 'jinja2.re': None, 'pygments.re': None, 'markupsafe._compat': <module 'markupsafe._compat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/markupsafe/_compat.pyc'>, 'sphinx.errors': <module 'sphinx.errors' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/errors.pyc'>, 'ovirtlago.prefix': <module 'ovirtlago.prefix' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/ovirtlago/prefix.pyc'>, 'contextlib': <module 'contextlib' from '/usr/lib/python2.7/contextlib.pyc'>, 'requests.packages.urllib3.packages.six.moves.urllib': <module 'requests.packages.urllib3.packages.six.moves.urllib' (built-in)>, 'babel.datetime': None, 'getopt': <module 'getopt' from '/usr/lib/python2.7/getopt.pyc'>, 'docutils.readers.doctree': <module 'docutils.readers.doctree' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/docutils/readers/doctree.pyc'>, 'stat': <module 'stat' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/lib/python2.7/stat.pyc'>, 'requests.packages.urllib3.util.connection': <module 'requests.packages.urllib3.util.connection' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/requests/packages/urllib3/util/connection.pyc'>, 'distutils.config': <module 'distutils.config' from '/usr/lib/python2.7/distutils/config.pyc'>, 'email.Encoders': <email.LazyImporter object>, 'lago.constants': <module 'lago.constants' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/checkouts/0.38/lago/constants.pyc'>, 'pytz.gettext': None, 'sphinx': <module 'sphinx' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/sphinx/__init__.pyc'>, 'sphinx.util.fcntl': None, 'encodings.unicodedata': None, 'readthedocs_ext.comments': <module 'readthedocs_ext.comments' from '/home/docs/checkouts/readthedocs.org/user_builds/lago/envs/0.38/local/lib/python2.7/site-packages/readthedocs_ext/comments/__init__.pyc'>, 'pkg_resources._vendor.types': None, 'nose.tools.time': None})[source]¶
ovirtlago.virt module¶
-
class
ovirtlago.virt.
EngineVM
(*args, **kwargs)[source]¶ Bases:
lago.vm.DefaultVM
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
ovirtlago.virt.
HEHostVM
(env, spec)[source]¶ Bases:
ovirtlago.virt.HostVM
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
ovirtlago.virt.
HostVM
(env, spec)[source]¶ Bases:
lago.vm.DefaultVM
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
ovirtlago.virt.
NodeVM
(env, spec)[source]¶ Bases:
lago.vm.DefaultVM
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 29¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
-
class
ovirtlago.virt.
OvirtVirtEnv
(prefix, vm_specs, net_spec)[source]¶ Bases:
lago.virt.VirtEnv
-
assert_engine_alive
(timeout=120)[source]¶ Assert service ‘ovirt-engine’ reports running on the engine VM
Parameters: timeout (int) – timeout Returns: None Raises: AssertionError
– if ovirt-engine is not reported running after the given timeout, or ssh is unreachable.
-
assert_vdsm_alive
(timeout=120)[source]¶ Assert service ‘vdsmd’ reports running on all vdsm hosts
Parameters: timeout (int) – timeout Returns: None Raises: AssertionError
– if vdsmd is not reported running after the given timeout, or ssh is unreachable.
-
get_ovirt_cpu_family
(host=None)[source]¶ Get a suitable string for oVirt Cluster CPU. If
host
is None, it will use a random host, if no hosts are available it will use the Engine VM for detection. The detection is done by getting the VM host CPU model and vendor, from Lago, which in its turn is based on what was configured in the LagoInitFile. The detected model and vendor are then compared against the definitions in data/ovirt-cpu-map.yaml or against a custom file, ifovirt-cpu-map
parameter was defined in the host’s metadata section.Parameters: host (lago.vm.DefaultVM) – VM CPU/vendor to use for detection Returns: oVirt CPU Cluster string Return type: str Raises: RuntimeError
– If unsupported cpu vendor or model is detected
-
Releases¶
Release process¶
Versioning¶
For lago we use a similar approach to semantic versioning, that is:
X.Y.Z
For example:
0.1.0
1.2.123
2.0.0
2.0.1
Where:
Z
changes for each patch (number of patches sinceX.Y
tag)Y
changes from time to time, with milestones (arbitrary bump), only for backwards compatible changesX
changes if it’s a non-backwards compatible change or arbitrarily (we don’t likeY
getting too high, or big milestone reached, ...)
The source tree has tags with the X.Y
versions, that’s where the packaging
process gets them from.
On each X
or Y
change a new tag is created.
For now we have only one branch (master) and we will try to keep it that way as
long as possible, if at some point we have to support old versions, then we
will create a branch for each X
version in the form:
vX
For example:
v0
v1
There’s a helper script to resolve the current version, based on the last tag and the compatibility breaking commits since then, to get the version for the current repo run:
$ scripts/version_manager.py . version
RPM Versioning¶
The rpm versions differ from the generic version in that they have the
-1
suffix, where the -1
is the release for that rpm (usually will
never change, only when repackaging without any code change, something that is
not so easy for us but if there’s any external packagers is helpful for them)
Repository layout¶
Tree schema of the repository:
lago
├── stable <-- subdirs for each major version to avoid accidental
│ │ non-backwards compatible ugrade
│ │
│ ├── 0.0 <-- Contains any 0.* release for lago
│ │ ├── ChangeLog_0.0.txt
│ │ ├── rpm
│ │ │ ├── el6
│ │ │ ├── el7
│ │ │ ├── fc22
│ │ │ └── fc23
│ │ └── sources
│ ├── 1.0
│ │ ├── ChangeLog_1.0.txt
│ │ ├── rpm
│ │ │ ├── el6
│ │ │ ├── el7
│ │ │ ├── fc22
│ │ │ └── fc23
│ │ └── sources
│ └── 2.0
│ ├── ChangeLog_2.0.txt
│ ├── rpm
│ │ ├── el6
│ │ ├── el7
│ │ ├── fc22
│ │ └── fc23
│ └── sources
└── unstable <-- Multiple subdirs are needed only if branching
├── 0.0 <-- Contains 0.* builds that might or might not have
│ │ been released
│ ├── latest <--- keeps the latest build from merged, static
│ │ url
│ ├── snapshot-lago_0.0_pipeline_1
│ ├── snapshot-lago_0.0_pipeline_2
│ │ ^ contains the rpms created on the pipeline build
│ │ number 2 for the 0.0 version, this is needed to
│ │ ease the automated testing of the rpms
│ │
│ └── ... <-- this is cleaned up from time to time to avoid
│ using too much space
├── 1.0
│ ├── latest
│ ├── snapshot-lago_1.0_pipeline_1
│ ├── snapshot-lago_pipeline_2
│ └── ...
└── 2.0
├── latest
├── snapshot-lago_2.0_pipeline_1
├── snapshot-lago_2.0_pipeline_2
└── ...
Promotion of artifacts to stable, aka. releasing¶
The goal is to have an automated set of tests, that check in depth lago, and run them in a timely fashion, and if passed, deploy to stable. As right now that’s not yet possible, so for now the tests and deploy is done manually.
The promotion of the artifacts is done in these cases:
- New major version bump (
X+1.0
, for example1.0 -> 2.0
)- New minor version bump (
X.Y+1
, for exampyre1.1 -> 1.2
)- If it passed certain time since the last
X
orY
version bumps (X.Y.Z+n
, for example1.0.1 -> 1.0.2
)- If there are blocking/important bugfixes (
X.Y.Z+n
)- If there are important new features (
X.Y+1
orX.Y.Z+n
)
How to mark a major version¶
Whenever there’s a commit that breaks the backwards compatibility, you should add to it the pseudo-header:
Sem-Ver: api-breaking
And that will force a major version bump for any package built from it, that is done so in the moment when you submit the commit in gerrit, the packages that are build from it have the correct version.
After that, make sure that you tag that commit too, so it will be easy to look for it in the future.
The release procedure on the maintainer side¶
Select the snapshot repo you want to release
- Test the rpms, for now we only have the tests from projects that use it:
- Run all the ovirt tests on it, make sure it does not break anything, if there are issues -> open bug
- Run vdsm functional tests, make sure it does not break anything, if
- there are issues -> open bug
- On non-major version bump
X.Y+1
orX.Y.Z+n
- Create a changelog since the base of the tag and keep it aside
- On non-major version bump
- On Major version bump
X+1.0
- Create a changelog since the previous
.0
tag (X.0
) and keep - it aside
- Create a changelog since the previous
- On Major version bump
Deploy the rpms from snapshot to dest repo and copy the
ChangeLog
from the tarball toChangeLog_X.0.txt
in the base of thestable/X.0/
dirSend email to lago-devel with the announcement and the changelog since the previous tag that you kept aside, feel free to change the body to your liking:
Subject: [day-month-year] New lago release - X.Y.Z Hi everyone! There's a new lago release with version X.Y.Z ready for you to upgrade! Here are the changes: <CHANGELOG HERE> Enjoy!
Changelog¶
Here you can find the full changelog for this version