From b257978c5f2767527931a62591ba65a3b4337965 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Wed, 26 May 2021 18:09:51 -0700 Subject: add LIBVIRT:{INSTALLED,DEFAULT-NETWORK-{AUTO,}STARTED} Signed-off-by: Sean Whitton --- src/property/libvirt.lisp | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/property/libvirt.lisp (limited to 'src/property/libvirt.lisp') diff --git a/src/property/libvirt.lisp b/src/property/libvirt.lisp new file mode 100644 index 0000000..5c3c2b6 --- /dev/null +++ b/src/property/libvirt.lisp @@ -0,0 +1,59 @@ +;;; Consfigurator -- Lisp declarative configuration management system + +;;; Copyright (C) 2018, 2021 Sean Whitton + +;;; This file is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3, or (at your option) +;;; any later version. + +;;; This file is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. + +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see . + +(in-package :consfigurator.property.libvirt) +(named-readtables:in-readtable :consfigurator) + +(defproplist installed :posix () + "Install basic libvirt components." + (:desc "libvirt installed") + (os:etypecase + (debianlike (apt:installed "libvirt-clients" "virtinst" + "libvirt-daemon" "libvirt-daemon-system")))) + +(defprop %default-network-started :posix () + (:check + (member "default" (mapcar #'car (virsh-get-columns "net-list")) + :test #'string=)) + (:apply + (mrun "virsh" "net-start" "default"))) + +(defprop %default-network-autostarted :posix () + (:check + (remote-exists-p "/etc/libvirt/qemu/networks/autostart/default.xml")) + (:apply + (mrun "virsh" "net-autostart" "default"))) + +(defproplist default-network-started :posix () + "Ensure that the default libvirt network is started." + (:desc "libvirt's default network started") + (installed) + (%default-network-started)) + +(defproplist default-network-autostarted :posix () + "Ensure that the default libvirt network is set to autostart, and start it. +On Debian, it is not started by default after installation of libvirt." + (installed) + (%default-network-autostarted) + (%default-network-started)) + +(defun virsh-get-columns (&rest arguments) + "Run a virsh command that is expected to yield tabular output, with the given +list of ARGUMENTS, and return the rows." + (mapcar (lambda (row) + (delete "" (split-string row) :test #'string=)) + (cddr (nbutlast (runlines "virsh" arguments))))) -- cgit v1.2.3