[libvirt] [dbus PATCH 00/22] StoragePool remains and Domain Events

Katerina Koukiou (22): Implement StoragePoolCreateXML method for Connect Interface Implement StoragePoolDefineXML method for Connect Interface events: Register VIR_STORAGE_POOL_EVENT_ID_REFRESH events: Register VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE events: Register VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE events: Register VIR_DOMAIN_EVENT_ID_BLOCK_JOB events: Register VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 events: Register VIR_DOMAIN_EVENT_ID_CONTROL_ERROR events: Register VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED events: Register VIR_DOMAIN_EVENT_ID_GRAPHICS events: Register VIR_DOMAIN_EVENT_ID_REBOOT events: Register VIR_DOMAIN_EVENT_ID_IO_ERROR events: Register VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON events: Register VIR_DOMAIN_EVENT_ID_JOB_COMPLETED events: Register VIR_DOMAIN_EVENT_ID_METADATA_CHANGE events: Register VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION events: Register VIR_DOMAIN_EVENT_ID_PMSUSPEND events: Register VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK events: Register VIR_DOMAIN_EVENT_ID_PMWAKEUP events: Register VIR_DOMAIN_EVENT_ID_RTC_CHANGE events: Register VIR_DOMAIN_EVENT_ID_TUNABLE events: Register VIR_DOMAIN_EVENT_ID_WATCHDOG data/org.libvirt.Connect.xml | 14 + data/org.libvirt.Domain.xml | 108 ++++++++ data/org.libvirt.StoragePool.xml | 4 + src/connect.c | 62 +++++ src/events.c | 549 +++++++++++++++++++++++++++++++++++++++ tests/test_connect.py | 48 ++++ tests/test_storage.py | 10 + 7 files changed, 795 insertions(+) -- 2.15.0

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Connect.xml | 7 +++++++ src/connect.c | 31 +++++++++++++++++++++++++++++++ tests/test_connect.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml index 243ef35..2f88d42 100644 --- a/data/org.libvirt.Connect.xml +++ b/data/org.libvirt.Connect.xml @@ -251,6 +251,13 @@ <arg name="usageID" type="s" direction="in"/> <arg name="secret" type="o" direction="out"/> </method> + <method name="StoragePoolCreateXML"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolCreateXML"/> + <arg name="xml" type="s" direction="in"/> + <arg name="flags" type="u" direction="in"/> + <arg name="storagePool" type="o" direction="out"/> + </method> <method name="StoragePoolLookupByName"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolLookupByName"/> diff --git a/src/connect.c b/src/connect.c index 0b33bc5..a6163d2 100644 --- a/src/connect.c +++ b/src/connect.c @@ -1276,6 +1276,36 @@ virtDBusConnectSecretLookupByUsage(GVariant *inArgs, *outArgs = g_variant_new("(o)", path); } +static void +virtDBusConnectStoragePoolCreateXML(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath G_GNUC_UNUSED, + gpointer userData, + GVariant **outArgs, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ + virtDBusConnect *connect = userData; + g_autoptr(virStoragePool) storagePool = NULL; + g_autofree gchar *path = NULL; + gchar *xml; + guint flags; + + g_variant_get(inArgs, "(&su)", &xml, &flags); + + if (!virtDBusConnectOpen(connect, error)) + return; + + storagePool = virStoragePoolCreateXML(connect->connection, xml, flags); + if (!storagePool) + return virtDBusUtilSetLastVirtError(error); + + path = virtDBusUtilBusPathForVirStoragePool(storagePool, + connect->storagePoolPath); + + *outArgs = g_variant_new("(o)", path); +} + static void virtDBusConnectStoragePoolLookupByName(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -1379,6 +1409,7 @@ static virtDBusGDBusMethodTable virtDBusConnectMethodTable[] = { { "SecretDefineXML", virtDBusConnectSecretDefineXML }, { "SecretLookupByUUID", virtDBusConnectSecretLookupByUUID }, { "SecretLookupByUsage", virtDBusConnectSecretLookupByUsage }, + { "StoragePoolCreateXML", virtDBusConnectStoragePoolCreateXML }, { "StoragePoolLookupByName", virtDBusConnectStoragePoolLookupByName }, { "StoragePoolLookupByUUID", virtDBusConnectStoragePoolLookupByUUID }, { 0 } diff --git a/tests/test_connect.py b/tests/test_connect.py index 8104a30..6e28b81 100755 --- a/tests/test_connect.py +++ b/tests/test_connect.py @@ -30,6 +30,24 @@ class TestConnect(libvirttest.BaseTestClass): </network> ''' + minimal_storage_pool_xml = ''' + <pool type='dir'> + <name>foo</name> + <uuid>35bb2ad9-388a-cdfe-461a-b8907f6e53fe</uuid> + <capacity>107374182400</capacity> + <allocation>0</allocation> + <available>107374182400</available> + <target> + <path>/foo</path> + <permissions> + <mode>0700</mode> + <owner>10736</owner> + <group>10736</group> + </permissions> + </target> + </pool> + ''' + def test_connect_domain_create_xml(self): def domain_started(path, event, detail): if event != libvirttest.DomainEvent.STARTED: @@ -190,6 +208,21 @@ class TestConnect(libvirttest.BaseTestClass): info = self.connect.NodeGetCPUMap(0) assert isinstance(info, dbus.Array) + def test_connect_storage_pool_create_xml(self): + def storage_pool_started(path, event, _detail): + if event != libvirttest.StoragePoolEvent.STARTED: + return + assert isinstance(path, dbus.ObjectPath) + self.loop.quit() + + self.connect.connect_to_signal('StoragePoolEvent', storage_pool_started) + + path = self.connect.StoragePoolCreateXML( + self.minimal_storage_pool_xml, 0) + assert isinstance(path, dbus.ObjectPath) + + self.main_loop() + @pytest.mark.parametrize("lookup_method_name,lookup_item", [ ("StoragePoolLookupByName", 'Name'), ("StoragePoolLookupByUUID", 'UUID'), -- 2.15.0

On Thu, May 10, 2018 at 07:25:53PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Connect.xml | 7 +++++++ src/connect.c | 31 +++++++++++++++++++++++++++++++ tests/test_connect.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+)
[...]
diff --git a/tests/test_connect.py b/tests/test_connect.py index 8104a30..6e28b81 100755 --- a/tests/test_connect.py +++ b/tests/test_connect.py @@ -30,6 +30,24 @@ class TestConnect(libvirttest.BaseTestClass): </network> '''
+ minimal_storage_pool_xml = ''' + <pool type='dir'> + <name>foo</name> + <uuid>35bb2ad9-388a-cdfe-461a-b8907f6e53fe</uuid> + <capacity>107374182400</capacity> + <allocation>0</allocation> + <available>107374182400</available>
capacity, allocation and available are not valid for storage pool creation.
+ <target> + <path>/foo</path> + <permissions> + <mode>0700</mode> + <owner>10736</owner> + <group>10736</group> + </permissions>
Since this supposed to be minimal XML I would remove permissions.
+ </target> + </pool> + ''' +
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Connect.xml | 7 +++++++ src/connect.c | 31 +++++++++++++++++++++++++++++++ tests/test_connect.py | 15 +++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml index 2f88d42..7b0a73e 100644 --- a/data/org.libvirt.Connect.xml +++ b/data/org.libvirt.Connect.xml @@ -258,6 +258,13 @@ <arg name="flags" type="u" direction="in"/> <arg name="storagePool" type="o" direction="out"/> </method> + <method name="StoragePoolDefineXML"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolDefineXML"/> + <arg name="xml" type="s" direction="in"/> + <arg name="flags" type="u" direction="in"/> + <arg name="storagePool" type="o" direction="out"/> + </method> <method name="StoragePoolLookupByName"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolLookupByName"/> diff --git a/src/connect.c b/src/connect.c index a6163d2..0ee532e 100644 --- a/src/connect.c +++ b/src/connect.c @@ -1306,6 +1306,36 @@ virtDBusConnectStoragePoolCreateXML(GVariant *inArgs, *outArgs = g_variant_new("(o)", path); } +static void +virtDBusConnectStoragePoolDefineXML(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath G_GNUC_UNUSED, + gpointer userData, + GVariant **outArgs, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ + virtDBusConnect *connect = userData; + g_autoptr(virStoragePool) storagePool = NULL; + g_autofree gchar *path = NULL; + gchar *xml; + guint flags; + + g_variant_get(inArgs, "(&su)", &xml, &flags); + + if (!virtDBusConnectOpen(connect, error)) + return; + + storagePool = virStoragePoolDefineXML(connect->connection, xml, flags); + if (!storagePool) + return virtDBusUtilSetLastVirtError(error); + + path = virtDBusUtilBusPathForVirStoragePool(storagePool, + connect->storagePoolPath); + + *outArgs = g_variant_new("(o)", path); +} + static void virtDBusConnectStoragePoolLookupByName(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -1410,6 +1440,7 @@ static virtDBusGDBusMethodTable virtDBusConnectMethodTable[] = { { "SecretLookupByUUID", virtDBusConnectSecretLookupByUUID }, { "SecretLookupByUsage", virtDBusConnectSecretLookupByUsage }, { "StoragePoolCreateXML", virtDBusConnectStoragePoolCreateXML }, + { "StoragePoolDefineXML", virtDBusConnectStoragePoolDefineXML }, { "StoragePoolLookupByName", virtDBusConnectStoragePoolLookupByName }, { "StoragePoolLookupByUUID", virtDBusConnectStoragePoolLookupByUUID }, { 0 } diff --git a/tests/test_connect.py b/tests/test_connect.py index 6e28b81..4becf4e 100755 --- a/tests/test_connect.py +++ b/tests/test_connect.py @@ -223,6 +223,21 @@ class TestConnect(libvirttest.BaseTestClass): self.main_loop() + def test_connect_storage_pool_define_xml(self): + def storage_pool_defined(path, event, _detail): + if event != libvirttest.StoragePoolEvent.DEFINED: + return + assert isinstance(path, dbus.ObjectPath) + self.loop.quit() + + self.connect.connect_to_signal('StoragePoolEvent', storage_pool_defined) + + path = self.connect.StoragePoolDefineXML( + self.minimal_storage_pool_xml, 0) + assert isinstance(path, dbus.ObjectPath) + + self.main_loop() + @pytest.mark.parametrize("lookup_method_name,lookup_item", [ ("StoragePoolLookupByName", 'Name'), ("StoragePoolLookupByUUID", 'UUID'), -- 2.15.0

On Thu, May 10, 2018 at 07:25:54PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Connect.xml | 7 +++++++ src/connect.c | 31 +++++++++++++++++++++++++++++++ tests/test_connect.py | 15 +++++++++++++++ 3 files changed, 53 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.StoragePool.xml | 4 ++++ src/events.c | 27 +++++++++++++++++++++++++++ tests/test_storage.py | 10 ++++++++++ 3 files changed, 41 insertions(+) diff --git a/data/org.libvirt.StoragePool.xml b/data/org.libvirt.StoragePool.xml index f33ed38..01ab39d 100644 --- a/data/org.libvirt.StoragePool.xml +++ b/data/org.libvirt.StoragePool.xml @@ -66,5 +66,9 @@ <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolUndefine"/> </method> + <signal name="Refresh"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-storage.html#virConnectStoragePoolEventGenericCallback"/> + </signal> </interface> </node> diff --git a/src/events.c b/src/events.c index 53cd725..5880b1b 100644 --- a/src/events.c +++ b/src/events.c @@ -1,6 +1,7 @@ #include "domain.h" #include "events.h" #include "util.h" +#include "storagepool.h" #include <libvirt/libvirt.h> @@ -190,6 +191,28 @@ virtDBusEventsStoragePoolLifecycle(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsStoragePoolRefresh(virConnectPtr connection G_GNUC_UNUSED, + virStoragePoolPtr storagePool, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirStoragePool(storagePool, + connect->storagePoolPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_STORAGEPOOL_INTERFACE, + "Refresh", + NULL, + NULL); + + return 0; +} + static void virtDBusEventsRegisterDomainEvent(virtDBusConnect *connect, gint id, @@ -284,4 +307,8 @@ virtDBusEventsRegister(virtDBusConnect *connect) virtDBusEventsRegisterStoragePoolEvent(connect, VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE, VIR_STORAGE_POOL_EVENT_CALLBACK(virtDBusEventsStoragePoolLifecycle)); + + virtDBusEventsRegisterStoragePoolEvent(connect, + VIR_STORAGE_POOL_EVENT_ID_REFRESH, + VIR_STORAGE_POOL_EVENT_CALLBACK(virtDBusEventsStoragePoolRefresh)); } diff --git a/tests/test_storage.py b/tests/test_storage.py index d1d393f..b9e7090 100755 --- a/tests/test_storage.py +++ b/tests/test_storage.py @@ -108,6 +108,16 @@ class TestStoragePool(libvirttest.BaseTestClass): self.main_loop() + def test_storage_pool_refresh(self): + _, test_storage_pool = self.test_storage_pool() + interface_obj = dbus.Interface(test_storage_pool, + 'org.libvirt.StoragePool') + interface_obj.connect_to_signal('Refresh', + lambda: self.loop.quit()) + interface_obj.Refresh(0) + + self.main_loop() + if __name__ == '__main__': libvirttest.run() -- 2.15.0

On Thu, May 10, 2018 at 07:25:55PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.StoragePool.xml | 4 ++++ src/events.c | 27 +++++++++++++++++++++++++++ tests/test_storage.py | 10 ++++++++++ 3 files changed, 41 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 6 ++++++ src/events.c | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index bcd0779..61654a6 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -578,6 +578,12 @@ <arg name="xml" type="s" direction="in"/> <arg name="flags" type="u" direction="in"/> </method> + <signal name="AgentLifecycle"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventAgentLifecycleCallback"/> + <arg name="state" type="i"/> + <arg name="reason" type="i"/> + </signal> <signal name="DeviceAdded"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/events.c b/src/events.c index 5880b1b..350d084 100644 --- a/src/events.c +++ b/src/events.c @@ -5,6 +5,29 @@ #include <libvirt/libvirt.h> +static gint +virtDBusEventsDomainAgentLifecycle(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint state, + gint reason, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "AgentLifecycle", + g_variant_new("(ii)", state, reason), + NULL); + + return 0; +} + static gint virtDBusEventsDomainLifecycle(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -276,6 +299,10 @@ virtDBusEventsRegisterStoragePoolEvent(virtDBusConnect *connect, void virtDBusEventsRegister(virtDBusConnect *connect) { + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainAgentLifecycle)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:25:56PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 6 ++++++ src/events.c | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 61654a6..c119173 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -584,6 +584,11 @@ <arg name="state" type="i"/> <arg name="reason" type="i"/> </signal> + <signal name="BalloonChange"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventBalloonChangeCallback"/> + <arg name="actual" type="t"/> + </signal> <signal name="DeviceAdded"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/events.c b/src/events.c index 350d084..3f1a4ab 100644 --- a/src/events.c +++ b/src/events.c @@ -28,6 +28,28 @@ virtDBusEventsDomainAgentLifecycle(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainBalloonChange(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + guint64 actual, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "BalloonChange", + g_variant_new("(t)", actual), + NULL); + + return 0; +} + static gint virtDBusEventsDomainLifecycle(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -303,6 +325,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainAgentLifecycle)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBalloonChange)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:25:57PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index c119173..781ca03 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -589,6 +589,13 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventBalloonChangeCallback"/> <arg name="actual" type="t"/> </signal> + <signal name="BlockJob"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventBlockJobCallback"/> + <arg name="disk" type="s"/> + <arg name="type" type="i"/> + <arg name="status" type="i"/> + </signal> <signal name="DeviceAdded"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/events.c b/src/events.c index 3f1a4ab..d89756c 100644 --- a/src/events.c +++ b/src/events.c @@ -50,6 +50,30 @@ virtDBusEventsDomainBalloonChange(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainBlockJob(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gchar *disk, + gint type, + gint status, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "BlockJob", + g_variant_new("(sii)", disk, type, status), + NULL); + + return 0; +} + static gint virtDBusEventsDomainLifecycle(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -329,6 +353,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBalloonChange)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_BLOCK_JOB, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBlockJob)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:25:58PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+)
Even though I've listed this event as to implement, we should just skip the v1 of this event and use only v2 since v1 has some issues with disk name. So I would drop this patch. Pavel

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 781ca03..c49f5e8 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -596,6 +596,13 @@ <arg name="type" type="i"/> <arg name="status" type="i"/> </signal> + <signal name="BlockJob_2"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventBlockJobCallback"/> + <arg name="disk" type="s"/> + <arg name="type" type="i"/> + <arg name="status" type="i"/> + </signal> <signal name="DeviceAdded"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/events.c b/src/events.c index d89756c..10b2802 100644 --- a/src/events.c +++ b/src/events.c @@ -357,6 +357,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_BLOCK_JOB, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBlockJob)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBlockJob)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:25:59PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 4 ++++ 2 files changed, 11 insertions(+)
diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 781ca03..c49f5e8 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -596,6 +596,13 @@ <arg name="type" type="i"/> <arg name="status" type="i"/> </signal> + <signal name="BlockJob_2">
Since we will not use the v1 version let's name it "BlockJob"
+ <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventBlockJobCallback"/>
And document here something like "Callback was registered using VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2".
+ <arg name="disk" type="s"/> + <arg name="type" type="i"/> + <arg name="status" type="i"/> + </signal> <signal name="DeviceAdded"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/events.c b/src/events.c index d89756c..10b2802 100644 --- a/src/events.c +++ b/src/events.c @@ -357,6 +357,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_BLOCK_JOB, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBlockJob));
+ virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBlockJob)); +
This would not work because that function has hardcoded "BlockJob" signal. Pavel

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 4 ++++ src/events.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index c49f5e8..992fb11 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -603,6 +603,10 @@ <arg name="type" type="i"/> <arg name="status" type="i"/> </signal> + <signal name="ControlError"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventGenericCallback"/> + </signal> <signal name="DeviceAdded"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/events.c b/src/events.c index 10b2802..251ea59 100644 --- a/src/events.c +++ b/src/events.c @@ -74,6 +74,27 @@ virtDBusEventsDomainBlockJob(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainControlError(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "ControlError", + NULL, + NULL); + + return 0; +} + static gint virtDBusEventsDomainLifecycle(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -361,6 +382,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainBlockJob)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_CONTROL_ERROR, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainControlError)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:00PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 4 ++++ src/events.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 992fb11..db5da09 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -612,6 +612,11 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> <arg name="device" type="s"/> </signal> + <signal name="DeviceRemovalFailed"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceRemovalFailedCallback"/> + <arg name="device" type="s"/> + </signal> <signal name="DeviceRemoved"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceRemovedCallback"/> diff --git a/src/events.c b/src/events.c index 251ea59..b47a4a1 100644 --- a/src/events.c +++ b/src/events.c @@ -140,6 +140,28 @@ virtDBusEventsDomainDeviceAdded(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainDeviceRemovalFailed(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + const gchar *device, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "DeviceRemovalFailed", + g_variant_new("(s)", device), + NULL); + + return 0; +} + static gint virtDBusEventsDomainDeviceRemoved(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -394,6 +416,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_DEVICE_ADDED, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainDeviceAdded)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainDeviceRemovalFailed)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainDeviceRemoved)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:01PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 9 +++++++ src/events.c | 60 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index db5da09..a9a6f5c 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -630,6 +630,15 @@ <arg name="device" type="s"/> <arg name="reason" type="u"/> </signal> + <signal name="Graphics"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventGraphicsCallback"/> + <arg name="phase" type="i"/> + <arg name="local" type="(iss)"/> + <arg name="remote" type="(iss)"/> + <arg name="authScheme" type="s"/> + <arg name="identities" type="a(ss)"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index b47a4a1..f927b26 100644 --- a/src/events.c +++ b/src/events.c @@ -184,6 +184,62 @@ virtDBusEventsDomainDeviceRemoved(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainGraphics(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint phase, + const virDomainEventGraphicsAddress *local, + const virDomainEventGraphicsAddress *remote, + const gchar *authScheme, + const virDomainEventGraphicsSubject *subject, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + GVariantBuilder builder; + GVariant *gret; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_variant_builder_init(&builder, G_VARIANT_TYPE("(i(iss)(iss)sa(ss))")); + + g_variant_builder_add(&builder, "i", phase); + + g_variant_builder_open(&builder, G_VARIANT_TYPE("(iss)")); + g_variant_builder_add(&builder, "i", local->family); + g_variant_builder_add(&builder, "s", local->node); + g_variant_builder_add(&builder, "s", local->service); + g_variant_builder_close(&builder); + + g_variant_builder_open(&builder, G_VARIANT_TYPE("(iss)")); + g_variant_builder_add(&builder, "i", remote->family); + g_variant_builder_add(&builder, "s", remote->node); + g_variant_builder_add(&builder, "s", remote->service); + g_variant_builder_close(&builder); + + g_variant_builder_add(&builder, "s", authScheme); + + g_variant_builder_open(&builder, G_VARIANT_TYPE("a(ss)")); + for (gint i = 0; i < subject->nidentity; i++) { + g_variant_builder_open(&builder, G_VARIANT_TYPE("(ss)")); + g_variant_builder_add(&builder, "ss", subject->identities[i].type); + g_variant_builder_add(&builder, "ss", subject->identities[i].name); + g_variant_builder_close(&builder); + } + g_variant_builder_close(&builder); + gret = g_variant_builder_end(&builder); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "Graphics", + gret, + NULL); + + return 0; +} + static gint virtDBusEventsDomainTrayChange(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -428,6 +484,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_DISK_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainDiskChange)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_GRAPHICS, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainGraphics)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainTrayChange)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:02PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 9 +++++++ src/events.c | 60 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+)
diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index db5da09..a9a6f5c 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -630,6 +630,15 @@ <arg name="device" type="s"/> <arg name="reason" type="u"/> </signal> + <signal name="Graphics"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventGraphicsCallback"/> + <arg name="phase" type="i"/> + <arg name="local" type="(iss)"/> + <arg name="remote" type="(iss)"/> + <arg name="authScheme" type="s"/> + <arg name="identities" type="a(ss)"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index b47a4a1..f927b26 100644 --- a/src/events.c +++ b/src/events.c @@ -184,6 +184,62 @@ virtDBusEventsDomainDeviceRemoved(virConnectPtr connection G_GNUC_UNUSED, return 0; }
+static gint +virtDBusEventsDomainGraphics(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint phase, + const virDomainEventGraphicsAddress *local, + const virDomainEventGraphicsAddress *remote, + const gchar *authScheme, + const virDomainEventGraphicsSubject *subject, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + GVariantBuilder builder; + GVariant *gret; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_variant_builder_init(&builder, G_VARIANT_TYPE("(i(iss)(iss)sa(ss))")); + + g_variant_builder_add(&builder, "i", phase); + + g_variant_builder_open(&builder, G_VARIANT_TYPE("(iss)")); + g_variant_builder_add(&builder, "i", local->family); + g_variant_builder_add(&builder, "s", local->node); + g_variant_builder_add(&builder, "s", local->service); + g_variant_builder_close(&builder); + + g_variant_builder_open(&builder, G_VARIANT_TYPE("(iss)")); + g_variant_builder_add(&builder, "i", remote->family); + g_variant_builder_add(&builder, "s", remote->node); + g_variant_builder_add(&builder, "s", remote->service);
For local and remote both node and service can be NULL, so we need handle that. Since we have this pattern in multiple cases, I would recommend adding macro: #define VIRT_EMTPY_STR(s) ((s) ? (s) : "") similar to the EMTPYSTR from libvirt and use it here. As a followup patch we can use that macro in all other cases. Pavel

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 4 ++++ src/events.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index a9a6f5c..13f9ee3 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -639,6 +639,10 @@ <arg name="authScheme" type="s"/> <arg name="identities" type="a(ss)"/> </signal> + <signal name="Reboot"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventGenericCallback"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index f927b26..d409c50 100644 --- a/src/events.c +++ b/src/events.c @@ -240,6 +240,27 @@ virtDBusEventsDomainGraphics(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "Reboot", + NULL, + NULL); + + return 0; +} + static gint virtDBusEventsDomainTrayChange(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -488,6 +509,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_GRAPHICS, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainGraphics)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_REBOOT, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainTrayChange)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:03PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 4 ++++ src/events.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 13f9ee3..c52f9d4 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -643,6 +643,13 @@ <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventGenericCallback"/> </signal> + <signal name="IOError"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventIOErrorCallback"/> + <arg name="srcPath" type="s"/> + <arg name="device" type="s"/> + <arg name="action" type="i"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index d409c50..b7aa4e5 100644 --- a/src/events.c +++ b/src/events.c @@ -240,6 +240,31 @@ virtDBusEventsDomainGraphics(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainIOError(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + const gchar *srcPath, + const gchar *device, + gint action, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "IOError", + g_variant_new("(ssi)", srcPath, device, + action), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -509,6 +534,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_GRAPHICS, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainGraphics)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_IO_ERROR, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainIOError)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:04PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

On Fri, May 11, 2018 at 02:13:32PM +0200, Pavel Hrdina wrote:
On Thu, May 10, 2018 at 07:26:04PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 7 +++++++ src/events.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Acutally NACK :) we can export only the ioerror with reason, they are emitted at the same time but the second one has more information. Pavel

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 8 ++++++++ src/events.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index c52f9d4..0cc0080 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -650,6 +650,14 @@ <arg name="device" type="s"/> <arg name="action" type="i"/> </signal> + <signal name="IOErrorReason"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventIOErrorReasonCallback"/> + <arg name="srcPath" type="s"/> + <arg name="device" type="s"/> + <arg name="action" type="i"/> + <arg name="reason" type="s"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index b7aa4e5..433dba3 100644 --- a/src/events.c +++ b/src/events.c @@ -265,6 +265,32 @@ virtDBusEventsDomainIOError(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainIOErrorReason(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + const gchar *srcPath, + const gchar *device, + gint action, + const gchar *reason, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "IOErrorReason", + g_variant_new("(ssis)", srcPath, device, + action, reason), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -538,6 +564,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_IO_ERROR, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainIOError)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainIOErrorReason)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:05PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 8 ++++++++ src/events.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+)
diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index c52f9d4..0cc0080 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -650,6 +650,14 @@ <arg name="device" type="s"/> <arg name="action" type="i"/> </signal> + <signal name="IOErrorReason"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventIOErrorReasonCallback"/> + <arg name="srcPath" type="s"/> + <arg name="device" type="s"/> + <arg name="action" type="i"/> + <arg name="reason" type="s"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index b7aa4e5..433dba3 100644 --- a/src/events.c +++ b/src/events.c @@ -265,6 +265,32 @@ virtDBusEventsDomainIOError(virConnectPtr connection G_GNUC_UNUSED, return 0; }
+static gint +virtDBusEventsDomainIOErrorReason(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + const gchar *srcPath, + const gchar *device, + gint action, + const gchar *reason, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "IOErrorReason", + g_variant_new("(ssis)", srcPath, device, + action, reason), + NULL);
It's not documented but looking at the libvirt code the device can be NULL. Pavel

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 0cc0080..76f9a97 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -658,6 +658,11 @@ <arg name="action" type="i"/> <arg name="reason" type="s"/> </signal> + <signal name="JobCompleted"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventJobCompletedCallback"/> + <arg name="params" type="a{sv}"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index 433dba3..5943ea5 100644 --- a/src/events.c +++ b/src/events.c @@ -291,6 +291,32 @@ virtDBusEventsDomainIOErrorReason(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainJobCompleted(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + virTypedParameterPtr params, + gint nparams, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + GVariant *gargs; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + gargs = virtDBusUtilTypedParamsToGVariant(params, nparams); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "JobCompleted", + g_variant_new_tuple(&gargs, 1), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -568,6 +594,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainIOErrorReason)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_JOB_COMPLETED, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainJobCompleted)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:06PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 6 ++++++ src/events.c | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 76f9a97..72ff60e 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -663,6 +663,12 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventJobCompletedCallback"/> <arg name="params" type="a{sv}"/> </signal> + <signal name="MetadataChange"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventMetadataChangeCallback"/> + <arg name="type" type="i"/> + <arg name="nsuri" type="s"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index 5943ea5..c9daeac 100644 --- a/src/events.c +++ b/src/events.c @@ -317,6 +317,29 @@ virtDBusEventsDomainJobCompleted(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainMetadataChange(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint type, + const gchar *nsuri, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "MetadataChange", + g_variant_new("(is)", type, nsuri), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -598,6 +621,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_JOB_COMPLETED, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainJobCompleted)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_METADATA_CHANGE, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainMetadataChange)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:07PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 6 ++++++ src/events.c | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 72ff60e..3b090ba 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -669,6 +669,11 @@ <arg name="type" type="i"/> <arg name="nsuri" type="s"/> </signal> + <signal name="MigrationIteration"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventMigrationIterationCallback"/> + <arg name="iteration" type="i"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index c9daeac..22dbed9 100644 --- a/src/events.c +++ b/src/events.c @@ -340,6 +340,28 @@ virtDBusEventsDomainMetadataChange(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainMigrationIteration(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint iteration, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "MigrationIteration", + g_variant_new("(i)", iteration), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -625,6 +647,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_METADATA_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainMetadataChange)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainMigrationIteration)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:08PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 3b090ba..f693198 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -674,6 +674,11 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventMigrationIterationCallback"/> <arg name="iteration" type="i"/> </signal> + <signal name="PMSuspend"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventPMSuspendCallback"/> + <arg name="reason" type="i"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index 22dbed9..818aae4 100644 --- a/src/events.c +++ b/src/events.c @@ -362,6 +362,28 @@ virtDBusEventsDomainMigrationIteration(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainPMSuspend(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint reason, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "PMSuspend", + g_variant_new("(i)", reason), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -651,6 +673,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainMigrationIteration)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_PMSUSPEND, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainPMSuspend)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:09PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index f693198..205d035 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -679,6 +679,11 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventPMSuspendCallback"/> <arg name="reason" type="i"/> </signal> + <signal name="PMSuspendDisk"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventPMSuspendDiskCallback"/> + <arg name="reason" type="i"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index 818aae4..26b1947 100644 --- a/src/events.c +++ b/src/events.c @@ -384,6 +384,28 @@ virtDBusEventsDomainPMSuspend(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainPMSuspendDisk(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint reason, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "PMSuspendDisk", + g_variant_new("(i)", reason), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -677,6 +699,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_PMSUSPEND, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainPMSuspend)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainPMSuspendDisk)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:10PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 205d035..3478c09 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -684,6 +684,11 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventPMSuspendDiskCallback"/> <arg name="reason" type="i"/> </signal> + <signal name="PMWakeup"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventPMWakeupCallback"/> + <arg name="reason" type="i"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index 26b1947..c71ed14 100644 --- a/src/events.c +++ b/src/events.c @@ -406,6 +406,28 @@ virtDBusEventsDomainPMSuspendDisk(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainPMWakeup(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint reason, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "PMWakeup", + g_variant_new("(i)", reason), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -703,6 +725,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainPMSuspendDisk)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_PMWAKEUP, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainPMWakeup)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:11PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 3478c09..5ab6660 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -689,6 +689,11 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventPMWakeupCallback"/> <arg name="reason" type="i"/> </signal> + <signal name="RTCChange"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventRTCChangeCallback"/> + <arg name="utcoffset" type="x"/> + </signal> <signal name="TrayChange"> <annotation name="org.gtk.GDBus.DocString" value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTrayChangeCallback"/> diff --git a/src/events.c b/src/events.c index c71ed14..6319776 100644 --- a/src/events.c +++ b/src/events.c @@ -428,6 +428,28 @@ virtDBusEventsDomainPMWakeup(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainRTCChange(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint64 utcoffset, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "RTCChange", + g_variant_new("(x)", utcoffset), + NULL); + + return 0; +} + static gint virtDBusEventsDomainReboot(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -729,6 +751,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_PMWAKEUP, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainPMWakeup)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_RTC_CHANGE, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainRTCChange)); + virtDBusEventsRegisterDomainEvent(connect, VIR_DOMAIN_EVENT_ID_REBOOT, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainReboot)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:12PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 5ab6660..39b7ac6 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -700,5 +700,10 @@ <arg name="device" type="s"/> <arg name="reason" type="u"/> </signal> + <signal name="Tunable"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTunableCallback"/> + <arg name="params" type="a{sv}"/> + </signal> </interface> </node> diff --git a/src/events.c b/src/events.c index 6319776..d8c2a37 100644 --- a/src/events.c +++ b/src/events.c @@ -494,6 +494,32 @@ virtDBusEventsDomainTrayChange(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainTunable(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + virTypedParameterPtr params, + gint nparams, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + GVariant *gargs; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + gargs = virtDBusUtilTypedParamsToGVariant(params, nparams); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "Tunable", + g_variant_new_tuple(&gargs, 1), + NULL); + + return 0; +} + static gint virtDBusEventsDomainDiskChange(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -763,6 +789,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainTrayChange)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_TUNABLE, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainTunable)); + virtDBusEventsRegisterNetworkEvent(connect, VIR_NETWORK_EVENT_ID_LIFECYCLE, VIR_NETWORK_EVENT_CALLBACK(virtDBusEventsNetworkLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:13PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 39b7ac6..e2e99a9 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -705,5 +705,10 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventTunableCallback"/> <arg name="params" type="a{sv}"/> </signal> + <signal name="Watchdog"> + <annotation name="org.gtk.GDBus.DocString" + value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventWatchdogCallback"/> + <arg name="action" type="i"/> + </signal> </interface> </node> diff --git a/src/events.c b/src/events.c index d8c2a37..2697d82 100644 --- a/src/events.c +++ b/src/events.c @@ -520,6 +520,28 @@ virtDBusEventsDomainTunable(virConnectPtr connection G_GNUC_UNUSED, return 0; } +static gint +virtDBusEventsDomainWatchdog(virConnectPtr connection G_GNUC_UNUSED, + virDomainPtr domain, + gint action, + gpointer opaque) +{ + virtDBusConnect *connect = opaque; + g_autofree gchar *path = NULL; + + path = virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); + + g_dbus_connection_emit_signal(connect->bus, + NULL, + path, + VIRT_DBUS_DOMAIN_INTERFACE, + "Watchdog", + g_variant_new("(i)", action), + NULL); + + return 0; +} + static gint virtDBusEventsDomainDiskChange(virConnectPtr connection G_GNUC_UNUSED, virDomainPtr domain, @@ -793,6 +815,10 @@ virtDBusEventsRegister(virtDBusConnect *connect) VIR_DOMAIN_EVENT_ID_TUNABLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainTunable)); + virtDBusEventsRegisterDomainEvent(connect, + VIR_DOMAIN_EVENT_ID_WATCHDOG, + VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDomainWatchdog)); + virtDBusEventsRegisterNetworkEvent(connect, VIR_NETWORK_EVENT_ID_LIFECYCLE, VIR_NETWORK_EVENT_CALLBACK(virtDBusEventsNetworkLifecycle)); -- 2.15.0

On Thu, May 10, 2018 at 07:26:14PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/org.libvirt.Domain.xml | 5 +++++ src/events.c | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
participants (2)
-
Katerina Koukiou
-
Pavel Hrdina