From nobody Fri May 3 08:28:40 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 1516641381736410.09583794417756; Mon, 22 Jan 2018 09:16:21 -0800 (PST) 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 6913161B21; Mon, 22 Jan 2018 17:16:20 +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 01444850D; Mon, 22 Jan 2018 17:16:19 +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 EE41518033DA; Mon, 22 Jan 2018 17:16:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGGdf028327 for ; Mon, 22 Jan 2018 12:16:16 -0500 Received: by smtp.corp.redhat.com (Postfix) id DBAC11715D; Mon, 22 Jan 2018 17:16:16 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7283217171; Mon, 22 Jan 2018 17:16:15 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:15:59 +0100 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 01/11] util: introduce VIRT_ARRAY_CARDINALITY macro 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]); Mon, 22 Jan 2018 17:16:21 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/util.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/util.h b/src/util.h index 0c9f3d7..6d99841 100644 --- a/src/util.h +++ b/src/util.h @@ -8,6 +8,8 @@ #define _cleanup_(_x) __attribute__((__cleanup__(_x))) #define VIR_ATTR_UNUSED __attribute__((__unused__)) =20 +#define VIRT_ARRAY_CARDINALITY(array) (sizeof(array) / sizeof(*(array))) + =20 int virtDBusUtilMessageAppendTypedParameters(sd_bus_message *message, --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641381744988.1123562931097; Mon, 22 Jan 2018 09:16:21 -0800 (PST) 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 A7F6C7E420; Mon, 22 Jan 2018 17:16:20 +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 49C3160606; Mon, 22 Jan 2018 17:16:20 +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 AEC273FB1A; Mon, 22 Jan 2018 17:16:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGIKJ028335 for ; Mon, 22 Jan 2018 12:16:18 -0500 Received: by smtp.corp.redhat.com (Postfix) id 0D95C1715D; Mon, 22 Jan 2018 17:16:18 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 364955C3F7; Mon, 22 Jan 2018 17:16:17 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:00 +0100 Message-Id: <1e02279de6d2d965f631a3b4eb1aa0ce94f00662.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 02/11] util: introduce virtDBusUtilSetError helper 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.27]); Mon, 22 Jan 2018 17:16:21 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/util.c | 7 +++++++ src/util.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/src/util.c b/src/util.c index 2445ce0..6636d0a 100644 --- a/src/util.c +++ b/src/util.c @@ -69,6 +69,13 @@ virtDBusUtilSetLastVirtError(sd_bus_error *error) return sd_bus_error_set(error, "org.libvirt.Error", vir_error->message= ); } =20 +int +virtDBusUtilSetError(sd_bus_error *error, + const char *message) +{ + return sd_bus_error_set(error, "org.libvirt.Error", message); +} + char * virtDBusUtilBusPathForVirDomain(virDomainPtr domain) { diff --git a/src/util.h b/src/util.h index 6d99841..cb8447d 100644 --- a/src/util.h +++ b/src/util.h @@ -19,6 +19,10 @@ virtDBusUtilMessageAppendTypedParameters(sd_bus_message = *message, int virtDBusUtilSetLastVirtError(sd_bus_error *error); =20 +int +virtDBusUtilSetError(sd_bus_error *error, + const char *message); + char * virtDBusUtilBusPathForVirDomain(virDomainPtr domain); =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641394415788.8096061114268; Mon, 22 Jan 2018 09:16:34 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 32AB178235; Mon, 22 Jan 2018 17:16:33 +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 002665F704; Mon, 22 Jan 2018 17:16:32 +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 B7F6C3FAED; Mon, 22 Jan 2018 17:16:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGJxE028473 for ; Mon, 22 Jan 2018 12:16:19 -0500 Received: by smtp.corp.redhat.com (Postfix) id 99C795F704; Mon, 22 Jan 2018 17:16:19 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5BF515C3F7; Mon, 22 Jan 2018 17:16:18 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:01 +0100 Message-Id: <0c500969738a1ecc696177aba4addb9179e867ab.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 03/11] src: rename manager to connect 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 22 Jan 2018 17:16:33 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Manager was a good name for the original design. However, the design will be changed that for now libvirt-dbus will be using only local connection and will support multiple drivers. Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/Makefile.am | 2 +- src/{manager.c =3D> connect.c} | 93 ++++++++++++++++---------= ------ src/{manager.h =3D> connect.h} | 10 ++-- src/domain.c | 80 +++++++++++++------------- src/domain.h | 4 +- src/events.c | 54 +++++++++--------- src/events.h | 4 +- src/main.c | 8 +-- test/Makefile.am | 2 +- test/libvirttest.py | 4 +- test/{test_manager.py =3D> test_connect.py} | 12 ++-- test/test_domain.py | 6 +- 12 files changed, 140 insertions(+), 139 deletions(-) rename src/{manager.c =3D> connect.c} (64%) rename src/{manager.h =3D> connect.h} (53%) rename test/{test_manager.py =3D> test_connect.py} (79%) diff --git a/src/Makefile.am b/src/Makefile.am index 5d4cb04..1a5b50b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,7 +3,7 @@ AM_CPPFLAGS =3D \ =20 DAEMON_SOURCES =3D \ main.c \ - manager.c manager.h \ + connect.c connect.h \ util.c util.h \ domain.c domain.h \ events.c events.h diff --git a/src/manager.c b/src/connect.c similarity index 64% rename from src/manager.c rename to src/connect.c index f289a7a..cb19c39 100644 --- a/src/manager.c +++ b/src/connect.c @@ -1,24 +1,24 @@ #include "domain.h" #include "events.h" -#include "manager.h" +#include "connect.h" #include "util.h" =20 #include #include =20 static int -virtDBusManagerEnumarateDomains(sd_bus *bus VIR_ATTR_UNUSED, +virtDBusConnectEnumarateDomains(sd_bus *bus VIR_ATTR_UNUSED, const char *path VIR_ATTR_UNUSED, void *userdata, char ***nodes, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainListFreep) virDomainPtr *domains =3D NU= LL; _cleanup_(virtDBusUtilStrvFreep) char **paths =3D NULL; int n_domains; =20 - n_domains =3D virConnectListAllDomains(manager->connection, &domains, = 0); + n_domains =3D virConnectListAllDomains(connect->connection, &domains, = 0); if (n_domains < 0) return virtDBusUtilSetLastVirtError(error); =20 @@ -34,11 +34,11 @@ virtDBusManagerEnumarateDomains(sd_bus *bus VIR_ATTR_UN= USED, } =20 static int -virtDBusManagerListDomains(sd_bus_message *message, +virtDBusConnectListDomains(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply =3D NULL; _cleanup_(virtDBusUtilVirDomainListFreep) virDomainPtr *domains =3D NU= LL; uint32_t flags; @@ -48,7 +48,7 @@ virtDBusManagerListDomains(sd_bus_message *message, if (r < 0) return r; =20 - r =3D virConnectListAllDomains(manager->connection, &domains, flags); + r =3D virConnectListAllDomains(connect->connection, &domains, flags); if (r < 0) return virtDBusUtilSetLastVirtError(error); =20 @@ -78,11 +78,11 @@ virtDBusManagerListDomains(sd_bus_message *message, } =20 static int -virtDBusManagerCreateXML(sd_bus_message *message, +virtDBusConnectCreateXML(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; const char *xml; uint32_t flags; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; @@ -93,7 +93,7 @@ virtDBusManagerCreateXML(sd_bus_message *message, if (r < 0) return r; =20 - domain =3D virDomainCreateXML(manager->connection, xml, flags); + domain =3D virDomainCreateXML(connect->connection, xml, flags); if (!domain) return virtDBusUtilSetLastVirtError(error); =20 @@ -103,11 +103,11 @@ virtDBusManagerCreateXML(sd_bus_message *message, } =20 static int -virtDBusManagerDefineXML(sd_bus_message *message, +virtDBusConnectDefineXML(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; const char *xml; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; _cleanup_(virtDBusUtilFreep) char *path =3D NULL; @@ -117,7 +117,7 @@ virtDBusManagerDefineXML(sd_bus_message *message, if (r < 0) return r; =20 - domain =3D virDomainDefineXML(manager->connection, xml); + domain =3D virDomainDefineXML(connect->connection, xml); if (!domain) return virtDBusUtilSetLastVirtError(error); =20 @@ -126,12 +126,12 @@ virtDBusManagerDefineXML(sd_bus_message *message, return sd_bus_reply_method_return(message, "o", path); } =20 -static const sd_bus_vtable virt_manager_vtable[] =3D { +static const sd_bus_vtable virt_connect_vtable[] =3D { SD_BUS_VTABLE_START(0), =20 - SD_BUS_METHOD("ListDomains", "u", "ao", virtDBusManagerListDomains, SD= _BUS_VTABLE_UNPRIVILEGED), - SD_BUS_METHOD("CreateXML", "su", "o", virtDBusManagerCreateXML, SD_BUS= _VTABLE_UNPRIVILEGED), - SD_BUS_METHOD("DefineXML", "s", "o", virtDBusManagerDefineXML, SD_BUS_= VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("ListDomains", "u", "ao", virtDBusConnectListDomains, SD= _BUS_VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("CreateXML", "su", "o", virtDBusConnectCreateXML, SD_BUS= _VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("DefineXML", "s", "o", virtDBusConnectDefineXML, SD_BUS_= VTABLE_UNPRIVILEGED), =20 SD_BUS_SIGNAL("DomainDefined", "so", 0), SD_BUS_SIGNAL("DomainUndefined", "so", 0), @@ -147,70 +147,71 @@ static const sd_bus_vtable virt_manager_vtable[] =3D { }; =20 int -virtDBusManagerNew(virtDBusManager **managerp, +virtDBusConnectNew(virtDBusConnect **connectp, sd_bus *bus, const char *uri) { - _cleanup_(virtDBusManagerFreep) virtDBusManager *manager =3D NULL; + _cleanup_(virtDBusConnectFreep) virtDBusConnect *connect =3D NULL; int r; =20 - manager =3D calloc(1, sizeof(virtDBusManager)); + connect =3D calloc(1, sizeof(virtDBusConnect)); for (int i =3D 0; i < VIR_DOMAIN_EVENT_ID_LAST; i +=3D 1) - manager->callback_ids[i] =3D -1; + connect->callback_ids[i] =3D -1; =20 - manager->bus =3D sd_bus_ref(bus); + connect->bus =3D sd_bus_ref(bus); =20 - manager->connection =3D virConnectOpenAuth(uri, virConnectAuthPtrDefau= lt, 0); - if (!manager->connection) + connect->connection =3D virConnectOpenAuth(uri, virConnectAuthPtrDefau= lt, 0); + if (!connect->connection) return -EINVAL; =20 - virtDBusEventsRegister(manager); + virtDBusEventsRegister(connect); =20 - r =3D sd_bus_add_object_vtable(manager->bus, + r =3D sd_bus_add_object_vtable(connect->bus, NULL, - "/org/libvirt/Manager", - "org.libvirt.Manager", - virt_manager_vtable, - manager); + "/org/libvirt/Connect", + "org.libvirt.Connect", + virt_connect_vtable, + connect); if (r < 0) return r; =20 - r =3D sd_bus_add_node_enumerator(bus, NULL, "/org/libvirt/domain", vir= tDBusManagerEnumarateDomains, manager); + r =3D sd_bus_add_node_enumerator(bus, NULL, "/org/libvirt/domain", + virtDBusConnectEnumarateDomains, connec= t); if (r < 0) return r; =20 - if ((r =3D virtDBusDomainRegister(manager, bus) < 0)) + if ((r =3D virtDBusDomainRegister(connect, bus) < 0)) return r; =20 - *managerp =3D manager; - manager =3D NULL; + *connectp =3D connect; + connect =3D NULL; =20 return 0; } =20 -virtDBusManager * -virtDBusManagerFree(virtDBusManager *manager) +virtDBusConnect * +virtDBusConnectFree(virtDBusConnect *connect) { - if (manager->bus) - sd_bus_unref(manager->bus); + if (connect->bus) + sd_bus_unref(connect->bus); =20 - if (manager->connection) { + if (connect->connection) { for (int i =3D 0; i < VIR_DOMAIN_EVENT_ID_LAST; i +=3D 1) { - if (manager->callback_ids[i] >=3D 0) - virConnectDomainEventDeregisterAny(manager->connection, ma= nager->callback_ids[i]); + if (connect->callback_ids[i] >=3D 0) + virConnectDomainEventDeregisterAny(connect->connection, co= nnect->callback_ids[i]); } =20 - virConnectClose(manager->connection); + virConnectClose(connect->connection); } =20 - free(manager); + free(connect); =20 return NULL; } =20 void -virtDBusManagerFreep(virtDBusManager **managerp) +virtDBusConnectFreep(virtDBusConnect **connectp) { - if (*managerp) - virtDBusManagerFree(*managerp); + if (*connectp) + virtDBusConnectFree(*connectp); } diff --git a/src/manager.h b/src/connect.h similarity index 53% rename from src/manager.h rename to src/connect.h index a1fefa6..5d64a10 100644 --- a/src/manager.h +++ b/src/connect.h @@ -5,16 +5,16 @@ #include #include =20 -struct virtDBusManager { +struct virtDBusConnect { sd_bus *bus; virConnectPtr connection; =20 int callback_ids[VIR_DOMAIN_EVENT_ID_LAST]; }; -typedef struct virtDBusManager virtDBusManager; +typedef struct virtDBusConnect virtDBusConnect; =20 -int virtDBusManagerNew(virtDBusManager **managerp, +int virtDBusConnectNew(virtDBusConnect **connectp, sd_bus *bus, const char *uri); -virtDBusManager *virtDBusManagerFree(virtDBusManager *manager); -void virtDBusManagerFreep(virtDBusManager **managerp); +virtDBusConnect *virtDBusConnectFree(virtDBusConnect *connect); +void virtDBusConnectFreep(virtDBusConnect **connectp); diff --git a/src/domain.c b/src/domain.c index 5527778..a3e1d0b 100644 --- a/src/domain.c +++ b/src/domain.c @@ -10,11 +10,11 @@ virtDBusDomainGetName(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; const char *name =3D ""; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -34,11 +34,11 @@ virtDBusDomainGetUUID(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; char uuid[VIR_UUID_STRING_BUFLEN] =3D ""; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -56,10 +56,10 @@ virtDBusDomainGetId(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "u", 0); =20 @@ -75,10 +75,10 @@ virtDBusDomainGetVcpus(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "u", 0); =20 @@ -94,11 +94,11 @@ virtDBusDomainGetOsType(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; _cleanup_(virtDBusUtilFreep) char *os_type =3D NULL; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -118,11 +118,11 @@ virtDBusDomainGetActive(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int active; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "b", 0); =20 @@ -142,11 +142,11 @@ virtDBusDomainGetPersistent(sd_bus *bus VIR_ATTR_UNUS= ED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int persistent; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "b", 0); =20 @@ -166,12 +166,12 @@ virtDBusDomainGetState(sd_bus *bus VIR_ATTR_UNUSED, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int state =3D 0; const char *string; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -217,11 +217,11 @@ virtDBusDomainGetAutostart(sd_bus *bus VIR_ATTR_UNUSE= D, void *userdata, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int autostart =3D 0; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "b", 0); =20 @@ -235,13 +235,13 @@ virtDBusDomainGetXMLDesc(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; _cleanup_(virtDBusUtilFreep) char *description =3D NULL; uint32_t flags; int r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -273,7 +273,7 @@ virtDBusDomainGetStats(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; virDomainPtr domains[2]; _cleanup_(virtDBusDomainStatsRecordListFreep) virDomainStatsRecordPtr = *records =3D NULL; @@ -285,7 +285,7 @@ virtDBusDomainGetStats(sd_bus_message *message, if (r < 0) return r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -316,11 +316,11 @@ virtDBusDomainShutdown(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -341,11 +341,11 @@ virtDBusDomainDestroy(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -366,7 +366,7 @@ virtDBusDomainReboot(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; uint32_t flags; int r; @@ -375,7 +375,7 @@ virtDBusDomainReboot(sd_bus_message *message, if (r < 0) return r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -396,7 +396,7 @@ virtDBusDomainReset(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; uint32_t flags; int r; @@ -405,7 +405,7 @@ virtDBusDomainReset(sd_bus_message *message, if (r < 0) return r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -426,11 +426,11 @@ virtDBusDomainCreate(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -451,11 +451,11 @@ virtDBusDomainUndefine(sd_bus_message *message, void *userdata, sd_bus_error *error) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int r; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(manager->connection, + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, sd_bus_message_get_path(mess= age)); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, @@ -509,7 +509,7 @@ virtDBusDomainLookup(sd_bus *bus VIR_ATTR_UNUSED, void **found, sd_bus_error *error VIR_ATTR_UNUSED) { - virtDBusManager *manager =3D userdata; + virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilFreep) char *name =3D NULL; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int r; @@ -521,22 +521,22 @@ virtDBusDomainLookup(sd_bus *bus VIR_ATTR_UNUSED, if (*name =3D=3D '\0') return 0; =20 - domain =3D virDomainLookupByUUIDString(manager->connection, name); + domain =3D virDomainLookupByUUIDString(connect->connection, name); if (!domain) return 0; =20 /* * There's no way to unref the pointer we're returning here. So, - * return the manager object and look up the domain again in the + * return the connect object and look up the domain again in the * domain_* callbacks. */ - *found =3D manager; + *found =3D connect; =20 return 1; } =20 int -virtDBusDomainRegister(virtDBusManager *manager, +virtDBusDomainRegister(virtDBusConnect *connect, sd_bus *bus) { return sd_bus_add_fallback_vtable(bus, @@ -545,5 +545,5 @@ virtDBusDomainRegister(virtDBusManager *manager, "org.libvirt.Domain", virt_domain_vtable, virtDBusDomainLookup, - manager); + connect); } diff --git a/src/domain.h b/src/domain.h index 165e452..adadc6a 100644 --- a/src/domain.h +++ b/src/domain.h @@ -1,10 +1,10 @@ #pragma once =20 -#include "manager.h" +#include "connect.h" =20 #include #include =20 int -virtDBusDomainRegister(virtDBusManager *manager, +virtDBusDomainRegister(virtDBusConnect *connect, sd_bus *bus); diff --git a/src/events.c b/src/events.c index 731ef02..92f280d 100644 --- a/src/events.c +++ b/src/events.c @@ -12,7 +12,7 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection VI= R_ATTR_UNUSED, int detail VIR_ATTR_UNUSED, void *opaque) { - virtDBusManager *manager =3D opaque; + virtDBusConnect *connect =3D opaque; _cleanup_(sd_bus_message_unrefp) sd_bus_message *message =3D NULL; const char *signal =3D NULL; const char *name; @@ -51,10 +51,10 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection = VIR_ATTR_UNUSED, return 0; } =20 - r =3D sd_bus_message_new_signal(manager->bus, + r =3D sd_bus_message_new_signal(connect->bus, &message, - "/org/libvirt/Manager", - "org.libvirt.Manager", + "/org/libvirt/Connect", + "org.libvirt.connect", signal); if (r < 0) return r; @@ -66,7 +66,7 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection VI= R_ATTR_UNUSED, if (r < 0) return r; =20 - return sd_bus_send(manager->bus, message, NULL); + return sd_bus_send(connect->bus, message, NULL); } =20 static int @@ -75,14 +75,14 @@ virtDBusEventsDomainDeviceAdded(virConnectPtr connectio= n VIR_ATTR_UNUSED, const char *device, void *opaque) { - virtDBusManager *manager =3D opaque; + virtDBusConnect *connect =3D opaque; _cleanup_(sd_bus_message_unrefp) sd_bus_message *message =3D NULL; _cleanup_(virtDBusUtilFreep) char *path =3D NULL; int r; =20 path =3D virtDBusUtilBusPathForVirDomain(domain); =20 - r =3D sd_bus_message_new_signal(manager->bus, + r =3D sd_bus_message_new_signal(connect->bus, &message, path, "org.libvirt.Domain", @@ -94,7 +94,7 @@ virtDBusEventsDomainDeviceAdded(virConnectPtr connection = VIR_ATTR_UNUSED, if (r < 0) return r; =20 - return sd_bus_send(manager->bus, message, NULL); + return sd_bus_send(connect->bus, message, NULL); } =20 static int @@ -103,14 +103,14 @@ virtDBusEventsDomainDeviceRemoved(virConnectPtr conne= ction VIR_ATTR_UNUSED, const char *device, void *opaque) { - virtDBusManager *manager =3D opaque; + virtDBusConnect *connect =3D opaque; _cleanup_(sd_bus_message_unrefp) sd_bus_message *message =3D NULL; _cleanup_(virtDBusUtilFreep) char *path =3D NULL; int r; =20 path =3D virtDBusUtilBusPathForVirDomain(domain); =20 - r =3D sd_bus_message_new_signal(manager->bus, + r =3D sd_bus_message_new_signal(connect->bus, &message, path, "org.libvirt.Domain", @@ -122,7 +122,7 @@ virtDBusEventsDomainDeviceRemoved(virConnectPtr connect= ion VIR_ATTR_UNUSED, if (r < 0) return r; =20 - return sd_bus_send(manager->bus, message, NULL); + return sd_bus_send(connect->bus, message, NULL); } =20 static int @@ -132,7 +132,7 @@ virtDBusEventsDomainDiskChange(virConnectPtr connection= VIR_ATTR_UNUSED, int reason, void *opaque) { - virtDBusManager *manager =3D opaque; + virtDBusConnect *connect =3D opaque; _cleanup_(sd_bus_message_unrefp) sd_bus_message *message =3D NULL; _cleanup_(virtDBusUtilFreep) char *path =3D NULL; const char *reasonstr; @@ -140,7 +140,7 @@ virtDBusEventsDomainDiskChange(virConnectPtr connection= VIR_ATTR_UNUSED, =20 path =3D virtDBusUtilBusPathForVirDomain(domain); =20 - r =3D sd_bus_message_new_signal(manager->bus, + r =3D sd_bus_message_new_signal(connect->bus, &message, path, "org.libvirt.Domain", @@ -164,7 +164,7 @@ virtDBusEventsDomainDiskChange(virConnectPtr connection= VIR_ATTR_UNUSED, if (r < 0) return r; =20 - return sd_bus_send(manager->bus, message, NULL); + return sd_bus_send(connect->bus, message, NULL); } =20 static int @@ -176,7 +176,7 @@ virtDBusEventsDomainTrayChange(virConnectPtr connection= VIR_ATTR_UNUSED, int reason, void *opaque) { - virtDBusManager *manager =3D opaque; + virtDBusConnect *connect =3D opaque; _cleanup_(sd_bus_message_unrefp) sd_bus_message *message =3D NULL; _cleanup_(virtDBusUtilFreep) char *path =3D NULL; const char *reasonstr; @@ -184,7 +184,7 @@ virtDBusEventsDomainTrayChange(virConnectPtr connection= VIR_ATTR_UNUSED, =20 path =3D virtDBusUtilBusPathForVirDomain(domain); =20 - r =3D sd_bus_message_new_signal(manager->bus, + r =3D sd_bus_message_new_signal(connect->bus, &message, path, "org.libvirt.Domain", @@ -208,44 +208,44 @@ virtDBusEventsDomainTrayChange(virConnectPtr connecti= on VIR_ATTR_UNUSED, if (r < 0) return r; =20 - return sd_bus_send(manager->bus, message, NULL); + return sd_bus_send(connect->bus, message, NULL); } =20 static void -virtDBusEventsRegisterEvent(virtDBusManager *manager, +virtDBusEventsRegisterEvent(virtDBusConnect *connect, int id, virConnectDomainEventGenericCallback callback) { - assert(manager->callback_ids[id] =3D=3D -1); + assert(connect->callback_ids[id] =3D=3D -1); =20 - manager->callback_ids[id] =3D virConnectDomainEventRegisterAny(manager= ->connection, + connect->callback_ids[id] =3D virConnectDomainEventRegisterAny(connect= ->connection, NULL, id, VIR_DOMAI= N_EVENT_CALLBACK(callback), - manager, + connect, NULL); } =20 void -virtDBusEventsRegister(virtDBusManager *manager) +virtDBusEventsRegister(virtDBusConnect *connect) { - virtDBusEventsRegisterEvent(manager, + virtDBusEventsRegisterEvent(connect, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDo= mainLifecycle)); =20 - virtDBusEventsRegisterEvent(manager, + virtDBusEventsRegisterEvent(connect, VIR_DOMAIN_EVENT_ID_DEVICE_ADDED, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDo= mainDeviceAdded)); =20 - virtDBusEventsRegisterEvent(manager, + virtDBusEventsRegisterEvent(connect, VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDo= mainDeviceRemoved)); =20 - virtDBusEventsRegisterEvent(manager, + virtDBusEventsRegisterEvent(connect, VIR_DOMAIN_EVENT_ID_DISK_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDo= mainTrayChange)); =20 - virtDBusEventsRegisterEvent(manager, + virtDBusEventsRegisterEvent(connect, VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, VIR_DOMAIN_EVENT_CALLBACK(virtDBusEventsDo= mainDiskChange)); =20 diff --git a/src/events.h b/src/events.h index d64bd94..f588c85 100644 --- a/src/events.h +++ b/src/events.h @@ -1,9 +1,9 @@ #pragma once =20 -#include "manager.h" +#include "connect.h" =20 #include =20 =20 void -virtDBusEventsRegister(virtDBusManager *manager); +virtDBusEventsRegister(virtDBusConnect *connect); diff --git a/src/main.c b/src/main.c index 225fb46..95522f5 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,6 @@ #include "config.h" =20 -#include "manager.h" +#include "connect.h" #include "util.h" =20 #include @@ -98,7 +98,7 @@ main(int argc, char *argv[]) bool system_bus; const char *uri =3D NULL; =20 - _cleanup_(virtDBusManagerFreep) virtDBusManager *manager =3D NULL; + _cleanup_(virtDBusConnectFreep) virtDBusConnect *connect =3D NULL; _cleanup_(sd_bus_unrefp) sd_bus *bus =3D NULL; _cleanup_(virtDBusUtilClosep) int signal_fd =3D -1; _cleanup_(virtDBusVirEventRemoveHandlep) int bus_watch =3D -1; @@ -170,9 +170,9 @@ main(int argc, char *argv[]) return EXIT_FAILURE; } =20 - r =3D virtDBusManagerNew(&manager, bus, uri); + r =3D virtDBusConnectNew(&connect, bus, uri); if (r < 0) { - fprintf(stderr, "Failed to connect to libvirt"); + fprintf(stderr, "Failed to connect to libvirt."); return EXIT_FAILURE; } =20 diff --git a/test/Makefile.am b/test/Makefile.am index a7f22d0..4651d08 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -2,7 +2,7 @@ test_helpers =3D \ libvirttest.py =20 test_programs =3D \ - test_manager.py \ + test_connect.py \ test_domain.py =20 TESTS =3D $(test_programs) diff --git a/test/libvirttest.py b/test/libvirttest.py index f5c2020..2c735e9 100644 --- a/test/libvirttest.py +++ b/test/libvirttest.py @@ -38,8 +38,8 @@ class TestCase(unittest.TestCase): else: raise TimeoutError('error starting libvirt-dbus') =20 - obj =3D self.bus.get_object('org.libvirt', '/org/libvirt/Manager') - self.manager =3D dbus.Interface(obj, 'org.libvirt.Manager') + obj =3D self.bus.get_object('org.libvirt', '/org/libvirt/Connect') + self.connect =3D dbus.Interface(obj, 'org.libvirt.Connect') =20 def tearDown(self): self.daemon.terminate() diff --git a/test/test_manager.py b/test/test_connect.py similarity index 79% rename from test/test_manager.py rename to test/test_connect.py index 1f58b9d..4ec3fe0 100755 --- a/test/test_manager.py +++ b/test/test_connect.py @@ -14,9 +14,9 @@ minimal_xml =3D ''' ''' =20 -class TestManager(libvirttest.TestCase): +class TestConnect(libvirttest.TestCase): def test_list_domains(self): - domains =3D self.manager.ListDomains(0) + domains =3D self.connect.ListDomains(0) self.assertEqual(type(domains), dbus.Array) self.assertEqual(len(domains), 1) =20 @@ -33,9 +33,9 @@ class TestManager(libvirttest.TestCase): self.assertEqual(type(path), dbus.ObjectPath) self.loop.quit() =20 - self.manager.connect_to_signal('DomainStarted', domain_started) + self.connect.connect_to_signal('DomainStarted', domain_started) =20 - path =3D self.manager.CreateXML(minimal_xml, 0) + path =3D self.connect.CreateXML(minimal_xml, 0) self.assertEqual(type(path), dbus.ObjectPath) =20 self.main_loop() @@ -46,9 +46,9 @@ class TestManager(libvirttest.TestCase): self.assertEqual(type(path), dbus.ObjectPath) self.loop.quit() =20 - self.manager.connect_to_signal('DomainDefined', domain_defined) + self.connect.connect_to_signal('DomainDefined', domain_defined) =20 - path =3D self.manager.DefineXML(minimal_xml) + path =3D self.connect.DefineXML(minimal_xml) self.assertEqual(type(path), dbus.ObjectPath) =20 self.main_loop() diff --git a/test/test_domain.py b/test/test_domain.py index 2b15285..b1ab7a5 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -6,7 +6,7 @@ import unittest =20 class TestDomain(libvirttest.TestCase): def domain(self): - path =3D self.manager.ListDomains(0)[0] + path =3D self.connect.ListDomains(0)[0] obj =3D self.bus.get_object('org.libvirt', path) return obj, dbus.Interface(obj, 'org.libvirt.Domain') =20 @@ -42,7 +42,7 @@ class TestDomain(libvirttest.TestCase): self.assertEqual(type(path), dbus.ObjectPath) self.loop.quit() =20 - self.manager.connect_to_signal('DomainStopped', domain_stopped) + self.connect.connect_to_signal('DomainStopped', domain_stopped) =20 obj, domain =3D self.domain() domain.Shutdown() @@ -58,7 +58,7 @@ class TestDomain(libvirttest.TestCase): self.assertEqual(type(path), dbus.ObjectPath) self.loop.quit() =20 - self.manager.connect_to_signal('DomainUndefined', domain_undefined) + self.connect.connect_to_signal('DomainUndefined', domain_undefined) =20 _, domain =3D self.domain() domain.Shutdown() --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641399564807.1483675418158; Mon, 22 Jan 2018 09:16:39 -0800 (PST) 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 ED174780F2; Mon, 22 Jan 2018 17:16:37 +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 B86AE9CA8; Mon, 22 Jan 2018 17:16:37 +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 60E8C3FC74; Mon, 22 Jan 2018 17:16:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGL1e028537 for ; Mon, 22 Jan 2018 12:16:21 -0500 Received: by smtp.corp.redhat.com (Postfix) id 1C22C4A3; Mon, 22 Jan 2018 17:16:21 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 435F45C3F7; Mon, 22 Jan 2018 17:16:19 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:02 +0100 Message-Id: <05e209a9f8943af758028f7750be9a092d0f0b5e.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 04/11] connect: implement lazy connection 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.27]); Mon, 22 Jan 2018 17:16:38 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Open a connection to libvirt only when it is required. Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 41 +++++++++++++++++++++++++++++++++++------ src/connect.h | 1 + 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/connect.c b/src/connect.c index cb19c39..8d958c2 100644 --- a/src/connect.c +++ b/src/connect.c @@ -6,6 +6,23 @@ #include #include =20 +static int +virtDBusConnectOpen(virtDBusConnect *connect, + sd_bus_error *error) +{ + if (connect->connection) + return 0; + + connect->connection =3D virConnectOpenAuth(connect->uri, + virConnectAuthPtrDefault, 0); + if (!connect->connection) + return virtDBusUtilSetLastVirtError(error); + + virtDBusEventsRegister(connect); + + return 0; +} + static int virtDBusConnectEnumarateDomains(sd_bus *bus VIR_ATTR_UNUSED, const char *path VIR_ATTR_UNUSED, @@ -17,6 +34,11 @@ virtDBusConnectEnumarateDomains(sd_bus *bus VIR_ATTR_UNU= SED, _cleanup_(virtDBusUtilVirDomainListFreep) virDomainPtr *domains =3D NU= LL; _cleanup_(virtDBusUtilStrvFreep) char **paths =3D NULL; int n_domains; + int r; + + r =3D virtDBusConnectOpen(connect, error); + if (r < 0) + return r; =20 n_domains =3D virConnectListAllDomains(connect->connection, &domains, = 0); if (n_domains < 0) @@ -44,6 +66,10 @@ virtDBusConnectListDomains(sd_bus_message *message, uint32_t flags; int r; =20 + r =3D virtDBusConnectOpen(connect, error); + if (r < 0) + return r; + r =3D sd_bus_message_read(message, "u", &flags); if (r < 0) return r; @@ -89,6 +115,10 @@ virtDBusConnectCreateXML(sd_bus_message *message, _cleanup_(virtDBusUtilFreep) char *path =3D NULL; int r; =20 + r =3D virtDBusConnectOpen(connect, error); + if (r < 0) + return r; + r =3D sd_bus_message_read(message, "su", &xml, &flags); if (r < 0) return r; @@ -113,6 +143,10 @@ virtDBusConnectDefineXML(sd_bus_message *message, _cleanup_(virtDBusUtilFreep) char *path =3D NULL; int r; =20 + r =3D virtDBusConnectOpen(connect, error); + if (r < 0) + return r; + r =3D sd_bus_message_read(message, "s", &xml); if (r < 0) return r; @@ -159,12 +193,7 @@ virtDBusConnectNew(virtDBusConnect **connectp, connect->callback_ids[i] =3D -1; =20 connect->bus =3D sd_bus_ref(bus); - - connect->connection =3D virConnectOpenAuth(uri, virConnectAuthPtrDefau= lt, 0); - if (!connect->connection) - return -EINVAL; - - virtDBusEventsRegister(connect); + connect->uri =3D uri; =20 r =3D sd_bus_add_object_vtable(connect->bus, NULL, diff --git a/src/connect.h b/src/connect.h index 5d64a10..52e8279 100644 --- a/src/connect.h +++ b/src/connect.h @@ -7,6 +7,7 @@ =20 struct virtDBusConnect { sd_bus *bus; + const char *uri; virConnectPtr connection; =20 int callback_ids[VIR_DOMAIN_EVENT_ID_LAST]; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641394386769.5515081311218; Mon, 22 Jan 2018 09:16:34 -0800 (PST) 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 3A6615B2FC; Mon, 22 Jan 2018 17:16:33 +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 0783A6267D; Mon, 22 Jan 2018 17:16:33 +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 B8D9918033DC; Mon, 22 Jan 2018 17:16:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGMD1028688 for ; Mon, 22 Jan 2018 12:16:22 -0500 Received: by smtp.corp.redhat.com (Postfix) id 95FE01715A; Mon, 22 Jan 2018 17:16:22 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8770617145; Mon, 22 Jan 2018 17:16:21 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:03 +0100 Message-Id: <9705ef69046a1ca78b66b2dfc831e50a2c239ff4.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 05/11] connect: don't use default libvirt authentication callback 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.26]); Mon, 22 Jan 2018 17:16:33 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" We need to implement our own authentication callback because the default one ask for credentials using STDIO. This is not suitable behavior for daemon. For now we will require usage of client configuration file for libvirt to provide credentials for drivers that require authentication [1]. [1] Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/connect.c b/src/connect.c index 8d958c2..9de764c 100644 --- a/src/connect.c +++ b/src/connect.c @@ -6,6 +6,34 @@ #include #include =20 +static int virtDBusConnectCredType[] =3D { + VIR_CRED_AUTHNAME, + VIR_CRED_ECHOPROMPT, + VIR_CRED_REALM, + VIR_CRED_PASSPHRASE, + VIR_CRED_NOECHOPROMPT, + VIR_CRED_EXTERNAL, +}; + +static int +virtDBusConnectAuthCallback(virConnectCredentialPtr cred VIR_ATTR_UNUSED, + unsigned int ncred VIR_ATTR_UNUSED, + void *cbdata) +{ + sd_bus_error *error =3D cbdata; + + return virtDBusUtilSetError(error, + "Interactive authentication is not support= ed. " + "Use client configuration file for libvirt= ."); +} + +static virConnectAuth virtDBusConnectAuth =3D { + virtDBusConnectCredType, + VIRT_ARRAY_CARDINALITY(virtDBusConnectCredType), + virtDBusConnectAuthCallback, + NULL, +}; + static int virtDBusConnectOpen(virtDBusConnect *connect, sd_bus_error *error) @@ -13,8 +41,10 @@ virtDBusConnectOpen(virtDBusConnect *connect, if (connect->connection) return 0; =20 + virtDBusConnectAuth.cbdata =3D error; + connect->connection =3D virConnectOpenAuth(connect->uri, - virConnectAuthPtrDefault, 0); + &virtDBusConnectAuth, 0); if (!connect->connection) return virtDBusUtilSetLastVirtError(error); =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641394819896.0826304462963; Mon, 22 Jan 2018 09:16:34 -0800 (PST) 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 2A73CC056789; Mon, 22 Jan 2018 17:16:33 +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 EFCD667641; Mon, 22 Jan 2018 17:16:32 +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 B60DB3FAEA; Mon, 22 Jan 2018 17:16:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGNFI028708 for ; Mon, 22 Jan 2018 12:16:23 -0500 Received: by smtp.corp.redhat.com (Postfix) id BA2D65F704; Mon, 22 Jan 2018 17:16:23 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id E42FC5E1D3; Mon, 22 Jan 2018 17:16:22 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:04 +0100 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 06/11] connect: implement reconnect functionality to libvirt 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.32]); Mon, 22 Jan 2018 17:16:33 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" If the connection dies for some reason between D-Bus calls we need to properly reconnect because the current connection is not usable anymore. Without this the only solution would be to restart the libvirt-dbus daemon. Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/connect.c b/src/connect.c index 9de764c..10183f3 100644 --- a/src/connect.c +++ b/src/connect.c @@ -4,6 +4,7 @@ #include "util.h" =20 #include +#include #include =20 static int virtDBusConnectCredType[] =3D { @@ -34,12 +35,34 @@ static virConnectAuth virtDBusConnectAuth =3D { NULL, }; =20 +static void +virtDBusConnectClose(virtDBusConnect *connect, + bool deregisterEvents) +{ + + for (int i =3D 0; i < VIR_DOMAIN_EVENT_ID_LAST; i +=3D 1) { + if (connect->callback_ids[i] >=3D 0) { + if (deregisterEvents) { + virConnectDomainEventDeregisterAny(connect->connection, + connect->callback_ids[i= ]); + } + connect->callback_ids[i] =3D -1; + } + } + + virConnectClose(connect->connection); +} + static int virtDBusConnectOpen(virtDBusConnect *connect, sd_bus_error *error) { - if (connect->connection) - return 0; + if (connect->connection) { + if (virConnectIsAlive(connect->connection)) + return 0; + else + virtDBusConnectClose(connect, false); + } =20 virtDBusConnectAuth.cbdata =3D error; =20 @@ -254,14 +277,8 @@ virtDBusConnectFree(virtDBusConnect *connect) if (connect->bus) sd_bus_unref(connect->bus); =20 - if (connect->connection) { - for (int i =3D 0; i < VIR_DOMAIN_EVENT_ID_LAST; i +=3D 1) { - if (connect->callback_ids[i] >=3D 0) - virConnectDomainEventDeregisterAny(connect->connection, co= nnect->callback_ids[i]); - } - - virConnectClose(connect->connection); - } + if (connect->connection) + virtDBusConnectClose(connect, true); =20 free(connect); =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 15166413988481.6580337776474607; Mon, 22 Jan 2018 09:16:38 -0800 (PST) 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 6CD432F9451; Mon, 22 Jan 2018 17:16:37 +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 372E2756C5; Mon, 22 Jan 2018 17:16:37 +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 DF5323FB20; Mon, 22 Jan 2018 17:16:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGPB3028721 for ; Mon, 22 Jan 2018 12:16:25 -0500 Received: by smtp.corp.redhat.com (Postfix) id C14AF1715D; Mon, 22 Jan 2018 17:16:25 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3B04D17184; Mon, 22 Jan 2018 17:16:23 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:05 +0100 Message-Id: <28142221d1d7c821b8380be320103097748036a6.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 07/11] connect: move domain related code to domain.c 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.29]); Mon, 22 Jan 2018 17:16:37 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 7 ++----- src/connect.h | 2 ++ src/domain.c | 7 +++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/connect.c b/src/connect.c index 10183f3..314277f 100644 --- a/src/connect.c +++ b/src/connect.c @@ -248,6 +248,8 @@ virtDBusConnectNew(virtDBusConnect **connectp, connect->bus =3D sd_bus_ref(bus); connect->uri =3D uri; =20 + connect->enumerateDomains =3D virtDBusConnectEnumarateDomains; + r =3D sd_bus_add_object_vtable(connect->bus, NULL, "/org/libvirt/Connect", @@ -257,11 +259,6 @@ virtDBusConnectNew(virtDBusConnect **connectp, if (r < 0) return r; =20 - r =3D sd_bus_add_node_enumerator(bus, NULL, "/org/libvirt/domain", - virtDBusConnectEnumarateDomains, connec= t); - if (r < 0) - return r; - if ((r =3D virtDBusDomainRegister(connect, bus) < 0)) return r; =20 diff --git a/src/connect.h b/src/connect.h index 52e8279..de1aae7 100644 --- a/src/connect.h +++ b/src/connect.h @@ -10,6 +10,8 @@ struct virtDBusConnect { const char *uri; virConnectPtr connection; =20 + sd_bus_node_enumerator_t enumerateDomains; + int callback_ids[VIR_DOMAIN_EVENT_ID_LAST]; }; typedef struct virtDBusConnect virtDBusConnect; diff --git a/src/domain.c b/src/domain.c index a3e1d0b..bc465b0 100644 --- a/src/domain.c +++ b/src/domain.c @@ -539,6 +539,13 @@ int virtDBusDomainRegister(virtDBusConnect *connect, sd_bus *bus) { + int r; + + r =3D sd_bus_add_node_enumerator(bus, NULL, "/org/libvirt/domain", + connect->enumerateDomains, connect); + if (r < 0) + return r; + return sd_bus_add_fallback_vtable(bus, NULL, "/org/libvirt/domain", --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641402249534.024040646474; Mon, 22 Jan 2018 09:16:42 -0800 (PST) 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 D474E272D1; Mon, 22 Jan 2018 17:16:40 +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 AB6EC87CF; Mon, 22 Jan 2018 17:16:40 +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 674A518033DE; Mon, 22 Jan 2018 17:16:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGRXR028733 for ; Mon, 22 Jan 2018 12:16:27 -0500 Received: by smtp.corp.redhat.com (Postfix) id 3FD115F715; Mon, 22 Jan 2018 17:16:27 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3EBFC5E1D3; Mon, 22 Jan 2018 17:16:25 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:06 +0100 Message-Id: <2b837ada4b2689e3af68f3119df584fc335341ff.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 08/11] connect: store connect path in connect structure 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.39]); Mon, 22 Jan 2018 17:16:41 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This prepares for multiple connection objects since each object will have different path based on the driver name. Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 3 ++- src/connect.h | 1 + src/events.c | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/connect.c b/src/connect.c index 314277f..3aec99e 100644 --- a/src/connect.c +++ b/src/connect.c @@ -247,12 +247,13 @@ virtDBusConnectNew(virtDBusConnect **connectp, =20 connect->bus =3D sd_bus_ref(bus); connect->uri =3D uri; + connect->connectPath =3D "/org/libvirt/Connect"; =20 connect->enumerateDomains =3D virtDBusConnectEnumarateDomains; =20 r =3D sd_bus_add_object_vtable(connect->bus, NULL, - "/org/libvirt/Connect", + connect->connectPath, "org.libvirt.Connect", virt_connect_vtable, connect); diff --git a/src/connect.h b/src/connect.h index de1aae7..489ce84 100644 --- a/src/connect.h +++ b/src/connect.h @@ -8,6 +8,7 @@ struct virtDBusConnect { sd_bus *bus; const char *uri; + const char *connectPath; virConnectPtr connection; =20 sd_bus_node_enumerator_t enumerateDomains; diff --git a/src/events.c b/src/events.c index 92f280d..d2d7f6b 100644 --- a/src/events.c +++ b/src/events.c @@ -53,7 +53,7 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection VI= R_ATTR_UNUSED, =20 r =3D sd_bus_message_new_signal(connect->bus, &message, - "/org/libvirt/Connect", + connect->connectPath, "org.libvirt.connect", signal); if (r < 0) --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641401626721.7488527554041; Mon, 22 Jan 2018 09:16:41 -0800 (PST) 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 6E6C45F7AD; Mon, 22 Jan 2018 17:16:40 +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 370979F52; Mon, 22 Jan 2018 17:16:40 +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 F38994EA1B; Mon, 22 Jan 2018 17:16:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGTCB028747 for ; Mon, 22 Jan 2018 12:16:29 -0500 Received: by smtp.corp.redhat.com (Postfix) id 018B85F704; Mon, 22 Jan 2018 17:16:29 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2AEB45E1D3; Mon, 22 Jan 2018 17:16:27 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:07 +0100 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 09/11] domain: derive domain path from connect path 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.39]); Mon, 22 Jan 2018 17:16:40 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Each connection have its own domains so we must make the domain path as a sub-path of the specific connection. Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 12 +++++++---- src/connect.h | 1 + src/domain.c | 64 ++++++++++++++++++++++++++++++++++++++++---------------= ---- src/events.c | 10 +++++----- src/util.c | 10 ++++++---- src/util.h | 6 ++++-- 6 files changed, 68 insertions(+), 35 deletions(-) diff --git a/src/connect.c b/src/connect.c index 3aec99e..5249eba 100644 --- a/src/connect.c +++ b/src/connect.c @@ -100,7 +100,8 @@ virtDBusConnectEnumarateDomains(sd_bus *bus VIR_ATTR_UN= USED, paths =3D calloc(n_domains + 1, sizeof(char *)); =20 for (int i =3D 0; i < n_domains; i +=3D 1) - paths[i] =3D virtDBusUtilBusPathForVirDomain(domains[i]); + paths[i] =3D virtDBusUtilBusPathForVirDomain(domains[i], + connect->domainPath); =20 *nodes =3D paths; paths =3D NULL; @@ -142,7 +143,8 @@ virtDBusConnectListDomains(sd_bus_message *message, for (int i =3D 0; domains[i] !=3D NULL; i +=3D 1) { _cleanup_(virtDBusUtilFreep) char *path =3D NULL; =20 - path =3D virtDBusUtilBusPathForVirDomain(domains[i]); + path =3D virtDBusUtilBusPathForVirDomain(domains[i], + connect->domainPath); =20 r =3D sd_bus_message_append(reply, "o", path); if (r < 0) @@ -180,7 +182,7 @@ virtDBusConnectCreateXML(sd_bus_message *message, if (!domain) return virtDBusUtilSetLastVirtError(error); =20 - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 return sd_bus_reply_method_return(message, "o", path); } @@ -208,7 +210,7 @@ virtDBusConnectDefineXML(sd_bus_message *message, if (!domain) return virtDBusUtilSetLastVirtError(error); =20 - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 return sd_bus_reply_method_return(message, "o", path); } @@ -278,6 +280,8 @@ virtDBusConnectFree(virtDBusConnect *connect) if (connect->connection) virtDBusConnectClose(connect, true); =20 + free(connect->domainPath); + free(connect); =20 return NULL; diff --git a/src/connect.h b/src/connect.h index 489ce84..bed2c7e 100644 --- a/src/connect.h +++ b/src/connect.h @@ -9,6 +9,7 @@ struct virtDBusConnect { sd_bus *bus; const char *uri; const char *connectPath; + char *domainPath; virConnectPtr connection; =20 sd_bus_node_enumerator_t enumerateDomains; diff --git a/src/domain.c b/src/domain.c index bc465b0..33ed2b3 100644 --- a/src/domain.c +++ b/src/domain.c @@ -1,6 +1,9 @@ +#define _GNU_SOURCE #include "domain.h" #include "util.h" =20 +#include + static int virtDBusDomainGetName(sd_bus *bus VIR_ATTR_UNUSED, const char *path, @@ -14,7 +17,8 @@ virtDBusDomainGetName(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; const char *name =3D ""; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -38,7 +42,8 @@ virtDBusDomainGetUUID(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; char uuid[VIR_UUID_STRING_BUFLEN] =3D ""; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -59,7 +64,8 @@ virtDBusDomainGetId(sd_bus *bus VIR_ATTR_UNUSED, virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "u", 0); =20 @@ -78,7 +84,8 @@ virtDBusDomainGetVcpus(sd_bus *bus VIR_ATTR_UNUSED, virtDBusConnect *connect =3D userdata; _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "u", 0); =20 @@ -98,7 +105,8 @@ virtDBusDomainGetOsType(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; _cleanup_(virtDBusUtilFreep) char *os_type =3D NULL; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -122,7 +130,8 @@ virtDBusDomainGetActive(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int active; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "b", 0); =20 @@ -146,7 +155,8 @@ virtDBusDomainGetPersistent(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int persistent; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "b", 0); =20 @@ -171,7 +181,8 @@ virtDBusDomainGetState(sd_bus *bus VIR_ATTR_UNUSED, int state =3D 0; const char *string; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "s", ""); =20 @@ -221,7 +232,8 @@ virtDBusDomainGetAutostart(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int autostart =3D 0; =20 - domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path); + domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, path, + connect->domainPath); if (domain =3D=3D NULL) return sd_bus_message_append(reply, "b", 0); =20 @@ -242,7 +254,8 @@ virtDBusDomainGetXMLDesc(sd_bus_message *message, int r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -286,7 +299,8 @@ virtDBusDomainGetStats(sd_bus_message *message, return r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -321,7 +335,8 @@ virtDBusDomainShutdown(sd_bus_message *message, int r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -346,7 +361,8 @@ virtDBusDomainDestroy(sd_bus_message *message, int r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -376,7 +392,8 @@ virtDBusDomainReboot(sd_bus_message *message, return r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -406,7 +423,8 @@ virtDBusDomainReset(sd_bus_message *message, return r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -431,7 +449,8 @@ virtDBusDomainCreate(sd_bus_message *message, int r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -456,7 +475,8 @@ virtDBusDomainUndefine(sd_bus_message *message, int r; =20 domain =3D virtDBusUtilVirDomainFromBusPath(connect->connection, - sd_bus_message_get_path(mess= age)); + sd_bus_message_get_path(mess= age), + connect->domainPath); if (domain =3D=3D NULL) { return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_UNKNOWN_OBJECT, @@ -514,7 +534,7 @@ virtDBusDomainLookup(sd_bus *bus VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain =3D NULL; int r; =20 - r =3D sd_bus_path_decode(path, "/org/libvirt/domain", &name); + r =3D sd_bus_path_decode(path, connect->domainPath, &name); if (r < 0) return r; =20 @@ -541,14 +561,18 @@ virtDBusDomainRegister(virtDBusConnect *connect, { int r; =20 - r =3D sd_bus_add_node_enumerator(bus, NULL, "/org/libvirt/domain", + r =3D asprintf(&connect->domainPath, "%s/domain", connect->connectPath= ); + if (r < 0) + return r; + + r =3D sd_bus_add_node_enumerator(bus, NULL, connect->domainPath, connect->enumerateDomains, connect); if (r < 0) return r; =20 return sd_bus_add_fallback_vtable(bus, NULL, - "/org/libvirt/domain", + connect->domainPath, "org.libvirt.Domain", virt_domain_vtable, virtDBusDomainLookup, diff --git a/src/events.c b/src/events.c index d2d7f6b..05d5940 100644 --- a/src/events.c +++ b/src/events.c @@ -60,7 +60,7 @@ virtDBusEventsDomainLifecycle(virConnectPtr connection VI= R_ATTR_UNUSED, return r; =20 name =3D virDomainGetName(domain); - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 r =3D sd_bus_message_append(message, "so", name ? : "", path); if (r < 0) @@ -80,7 +80,7 @@ virtDBusEventsDomainDeviceAdded(virConnectPtr connection = VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilFreep) char *path =3D NULL; int r; =20 - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 r =3D sd_bus_message_new_signal(connect->bus, &message, @@ -108,7 +108,7 @@ virtDBusEventsDomainDeviceRemoved(virConnectPtr connect= ion VIR_ATTR_UNUSED, _cleanup_(virtDBusUtilFreep) char *path =3D NULL; int r; =20 - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 r =3D sd_bus_message_new_signal(connect->bus, &message, @@ -138,7 +138,7 @@ virtDBusEventsDomainDiskChange(virConnectPtr connection= VIR_ATTR_UNUSED, const char *reasonstr; int r; =20 - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 r =3D sd_bus_message_new_signal(connect->bus, &message, @@ -182,7 +182,7 @@ virtDBusEventsDomainTrayChange(virConnectPtr connection= VIR_ATTR_UNUSED, const char *reasonstr; int r; =20 - path =3D virtDBusUtilBusPathForVirDomain(domain); + path =3D virtDBusUtilBusPathForVirDomain(domain, connect->domainPath); =20 r =3D sd_bus_message_new_signal(connect->bus, &message, diff --git a/src/util.c b/src/util.c index 6636d0a..d0649fa 100644 --- a/src/util.c +++ b/src/util.c @@ -77,25 +77,27 @@ virtDBusUtilSetError(sd_bus_error *error, } =20 char * -virtDBusUtilBusPathForVirDomain(virDomainPtr domain) +virtDBusUtilBusPathForVirDomain(virDomainPtr domain, + const char *domainPath) { char *path =3D NULL; char uuid[VIR_UUID_STRING_BUFLEN] =3D ""; =20 virDomainGetUUIDString(domain, uuid); - sd_bus_path_encode("/org/libvirt/domain", uuid, &path); + sd_bus_path_encode(domainPath, uuid, &path); =20 return path; } =20 virDomainPtr virtDBusUtilVirDomainFromBusPath(virConnectPtr connection, - const char *path) + const char *path, + const char *domainPath) { _cleanup_(virtDBusUtilFreep) char *name =3D NULL; int r; =20 - r =3D sd_bus_path_decode(path, "/org/libvirt/domain", &name); + r =3D sd_bus_path_decode(path, domainPath, &name); if (r < 0) return NULL; =20 diff --git a/src/util.h b/src/util.h index cb8447d..14b1e9a 100644 --- a/src/util.h +++ b/src/util.h @@ -24,11 +24,13 @@ virtDBusUtilSetError(sd_bus_error *error, const char *message); =20 char * -virtDBusUtilBusPathForVirDomain(virDomainPtr domain); +virtDBusUtilBusPathForVirDomain(virDomainPtr domain, + const char *domainPath); =20 virDomainPtr virtDBusUtilVirDomainFromBusPath(virConnectPtr connection, - const char *path); + const char *path, + const char *domainPath); =20 static inline void virtDBusUtilFreep(void *p) --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641405253834.7596647644318; Mon, 22 Jan 2018 09:16:45 -0800 (PST) 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 482D8C098D23; Mon, 22 Jan 2018 17:16:44 +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 242186267D; Mon, 22 Jan 2018 17:16:44 +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 D92B818033E2; Mon, 22 Jan 2018 17:16:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGYX8028769 for ; Mon, 22 Jan 2018 12:16:34 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6425A5E1C7; Mon, 22 Jan 2018 17:16:34 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5A7221715B; Mon, 22 Jan 2018 17:16:29 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:08 +0100 Message-Id: <59de15e423a774f282e549e5a775f9724957eb9c.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 10/11] main: implement multiple connection within one daemon 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.31]); Mon, 22 Jan 2018 17:16:44 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This effectively removes --connect parameter from daemon, for now we will support only local connection. Instead of specifying URI for different drivers we will use connect object which allows using multiple drivers from one daemon. In the future if that feature will be requested we can extend libvirt-dbus to have some configuration file where we will have an option to specify remote host instead of local connection. This change also defines the difference between session and system bus, and limits the list of drivers available for that specific bus because not all drivers support session mode. Currently only QEMU driver has session mode. For test purposes we can allow TEST driver to be available for session bus. Signed-off-by: Pavel Hrdina Reviewed-by: Daniel P. Berrange --- src/connect.c | 17 +++++++++++++++-- src/connect.h | 4 +++- src/main.c | 55 ++++++++++++++++++++++++++++++++++---------------= ---- test/libvirttest.py | 4 ++-- 4 files changed, 55 insertions(+), 25 deletions(-) diff --git a/src/connect.c b/src/connect.c index 5249eba..878cf91 100644 --- a/src/connect.c +++ b/src/connect.c @@ -238,7 +238,8 @@ static const sd_bus_vtable virt_connect_vtable[] =3D { int virtDBusConnectNew(virtDBusConnect **connectp, sd_bus *bus, - const char *uri) + const char *uri, + const char *connectPath) { _cleanup_(virtDBusConnectFreep) virtDBusConnect *connect =3D NULL; int r; @@ -249,7 +250,7 @@ virtDBusConnectNew(virtDBusConnect **connectp, =20 connect->bus =3D sd_bus_ref(bus); connect->uri =3D uri; - connect->connectPath =3D "/org/libvirt/Connect"; + connect->connectPath =3D connectPath; =20 connect->enumerateDomains =3D virtDBusConnectEnumarateDomains; =20 @@ -293,3 +294,15 @@ virtDBusConnectFreep(virtDBusConnect **connectp) if (*connectp) virtDBusConnectFree(*connectp); } + +void +virtDBusConnectListFree(virtDBusConnect ***connectList) +{ + if (!*connectList) + return; + + for (int i =3D 0; (*connectList)[i]; i +=3D 1) + virtDBusConnectFree((*connectList)[i]); + + free(*connectList); +} diff --git a/src/connect.h b/src/connect.h index bed2c7e..46e8c9a 100644 --- a/src/connect.h +++ b/src/connect.h @@ -20,6 +20,8 @@ typedef struct virtDBusConnect virtDBusConnect; =20 int virtDBusConnectNew(virtDBusConnect **connectp, sd_bus *bus, - const char *uri); + const char *uri, + const char *connectPath); virtDBusConnect *virtDBusConnectFree(virtDBusConnect *connect); void virtDBusConnectFreep(virtDBusConnect **connectp); +void virtDBusConnectListFree(virtDBusConnect ***connectList); diff --git a/src/main.c b/src/main.c index 95522f5..14c7c18 100644 --- a/src/main.c +++ b/src/main.c @@ -79,6 +79,21 @@ virtDBusHandleBusEvent(int watch, virEventUpdateHandle(watch, virtDBusGetLibvirtEvents(bus)); } =20 +struct virtDBusDriver { + const char *uri; + const char *object; +}; + +static const struct virtDBusDriver sessionDrivers[] =3D { + { "qemu:///session", "/org/libvirt/qemu" }, + { "test:///default", "/org/libvirt/test" }, +}; + +static const struct virtDBusDriver systemDrivers[] =3D { + { "qemu:///system", "/org/libvirt/qemu" }, + { "test:///default", "/org/libvirt/test" }, +}; + int main(int argc, char *argv[]) { @@ -89,16 +104,16 @@ main(int argc, char *argv[]) =20 static const struct option options[] =3D { { "help", no_argument, NULL, 'h' }, - { "connect", required_argument, NULL, 'c' }, { "system", no_argument, NULL, ARG_SYSTEM }, { "session", no_argument, NULL, ARG_SESSION }, {} }; =20 bool system_bus; - const char *uri =3D NULL; + const struct virtDBusDriver *drivers =3D NULL; + int ndrivers =3D 0; =20 - _cleanup_(virtDBusConnectFreep) virtDBusConnect *connect =3D NULL; + _cleanup_(virtDBusConnectListFree) virtDBusConnect **connect =3D NULL; _cleanup_(sd_bus_unrefp) sd_bus *bus =3D NULL; _cleanup_(virtDBusUtilClosep) int signal_fd =3D -1; _cleanup_(virtDBusVirEventRemoveHandlep) int bus_watch =3D -1; @@ -121,15 +136,10 @@ main(int argc, char *argv[]) printf("Provide a D-Bus interface to a libvirtd.\n"); printf("\n"); printf(" -h, --help Display this help text and exi= t\n"); - printf(" -c, --connect URI Connect to the specified libvi= rt URI\n"); printf(" --session Connect to the session bus\n"); printf(" --system Connect to the system bus\n"); return 0; =20 - case 'c': - uri =3D optarg; - break; - case ARG_SYSTEM: system_bus =3D true; break; @@ -143,14 +153,6 @@ main(int argc, char *argv[]) } } =20 - if (uri =3D=3D NULL) { - if (system_bus) { - uri =3D "qemu:///system"; - } else { - uri =3D "qemu:///session"; - } - } - sigemptyset(&mask); sigaddset(&mask, SIGTERM); sigaddset(&mask, SIGINT); @@ -170,10 +172,23 @@ main(int argc, char *argv[]) return EXIT_FAILURE; } =20 - r =3D virtDBusConnectNew(&connect, bus, uri); - if (r < 0) { - fprintf(stderr, "Failed to connect to libvirt."); - return EXIT_FAILURE; + if (system_bus) { + drivers =3D systemDrivers; + ndrivers =3D VIRT_ARRAY_CARDINALITY(systemDrivers); + } else { + drivers =3D sessionDrivers; + ndrivers =3D VIRT_ARRAY_CARDINALITY(sessionDrivers); + } + + connect =3D calloc(ndrivers + 1, sizeof(virtDBusConnect *)); + + for (int i =3D 0; i < ndrivers; i +=3D 1) { + r =3D virtDBusConnectNew(&connect[i], bus, + drivers[i].uri, drivers[i].object); + if (r < 0) { + fprintf(stderr, "Failed to register libvirt connection."); + return EXIT_FAILURE; + } } =20 r =3D virtDBusProcessEvents(bus); diff --git a/test/libvirttest.py b/test/libvirttest.py index 2c735e9..579485f 100644 --- a/test/libvirttest.py +++ b/test/libvirttest.py @@ -28,7 +28,7 @@ class TestCase(unittest.TestCase): def setUp(self): os.environ['LIBVIRT_DEBUG'] =3D '3' =20 - self.daemon =3D subprocess.Popen([exe, '--connect', 'test:///defau= lt']) + self.daemon =3D subprocess.Popen([exe]) self.bus =3D dbus.SessionBus() =20 for i in range(10): @@ -38,7 +38,7 @@ class TestCase(unittest.TestCase): else: raise TimeoutError('error starting libvirt-dbus') =20 - obj =3D self.bus.get_object('org.libvirt', '/org/libvirt/Connect') + obj =3D self.bus.get_object('org.libvirt', '/org/libvirt/test') self.connect =3D dbus.Interface(obj, 'org.libvirt.Connect') =20 def tearDown(self): --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 08:28:40 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 1516641399571969.7989259856134; Mon, 22 Jan 2018 09:16:39 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 96FF6C058ECF; Mon, 22 Jan 2018 17:16:38 +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 4CA525E1C7; Mon, 22 Jan 2018 17:16:38 +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 F25C5410B3; Mon, 22 Jan 2018 17:16:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0MHGbxl028786 for ; Mon, 22 Jan 2018 12:16:37 -0500 Received: by smtp.corp.redhat.com (Postfix) id 42EBE17145; Mon, 22 Jan 2018 17:16:37 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE1F75F704; Mon, 22 Jan 2018 17:16:34 +0000 (UTC) From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 22 Jan 2018 18:16:09 +0100 Message-Id: <3888b0dc8aedbdf0c8714e9b9d9883bb91c96ff8.1516640486.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: lars@karlitski.net Subject: [libvirt] [dbus RFC 11/11] main: add support for all libvirt drivers 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 22 Jan 2018 17:16:39 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina --- src/main.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 14c7c18..6421919 100644 --- a/src/main.c +++ b/src/main.c @@ -85,13 +85,31 @@ struct virtDBusDriver { }; =20 static const struct virtDBusDriver sessionDrivers[] =3D { - { "qemu:///session", "/org/libvirt/qemu" }, - { "test:///default", "/org/libvirt/test" }, + { "qemu:///session", "/org/libvirt/qemu" }, + { "test:///default", "/org/libvirt/test" }, + { "uml:///session", "/org/libvirt/uml" }, + { "vbox:///session", "/org/libvirt/vbox" }, + { "vmwarefusion:///session", "/org/libvirt/vmwarefusion" }, + { "vmwareplayer:///session", "/org/libvirt/vmwareplayer" }, + { "vmwarews:///session", "/org/libvirt/vmwarews" }, }; =20 static const struct virtDBusDriver systemDrivers[] =3D { - { "qemu:///system", "/org/libvirt/qemu" }, - { "test:///default", "/org/libvirt/test" }, + { "XenApi://localhost/", "/org/libvirt/XenApi" }, + { "bhyve:///system", "/org/libvirt/bhyve" }, + { "esx://localhost/", "/org/libvirt/esx" }, + { "gsx://localhost/", "/org/libvirt/gsx" }, + { "hyperv://localhost/", "/org/libvirt/hyperv" }, + { "lxc:///", "/org/libvirt/lxc" }, + { "openvz:///system", "/org/libvirt/openvz" }, + { "phyp://localhost/", "/org/libvirt/phyp" }, + { "qemu:///system", "/org/libvirt/qemu" }, + { "test:///default", "/org/libvirt/test" }, + { "uml:///system", "/org/libvirt/uml" }, + { "vbox:///system", "/org/libvirt/vbox" }, + { "vpx://localhost/", "/org/libvirt/vpx" }, + { "vz:///system", "/org/libvirt/vz" }, + { "xen:///", "/org/libvirt/xen" }, }; =20 int --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list