From 5d5a3a39efe043dd49897f087528d6e03e5893e5 Mon Sep 17 00:00:00 2001 From: Michael Scherer Date: Tue, 29 Mar 2011 22:47:59 +0000 Subject: add a type to be able to manage storage directory for libvirtd --- modules/libvirtd/files/storage_add.py | 28 ++++++++++++++++++++++++++++ modules/libvirtd/manifests/init.pp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 modules/libvirtd/files/storage_add.py (limited to 'modules') diff --git a/modules/libvirtd/files/storage_add.py b/modules/libvirtd/files/storage_add.py new file mode 100644 index 00000000..88475ec6 --- /dev/null +++ b/modules/libvirtd/files/storage_add.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +import libvirt +import sys + +name = sys.argv[1] +path = sys.argv[2] + +storage_xml = """ + + %s + 0 + 0 + 0 + + + + %s + + 0700 + -1 + -1 + + +""" % ( name, path ) + +c=libvirt.open("qemu:///system") +c.storagePoolCreateXML(storage_xml,0) + diff --git a/modules/libvirtd/manifests/init.pp b/modules/libvirtd/manifests/init.pp index da04bbfa..193099c9 100644 --- a/modules/libvirtd/manifests/init.pp +++ b/modules/libvirtd/manifests/init.pp @@ -11,6 +11,23 @@ class libvirtd { ensure => running, path => "/etc/init.d/libvirtd", } + + #TODO remove once libvirt package is fixed to manage the directory + file { "/etc/libvirt/storage": + ensure => directory, + } + + file { "/etc/libvirt/storage/autostart": + ensure => directory, + } + + file { "/usr/local/bin/storage_add.py": + ensure => present, + owner => root, + group => root, + mode => 755, + source => "puppet:///libvirtd/storage_add.py", + } } class kvm inherits base { @@ -33,4 +50,20 @@ class libvirtd { content => template("libvirtd/50-template-libvirt-remote-access.pkla"), } } + + define storage($path, $autostart = true) { + include libvirtd::base + + exec { "/usr/local/bin/storage_add.py $name $path": + creates => "/etc/libvirt/storage/$name.xml", + require => File['/usr/local/bin/storage_add.py'], + } + + file { "/etc/libvirt/storage/autostart/$name.xml": + ensure => $autostart ? { + true => "/etc/libvirt/storage/$name.xml", + false => "absent" + } + } + } } -- cgit v1.2.1