Signed-off-by: Katerina Koukiou <kkoukiou(a)redhat.com>
---
data/org.libvirt.Domain.xml | 5 +++--
src/domain.c | 22 +++++++++++++++++++++-
test/test_domain.py | 7 +++++++
3 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml
index 78378bb..b8ee5b8 100644
--- a/data/org.libvirt.Domain.xml
+++ b/data/org.libvirt.Domain.xml
@@ -7,9 +7,10 @@
<annotation name="org.gtk.GDBus.DocString"
value="See
https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive&qu...
</property>
- <property name="Autostart" type="b"
access="read">
+ <property name="Autostart" type="b"
access="readwrite">
<annotation name="org.gtk.GDBus.DocString"
- value="See
https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostar...
+ value="See
https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart and
+
https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetAutostar...
</property>
<property name="Id" type="u" access="read">
<annotation name="org.gtk.GDBus.DocString"
diff --git a/src/domain.c b/src/domain.c
index 14f07fc..82682ef 100644
--- a/src/domain.c
+++ b/src/domain.c
@@ -218,6 +218,26 @@ virtDBusDomainGetUUID(const gchar *objectPath,
*value = g_variant_new("s", uuid);
}
+static void
+virtDBusDomainSetAutostart(GVariant *value,
+ const gchar *objectPath,
+ gpointer userData,
+ GError **error)
+{
+ virtDBusConnect *connect = userData;
+ g_autoptr(virDomain) domain = NULL;
+ gboolean autostart;
+
+ g_variant_get(value, "b", &autostart);
+
+ domain = virtDBusDomainGetVirDomain(connect, objectPath, error);
+ if (!domain)
+ return;
+
+ if (virDomainSetAutostart(domain, autostart) < 0)
+ return virtDBusUtilSetLastVirtError(error);
+}
+
static void
virtDBusDomainCreate(GVariant *inArgs,
GUnixFDList *inFDs G_GNUC_UNUSED,
@@ -492,7 +512,7 @@ virtDBusDomainUndefine(GVariant *inArgs,
static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = {
{ "Active", virtDBusDomainGetActive, NULL },
- { "Autostart", virtDBusDomainGetAutostart, NULL },
+ { "Autostart", virtDBusDomainGetAutostart, virtDBusDomainSetAutostart },
{ "Id", virtDBusDomainGetId, NULL },
{ "Name", virtDBusDomainGetName, NULL },
{ "OSType", virtDBusDomainGetOsType, NULL },
diff --git a/test/test_domain.py b/test/test_domain.py
index 952bf59..7fa9aad 100755
--- a/test/test_domain.py
+++ b/test/test_domain.py
@@ -37,6 +37,13 @@ class TestDomain(libvirttest.BaseTestClass):
raise e
domain.Undefine(0)
+ def test_domain_autostart(self):
+ _, domain = self.domain()
+ autostart_expected = True
+ domain.Set('org.libvirt.Domain', 'Autostart', autostart_expected,
dbus_interface=dbus.PROPERTIES_IFACE)
+ autostart_current = domain.Get('org.libvirt.Domain', 'Autostart',
dbus_interface=dbus.PROPERTIES_IFACE)
+ assert autostart_current == dbus.Boolean(autostart_expected)
+
def test_resume(self):
def domain_resumed(path, _event):
assert isinstance(path, dbus.ObjectPath)
--
2.15.0