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" ...@@ -25,7 +25,8 @@ version_added: "0.2"
options: options:
name: name:
description: 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 required: true
default: null default: null
aliases: [] aliases: []
...@@ -44,6 +45,11 @@ options: ...@@ -44,6 +45,11 @@ options:
choices: ["create","status", "start", "stop", "pause", "unpause", choices: ["create","status", "start", "stop", "pause", "unpause",
"shutdown", "undefine", "destroy", "get_xml", "autostart", "shutdown", "undefine", "destroy", "get_xml", "autostart",
"freemem", "list_vms", "info", "nodeinfo", "virttype"] "freemem", "list_vms", "info", "nodeinfo", "virttype"]
uri:
description:
- libvirt connection uri
required: false
defaults: qemu:///
examples: examples:
- code: "virt: name=alpha state=running" - code: "virt: name=alpha state=running"
description: "Example from Ansible Playbooks" description: "Example from Ansible Playbooks"
...@@ -51,6 +57,7 @@ examples: ...@@ -51,6 +57,7 @@ examples:
description: "Example guest management with C(/usr/bin/ansible)" description: "Example guest management with C(/usr/bin/ansible)"
- code: ansible host -m virt -a "name=alpha command=get_xml" - 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" 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" ] requirements: [ "libvirt" ]
author: Michael DeHaan, Seth Vidal author: Michael DeHaan, Seth Vidal
''' '''
...@@ -86,7 +93,7 @@ VIRT_STATE_NAME_MAP = { ...@@ -86,7 +93,7 @@ VIRT_STATE_NAME_MAP = {
class LibvirtConnection(object): class LibvirtConnection(object):
def __init__(self): def __init__(self, uri):
cmd = subprocess.Popen("uname -r", shell=True, stdout=subprocess.PIPE, cmd = subprocess.Popen("uname -r", shell=True, stdout=subprocess.PIPE,
close_fds=True) close_fds=True)
...@@ -95,7 +102,7 @@ class LibvirtConnection(object): ...@@ -95,7 +102,7 @@ class LibvirtConnection(object):
if output.find("xen") != -1: if output.find("xen") != -1:
conn = libvirt.open(None) conn = libvirt.open(None)
else: else:
conn = libvirt.open("qemu:///system") conn = libvirt.open(uri)
if not conn: if not conn:
raise Exception("hypervisor connection failure") raise Exception("hypervisor connection failure")
...@@ -192,8 +199,11 @@ class LibvirtConnection(object): ...@@ -192,8 +199,11 @@ class LibvirtConnection(object):
class Virt(object): class Virt(object):
def __init__(self, uri):
self.uri = uri
def __get_conn(self): def __get_conn(self):
self.conn = LibvirtConnection() self.conn = LibvirtConnection(self.uri)
return self.conn return self.conn
def get_vm(self, vmid): def get_vm(self, vmid):
...@@ -352,8 +362,9 @@ def core(module): ...@@ -352,8 +362,9 @@ def core(module):
state = module.params.get('state', None) state = module.params.get('state', None)
guest = module.params.get('name', None) guest = module.params.get('name', None)
command = module.params.get('command', None) command = module.params.get('command', None)
uri = module.params.get('uri', None)
v = Virt() v = Virt(uri)
res = {} res = {}
...@@ -401,6 +412,7 @@ def main(): ...@@ -401,6 +412,7 @@ def main():
name = dict(aliases=['guest']), name = dict(aliases=['guest']),
state = dict(choices=['running', 'shutdown']), state = dict(choices=['running', 'shutdown']),
command = dict(choices=ALL_COMMANDS), command = dict(choices=ALL_COMMANDS),
uri = dict(default='qemu:///system'),
)) ))
rc = VIRT_SUCCESS 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