Commit c5c942c6 by Victor Castell

Enable virt module to work with different libvirt connection uris. This allow to…

Enable virt module to work with different libvirt connection uris. This allow to work with all libvirt supported VMs.
parent 917704ee
......@@ -25,7 +25,8 @@ version_added: "0.2"
options:
name:
description:
- name of the guest VM being managed
- name of the guest VM being managed. Note that VM must be previously
defined with xml.
required: true
default: null
aliases: []
......@@ -44,6 +45,11 @@ options:
choices: ["create","status", "start", "stop", "pause", "unpause",
"shutdown", "undefine", "destroy", "get_xml", "autostart",
"freemem", "list_vms", "info", "nodeinfo", "virttype"]
uri:
description:
- libvirt connection uri
required: false
defaults: qemu:///
examples:
- code: "virt: name=alpha state=running"
description: "Example from Ansible Playbooks"
......@@ -51,6 +57,7 @@ examples:
description: "Example guest management with C(/usr/bin/ansible)"
- code: ansible host -m virt -a "name=alpha command=get_xml"
description: "Use C(/usr/bin/ansible) to get the xml of the guest machine alpha"
- code: ansible host -m virt -a "name=alpha command=create uri=lxc:///"
requirements: [ "libvirt" ]
author: Michael DeHaan, Seth Vidal
'''
......@@ -86,7 +93,7 @@ VIRT_STATE_NAME_MAP = {
class LibvirtConnection(object):
def __init__(self):
def __init__(self, uri):
cmd = subprocess.Popen("uname -r", shell=True, stdout=subprocess.PIPE,
close_fds=True)
......@@ -95,7 +102,7 @@ class LibvirtConnection(object):
if output.find("xen") != -1:
conn = libvirt.open(None)
else:
conn = libvirt.open("qemu:///system")
conn = libvirt.open(uri)
if not conn:
raise Exception("hypervisor connection failure")
......@@ -192,8 +199,11 @@ class LibvirtConnection(object):
class Virt(object):
def __init__(self, uri):
self.uri = uri
def __get_conn(self):
self.conn = LibvirtConnection()
self.conn = LibvirtConnection(self.uri)
return self.conn
def get_vm(self, vmid):
......@@ -352,8 +362,9 @@ def core(module):
state = module.params.get('state', None)
guest = module.params.get('name', None)
command = module.params.get('command', None)
uri = module.params.get('uri', None)
v = Virt()
v = Virt(uri)
res = {}
......@@ -401,6 +412,7 @@ def main():
name = dict(aliases=['guest']),
state = dict(choices=['running', 'shutdown']),
command = dict(choices=ALL_COMMANDS),
uri = dict(default='qemu:///system'),
))
rc = VIRT_SUCCESS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment