From nobody Tue May 7 06:58:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1522321690544764.0443830025696; Thu, 29 Mar 2018 04:08:10 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CFEBF8047A; Thu, 29 Mar 2018 11:08:08 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 32FDF60BE2; Thu, 29 Mar 2018 11:08:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E077D180596E; Thu, 29 Mar 2018 11:08:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w2TB83cG007243 for ; Thu, 29 Mar 2018 07:08:03 -0400 Received: by smtp.corp.redhat.com (Postfix) id A86E81102E2D; Thu, 29 Mar 2018 11:08:03 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.101]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4FC861102E2C for ; Thu, 29 Mar 2018 11:08:03 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Thu, 29 Mar 2018 13:07:55 +0200 Message-Id: <20180329110758.9640-2-kkoukiou@redhat.com> In-Reply-To: <20180329110758.9640-1-kkoukiou@redhat.com> References: <20180329110758.9640-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 1/4] Implement Suspend method for Domain interface. X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 29 Mar 2018 11:08:09 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Katerina Koukiou --- data/org.libvirt.Domain.xml | 4 ++++ src/domain.c | 21 +++++++++++++++++++++ test/test_domain.py | 15 +++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 39212ff..f31d078 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -84,6 +84,10 @@ value=3D"See https://libvirt.org/html/libvirt-libvirt-domain.html#= virDomainUndefineFlags"/> + + + diff --git a/src/domain.c b/src/domain.c index 4ff9f60..cb13b6b 100644 --- a/src/domain.c +++ b/src/domain.c @@ -450,6 +450,26 @@ virtDBusDomainUndefine(GVariant *inArgs G_GNUC_UNUSED, virtDBusUtilSetLastVirtError(error); } =20 +static void +virtDBusDomainSuspend(GVariant *inArgs G_GNUC_UNUSED, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ + virtDBusConnect *connect =3D userData; + g_autoptr(virDomain) domain =3D NULL; + + domain =3D virtDBusDomainGetVirDomain(connect, objectPath, error); + if (!domain) + return; + + if (virDomainSuspend(domain) < 0) + virtDBusUtilSetLastVirtError(error); +} + static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] =3D { { "Name", virtDBusDomainGetName, NULL }, { "UUID", virtDBusDomainGetUUID, NULL }, @@ -472,6 +492,7 @@ static virtDBusGDBusMethodTable virtDBusDomainMethodTab= le[] =3D { { "Reset", virtDBusDomainReset }, { "Create", virtDBusDomainCreate }, { "Undefine", virtDBusDomainUndefine }, + { "Suspend", virtDBusDomainSuspend }, { 0 } }; =20 diff --git a/test/test_domain.py b/test/test_domain.py index e617b1b..bb1b498 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -67,6 +67,21 @@ class TestDomain(libvirttest.BaseTestClass): =20 self.main_loop() =20 + def test_suspend(self): + def domain_suspended(name, path): + assert name =3D=3D 'test' + assert isinstance(path, dbus.ObjectPath) + self.loop.quit() + + self.connect.connect_to_signal('DomainSuspended', domain_suspended) + + obj, domain =3D self.domain() + domain.Suspend() + + state =3D obj.Get('org.libvirt.Domain', 'State', dbus_interface=3D= dbus.PROPERTIES_IFACE) + assert state =3D=3D 'paused' + + self.main_loop() =20 if __name__ =3D=3D '__main__': libvirttest.run() --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue May 7 06:58:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1522321739530694.1966240367146; Thu, 29 Mar 2018 04:08:59 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AF5767F3F5; Thu, 29 Mar 2018 11:08:24 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 86FC160F8C; Thu, 29 Mar 2018 11:08:24 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 3C5684CA99; Thu, 29 Mar 2018 11:08:24 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w2TB84qB007251 for ; Thu, 29 Mar 2018 07:08:04 -0400 Received: by smtp.corp.redhat.com (Postfix) id 45C1F1102E2D; Thu, 29 Mar 2018 11:08:04 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.101]) by smtp.corp.redhat.com (Postfix) with ESMTP id E169D1102E2C for ; Thu, 29 Mar 2018 11:08:03 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Thu, 29 Mar 2018 13:07:56 +0200 Message-Id: <20180329110758.9640-3-kkoukiou@redhat.com> In-Reply-To: <20180329110758.9640-1-kkoukiou@redhat.com> References: <20180329110758.9640-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 2/4] Implement Resume method for Domain interface. X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 29 Mar 2018 11:08:25 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Katerina Koukiou --- data/org.libvirt.Domain.xml | 4 ++++ src/domain.c | 21 +++++++++++++++++++++ test/test_domain.py | 17 +++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index f31d078..7679018 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -88,6 +88,10 @@ + + + diff --git a/src/domain.c b/src/domain.c index cb13b6b..a530987 100644 --- a/src/domain.c +++ b/src/domain.c @@ -470,6 +470,26 @@ virtDBusDomainSuspend(GVariant *inArgs G_GNUC_UNUSED, virtDBusUtilSetLastVirtError(error); } =20 +static void +virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ + virtDBusConnect *connect =3D userData; + g_autoptr(virDomain) domain =3D NULL; + + domain =3D virtDBusDomainGetVirDomain(connect, objectPath, error); + if (!domain) + return; + + if (virDomainResume(domain) < 0) + virtDBusUtilSetLastVirtError(error); +} + static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] =3D { { "Name", virtDBusDomainGetName, NULL }, { "UUID", virtDBusDomainGetUUID, NULL }, @@ -493,6 +513,7 @@ static virtDBusGDBusMethodTable virtDBusDomainMethodTab= le[] =3D { { "Create", virtDBusDomainCreate }, { "Undefine", virtDBusDomainUndefine }, { "Suspend", virtDBusDomainSuspend }, + { "Resume", virtDBusDomainResume }, { 0 } }; =20 diff --git a/test/test_domain.py b/test/test_domain.py index bb1b498..1433ff5 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -83,5 +83,22 @@ class TestDomain(libvirttest.BaseTestClass): =20 self.main_loop() =20 + def test_resume(self): + def domain_resumed(name, path): + assert name =3D=3D 'test' + assert isinstance(path, dbus.ObjectPath) + self.loop.quit() + + self.connect.connect_to_signal('DomainResumed', domain_resumed) + + obj, domain =3D self.domain() + domain.Suspend() + domain.Resume() + + state =3D obj.Get('org.libvirt.Domain', 'State', dbus_interface=3D= dbus.PROPERTIES_IFACE) + assert state =3D=3D 'running' + + self.main_loop() + if __name__ =3D=3D '__main__': libvirttest.run() --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue May 7 06:58:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1522321709501474.2511870842552; Thu, 29 Mar 2018 04:08:29 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C6AB5C047B63; Thu, 29 Mar 2018 11:08:27 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A3981600C0; Thu, 29 Mar 2018 11:08:27 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6DEFD181BA06; Thu, 29 Mar 2018 11:08:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w2TB84vI007257 for ; Thu, 29 Mar 2018 07:08:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id D7AEB1102E2D; Thu, 29 Mar 2018 11:08:04 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.101]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7F1D61102E2C for ; Thu, 29 Mar 2018 11:08:04 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Thu, 29 Mar 2018 13:07:57 +0200 Message-Id: <20180329110758.9640-4-kkoukiou@redhat.com> In-Reply-To: <20180329110758.9640-1-kkoukiou@redhat.com> References: <20180329110758.9640-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 3/4] Merge all Domain lifecycle signals into one signal called Domain. X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 29 Mar 2018 11:08:28 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Instead of having multiple signals regarding to domain events, like DomainStarted, DomainUndefined etc, we will have only one called Domain, and the specific event type will be specified in the signals arguments. The domain name argument in not needed in the signal since we can fetch it from path. The tests are adjusted to call correctly connect_to_signal method on the new signal. Signed-off-by: Katerina Koukiou --- data/org.libvirt.Connect.xml | 54 +++-------------------------------------= ---- src/events.c | 26 ++++++++++----------- test/test_connect.py | 10 ++++---- test/test_domain.py | 20 +++++++--------- 4 files changed, 27 insertions(+), 83 deletions(-) diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml index f24dff4..6810422 100644 --- a/data/org.libvirt.Connect.xml +++ b/data/org.libvirt.Connect.xml @@ -44,59 +44,11 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + value=3D"See https://libvirt.org/html/libvirt-libvirt-domain.html#= virConnectDomainEventCallback"/> + diff --git a/src/events.c b/src/events.c index dada55f..62f3729 100644 --- a/src/events.c +++ b/src/events.c @@ -12,51 +12,49 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection = G_GNUC_UNUSED, gpointer opaque) { virtDBusConnect *connect =3D opaque; - const gchar *signal =3D NULL; - const gchar *name; + const gchar *event_type =3D NULL; g_autofree gchar *path =3D NULL; =20 switch (event) { case VIR_DOMAIN_EVENT_DEFINED: - signal =3D "DomainDefined"; + event_type =3D "DomainDefined"; break; case VIR_DOMAIN_EVENT_UNDEFINED: - signal =3D "DomainUndefined"; + event_type =3D "DomainUndefined"; break; case VIR_DOMAIN_EVENT_STARTED: - signal =3D "DomainStarted"; + event_type =3D "DomainStarted"; break; case VIR_DOMAIN_EVENT_SUSPENDED: - signal =3D "DomainSuspended"; + event_type =3D "DomainSuspended"; break; case VIR_DOMAIN_EVENT_RESUMED: - signal =3D "DomainResumed"; + event_type =3D "DomainResumed"; break; case VIR_DOMAIN_EVENT_STOPPED: - signal =3D "DomainStopped"; + event_type =3D "DomainStopped"; break; case VIR_DOMAIN_EVENT_SHUTDOWN: - signal =3D "DomainShutdown"; + event_type =3D "DomainShutdown"; break; case VIR_DOMAIN_EVENT_PMSUSPENDED: - signal =3D "DomainPMSuspended"; + event_type =3D "DomainPMSuspended"; break; case VIR_DOMAIN_EVENT_CRASHED: - signal =3D "DomainCrashed"; + event_type =3D "DomainCrashed"; break; default: return 0; } =20 - name =3D virDomainGetName(domain); path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 g_dbus_connection_emit_signal(connect->bus, NULL, connect->connectPath, VIRT_DBUS_CONNECT_INTERFACE, - signal, - g_variant_new("(so)", name, path), + "Domain", + g_variant_new("(os)", path, event_type), NULL); =20 return 0; diff --git a/test/test_connect.py b/test/test_connect.py index 48e25cb..c7830c5 100755 --- a/test/test_connect.py +++ b/test/test_connect.py @@ -29,12 +29,11 @@ class TestConnect(libvirttest.BaseTestClass): domain.Introspect(dbus_interface=3Ddbus.INTROSPECTABLE_IFACE) =20 def test_create(self): - def domain_started(name, path): - assert name =3D=3D 'foo' + def domain_started(path, _event): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('DomainStarted', domain_started) + self.connect.connect_to_signal('Domain', domain_started, arg2=3D'D= omainStarted') =20 path =3D self.connect.CreateXML(self.minimal_xml, 0) assert isinstance(path, dbus.ObjectPath) @@ -42,12 +41,11 @@ class TestConnect(libvirttest.BaseTestClass): self.main_loop() =20 def test_define(self): - def domain_defined(name, path): - assert name =3D=3D 'foo' + def domain_defined(path, _event): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('DomainDefined', domain_defined) + self.connect.connect_to_signal('Domain', domain_defined, arg2=3D'D= omainDefined') =20 path =3D self.connect.DefineXML(self.minimal_xml) assert isinstance(path, dbus.ObjectPath) diff --git a/test/test_domain.py b/test/test_domain.py index 1433ff5..7dbc971 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -38,12 +38,11 @@ class TestDomain(libvirttest.BaseTestClass): domain.Undefine(0) =20 def test_shutdown(self): - def domain_stopped(name, path): - assert name =3D=3D 'test' + def domain_stopped(path, _event): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('DomainStopped', domain_stopped) + self.connect.connect_to_signal('Domain', domain_stopped, arg2=3D'D= omainStopped') =20 obj, domain =3D self.domain() domain.Shutdown(0) @@ -54,12 +53,11 @@ class TestDomain(libvirttest.BaseTestClass): self.main_loop() =20 def test_undefine(self): - def domain_undefined(name, path): - assert name =3D=3D 'test' + def domain_undefined(path, _event): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('DomainUndefined', domain_undefined) + self.connect.connect_to_signal('Domain', domain_undefined, arg2=3D= 'DomainUndefined') =20 _, domain =3D self.domain() domain.Shutdown(0) @@ -68,12 +66,11 @@ class TestDomain(libvirttest.BaseTestClass): self.main_loop() =20 def test_suspend(self): - def domain_suspended(name, path): - assert name =3D=3D 'test' + def domain_suspended(path, _event): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('DomainSuspended', domain_suspended) + self.connect.connect_to_signal('Domain', domain_suspended, arg2=3D= 'DomainSuspended') =20 obj, domain =3D self.domain() domain.Suspend() @@ -84,12 +81,11 @@ class TestDomain(libvirttest.BaseTestClass): self.main_loop() =20 def test_resume(self): - def domain_resumed(name, path): - assert name =3D=3D 'test' + def domain_resumed(path, _event): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('DomainResumed', domain_resumed) + self.connect.connect_to_signal('Domain', domain_resumed, arg2=3D'D= omainResumed') =20 obj, domain =3D self.domain() domain.Suspend() --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue May 7 06:58:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1522321712239714.3502083899799; Thu, 29 Mar 2018 04:08:32 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0B8567AE8B; Thu, 29 Mar 2018 11:08:31 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DB7C75D781; Thu, 29 Mar 2018 11:08:30 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A20F64CA9E; Thu, 29 Mar 2018 11:08:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w2TB85j1007268 for ; Thu, 29 Mar 2018 07:08:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id 758B41102E2D; Thu, 29 Mar 2018 11:08:05 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.101]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1CF811102E2C for ; Thu, 29 Mar 2018 11:08:04 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Thu, 29 Mar 2018 13:07:58 +0200 Message-Id: <20180329110758.9640-5-kkoukiou@redhat.com> In-Reply-To: <20180329110758.9640-1-kkoukiou@redhat.com> References: <20180329110758.9640-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 4/4] Introduce functions for translating Events to strings X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 29 Mar 2018 11:08:31 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The functions were copied from src/util/virutil.* files from libvirt project. They will be needed for other function of enum to string as well. Signed-off-by: Katerina Koukiou --- m4/virt-compile-warnings.m4 | 3 +++ src/events.c | 35 +---------------------------------- src/util.c | 30 ++++++++++++++++++++++++++++++ src/util.h | 30 ++++++++++++++++++++++++++++++ test/test_connect.py | 4 ++-- test/test_domain.py | 8 ++++---- 6 files changed, 70 insertions(+), 40 deletions(-) diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4 index 6ece136..7bc49b2 100644 --- a/m4/virt-compile-warnings.m4 +++ b/m4/virt-compile-warnings.m4 @@ -123,6 +123,9 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ # but need to rewrite various areas of code first wantwarn=3D"$wantwarn -Wno-format-truncation" =20 + # Needeed for *EventToString related functions. + wantwarn=3D"$wantwarn -Wno-suggest-attribute=3Dpure" + # This should be < 256 really. Currently we're down to 4096, # but using 1024 bytes sized buffers (mostly for virStrerror) # stops us from going down further diff --git a/src/events.c b/src/events.c index 62f3729..52c53ac 100644 --- a/src/events.c +++ b/src/events.c @@ -12,41 +12,8 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection G= _GNUC_UNUSED, gpointer opaque) { virtDBusConnect *connect =3D opaque; - const gchar *event_type =3D NULL; g_autofree gchar *path =3D NULL; =20 - switch (event) { - case VIR_DOMAIN_EVENT_DEFINED: - event_type =3D "DomainDefined"; - break; - case VIR_DOMAIN_EVENT_UNDEFINED: - event_type =3D "DomainUndefined"; - break; - case VIR_DOMAIN_EVENT_STARTED: - event_type =3D "DomainStarted"; - break; - case VIR_DOMAIN_EVENT_SUSPENDED: - event_type =3D "DomainSuspended"; - break; - case VIR_DOMAIN_EVENT_RESUMED: - event_type =3D "DomainResumed"; - break; - case VIR_DOMAIN_EVENT_STOPPED: - event_type =3D "DomainStopped"; - break; - case VIR_DOMAIN_EVENT_SHUTDOWN: - event_type =3D "DomainShutdown"; - break; - case VIR_DOMAIN_EVENT_PMSUSPENDED: - event_type =3D "DomainPMSuspended"; - break; - case VIR_DOMAIN_EVENT_CRASHED: - event_type =3D "DomainCrashed"; - break; - default: - return 0; - } - path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 g_dbus_connection_emit_signal(connect->bus, @@ -54,7 +21,7 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection G_= GNUC_UNUSED, connect->connectPath, VIRT_DBUS_CONNECT_INTERFACE, "Domain", - g_variant_new("(os)", path, event_type), + g_variant_new("(os)", path, virtDBusDoma= inEventToString(event)), NULL); =20 return 0; diff --git a/src/util.c b/src/util.c index d6c27f3..9f645d2 100644 --- a/src/util.c +++ b/src/util.c @@ -124,3 +124,33 @@ virtDBusUtilVirDomainListFree(virDomainPtr *domains) =20 g_free(domains); } + +const gchar *virEnumToString(const gchar *const*types, + guint ntypes, + gint type) +{ + if (type < 0 || (unsigned)type >=3D ntypes) + return NULL; + + return types[type]; +} + +VIR_ENUM_DECL(virtDBusDomainEvent) +VIR_ENUM_IMPL(virtDBusDomainEvent, + VIR_DOMAIN_EVENT_LAST, + "Defined", + "Undefined", + "Started", + "Suspended", + "Resumed", + "Stopped", + "Shutdown", + "PMSuspended", + "Crashed") + +const gchar * +virtDBusDomainEventToString(gint event) +{ + const gchar *str =3D virtDBusDomainEventTypeToString(event); + return str ? str : "unknown"; +} diff --git a/src/util.h b/src/util.h index 4304bac..22cf25e 100644 --- a/src/util.h +++ b/src/util.h @@ -2,6 +2,7 @@ =20 #include "gdbus.h" =20 +#define VIR_ENUM_SENTINELS #include =20 #define VIRT_DBUS_ERROR virtDBusErrorQuark() @@ -37,3 +38,32 @@ virtDBusUtilVirDomainListFree(virDomainPtr *domains); =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomain, virDomainFree); G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainPtr, virtDBusUtilVirDomainListFree); + +gint virEnumFromString(const gchar *const*types, + guint ntypes, + const gchar *type); + +const gchar *virEnumToString(const gchar *const*types, + guint ntypes, + gint type); + +# define VIR_ENUM_IMPL(name, lastVal, ...) \ + static const gchar *const name ## TypeList[] =3D { __VA_ARGS__ }; \ + G_STATIC_ASSERT(G_N_ELEMENTS(name ## TypeList) =3D=3D lastVal); \ + const gchar *name ## TypeToString(int type) { \ + return virEnumToString(name ## TypeList, \ + G_N_ELEMENTS(name ## TypeList), \ + type); \ + } \ + gint name ## TypeFromString(const gchar *type) { \ + return virEnumFromString(name ## TypeList, \ + G_N_ELEMENTS(name ## TypeList), \ + type); \ + } + +# define VIR_ENUM_DECL(name) \ + const gchar *name ## TypeToString(gint type); \ + gint name ## TypeFromString(const gchar*type); + +const gchar * +virtDBusDomainEventToString(gint event); diff --git a/test/test_connect.py b/test/test_connect.py index c7830c5..8bab625 100755 --- a/test/test_connect.py +++ b/test/test_connect.py @@ -33,7 +33,7 @@ class TestConnect(libvirttest.BaseTestClass): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('Domain', domain_started, arg2=3D'D= omainStarted') + self.connect.connect_to_signal('Domain', domain_started, arg2=3D'S= tarted') =20 path =3D self.connect.CreateXML(self.minimal_xml, 0) assert isinstance(path, dbus.ObjectPath) @@ -45,7 +45,7 @@ class TestConnect(libvirttest.BaseTestClass): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('Domain', domain_defined, arg2=3D'D= omainDefined') + self.connect.connect_to_signal('Domain', domain_defined, arg2=3D'D= efined') =20 path =3D self.connect.DefineXML(self.minimal_xml) assert isinstance(path, dbus.ObjectPath) diff --git a/test/test_domain.py b/test/test_domain.py index 7dbc971..4d03c4b 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -42,7 +42,7 @@ class TestDomain(libvirttest.BaseTestClass): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('Domain', domain_stopped, arg2=3D'D= omainStopped') + self.connect.connect_to_signal('Domain', domain_stopped, arg2=3D'S= topped') =20 obj, domain =3D self.domain() domain.Shutdown(0) @@ -57,7 +57,7 @@ class TestDomain(libvirttest.BaseTestClass): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('Domain', domain_undefined, arg2=3D= 'DomainUndefined') + self.connect.connect_to_signal('Domain', domain_undefined, arg2=3D= 'Undefined') =20 _, domain =3D self.domain() domain.Shutdown(0) @@ -70,7 +70,7 @@ class TestDomain(libvirttest.BaseTestClass): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('Domain', domain_suspended, arg2=3D= 'DomainSuspended') + self.connect.connect_to_signal('Domain', domain_suspended, arg2=3D= 'Suspended') =20 obj, domain =3D self.domain() domain.Suspend() @@ -85,7 +85,7 @@ class TestDomain(libvirttest.BaseTestClass): assert isinstance(path, dbus.ObjectPath) self.loop.quit() =20 - self.connect.connect_to_signal('Domain', domain_resumed, arg2=3D'D= omainResumed') + self.connect.connect_to_signal('Domain', domain_resumed, arg2=3D'R= esumed') =20 obj, domain =3D self.domain() domain.Suspend() --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list