From nobody Sun May 5 22:20:25 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1524057559227754.6221639668278; Wed, 18 Apr 2018 06:19:19 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D1A097E9D4; Wed, 18 Apr 2018 13:19:17 +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 921CB17D45; Wed, 18 Apr 2018 13:19:17 +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 1EC30180005A; Wed, 18 Apr 2018 13:19:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w3IDJDN7010672 for ; Wed, 18 Apr 2018 09:19:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id F08C9200BC7C; Wed, 18 Apr 2018 13:19:12 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9294F202698A for ; Wed, 18 Apr 2018 13:19:12 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Wed, 18 Apr 2018 15:19:08 +0200 Message-Id: <20180418131910.29131-2-kkoukiou@redhat.com> In-Reply-To: <20180418131910.29131-1-kkoukiou@redhat.com> References: <20180418131910.29131-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 1/3] Fix virtDBusUtilEnumFromString g_str_equal use 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]); Wed, 18 Apr 2018 13:19:18 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Katerina Koukiou Reviewed-by: Pavel Hrdina --- src/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.c b/src/util.c index 34ab83a..b21f2c5 100644 --- a/src/util.c +++ b/src/util.c @@ -146,7 +146,7 @@ virtDBusUtilEnumFromString(const gchar *const *types, return -1; =20 for (i =3D 0; i < ntypes; i++) - if (g_str_equal(types[i], type) =3D=3D 0) + if (g_str_equal(types[i], type)) return i; =20 return -1; --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sun May 5 22:20:25 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1524057568600803.9318663202849; Wed, 18 Apr 2018 06:19:28 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 15AC7804EB; Wed, 18 Apr 2018 13:19:27 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DF3CF1838A; Wed, 18 Apr 2018 13:19:26 +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 9F2AE180005A; Wed, 18 Apr 2018 13:19:26 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w3IDJDoj010677 for ; Wed, 18 Apr 2018 09:19:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id 966252023594; Wed, 18 Apr 2018 13:19:13 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 393D62024CA1 for ; Wed, 18 Apr 2018 13:19:13 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Wed, 18 Apr 2018 15:19:09 +0200 Message-Id: <20180418131910.29131-3-kkoukiou@redhat.com> In-Reply-To: <20180418131910.29131-1-kkoukiou@redhat.com> References: <20180418131910.29131-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 2/3] Implement GetDHCPLeases method for Network Interface X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Wed, 18 Apr 2018 13:19:27 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Katerina Koukiou --- data/org.libvirt.Network.xml | 8 +++++++ src/network.c | 51 ++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 59 insertions(+) diff --git a/data/org.libvirt.Network.xml b/data/org.libvirt.Network.xml index 48e3324..385eb82 100644 --- a/data/org.libvirt.Network.xml +++ b/data/org.libvirt.Network.xml @@ -36,6 +36,14 @@ + + + + + + diff --git a/src/network.c b/src/network.c index 1448777..492f0bd 100644 --- a/src/network.c +++ b/src/network.c @@ -209,6 +209,56 @@ virtDBusNetworkDestroy(GVariant *inArgs G_GNUC_UNUSED, virtDBusUtilSetLastVirtError(error); } =20 +static void +virtDBusNetworkGetDHCPLeases(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ + virtDBusConnect *connect =3D userData; + g_autoptr(virNetwork) network =3D NULL; + const gchar *mac; + guint flags; + virNetworkDHCPLeasePtr *leases =3D NULL; + gint nleases; + GVariantBuilder builder; + GVariant *res; + + g_variant_get(inArgs, "(&su)", &mac, &flags); + if (g_str_equal(mac, "")) + mac =3D NULL; + + network =3D virtDBusNetworkGetVirNetwork(connect, objectPath, error); + if (!network) + return; + + nleases =3D virNetworkGetDHCPLeases(network, mac, &leases, flags); + if (nleases < 0) + return virtDBusUtilSetLastVirtError(error); + + g_variant_builder_init(&builder, G_VARIANT_TYPE("a(stisssuss)")); + for (gint i =3D 0; i < nleases; i++) { + virNetworkDHCPLeasePtr lease =3D leases[i]; + + g_variant_builder_add(&builder, "(stisssuss)", + lease->iface, lease->expirytime, + lease->type, lease->mac, + lease->iaid ? lease->iaid : "None" , + lease->ipaddr, lease->prefix, + lease->hostname ? lease->hostname : "None", + lease->clientid ? lease->clientid : "None"); + + virNetworkDHCPLeaseFree(leases[i]); + } + g_free(leases); + res =3D g_variant_builder_end(&builder); + + *outArgs =3D g_variant_new_tuple(&res, 1); +} + static void virtDBusNetworkGetXMLDesc(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -269,6 +319,7 @@ static virtDBusGDBusPropertyTable virtDBusNetworkProper= tyTable[] =3D { static virtDBusGDBusMethodTable virtDBusNetworkMethodTable[] =3D { { "Create", virtDBusNetworkCreate }, { "Destroy", virtDBusNetworkDestroy }, + { "GetDHCPLeases", virtDBusNetworkGetDHCPLeases }, { "GetXMLDesc", virtDBusNetworkGetXMLDesc }, { "Undefine", virtDBusNetworkUndefine }, { 0 } --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sun May 5 22:20:25 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1524057639941855.5397551800684; Wed, 18 Apr 2018 06:20:39 -0700 (PDT) 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 77C3E7E9C3; Wed, 18 Apr 2018 13:20: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 406657F36E; Wed, 18 Apr 2018 13:20: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 E53824CA9D; Wed, 18 Apr 2018 13:20:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w3IDJEn2010685 for ; Wed, 18 Apr 2018 09:19:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3AEE0202698A; Wed, 18 Apr 2018 13:19:14 +0000 (UTC) Received: from katerina.brq.redhat.com (unknown [10.43.2.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id D2A3E2023227 for ; Wed, 18 Apr 2018 13:19:13 +0000 (UTC) From: Katerina Koukiou To: libvir-list@redhat.com Date: Wed, 18 Apr 2018 15:19:10 +0200 Message-Id: <20180418131910.29131-4-kkoukiou@redhat.com> In-Reply-To: <20180418131910.29131-1-kkoukiou@redhat.com> References: <20180418131910.29131-1-kkoukiou@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [dbus PATCH 3/3] Implement Update method for Network Interface X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 18 Apr 2018 13:20:39 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Katerina Koukiou Reviewed-by: Pavel Hrdina --- data/org.libvirt.Network.xml | 9 ++++++ src/network.c | 74 ++++++++++++++++++++++++++++++++++++++++= ++++ tests/test_network.py | 17 ++++++++++ 3 files changed, 100 insertions(+) diff --git a/data/org.libvirt.Network.xml b/data/org.libvirt.Network.xml index 385eb82..5ed42a0 100644 --- a/data/org.libvirt.Network.xml +++ b/data/org.libvirt.Network.xml @@ -54,5 +54,14 @@ + + + + + + + + diff --git a/src/network.c b/src/network.c index 492f0bd..a09998b 100644 --- a/src/network.c +++ b/src/network.c @@ -3,6 +3,32 @@ =20 #include =20 +VIRT_DBUS_ENUM_DECL(virtDBusNetworkUpdateCommand) +VIRT_DBUS_ENUM_IMPL(virtDBusNetworkUpdateCommand, + VIR_NETWORK_UPDATE_COMMAND_LAST, + "none", + "modify", + "delete", + "add-last", + "add-first") + +VIRT_DBUS_ENUM_DECL(virtDBusNetworkUpdateSection) +VIRT_DBUS_ENUM_IMPL(virtDBusNetworkUpdateSection, + VIR_NETWORK_SECTION_LAST, + "none", + "bridge", + "domain", + "ip", + "ip-dhcp-host", + "ip-dhcp-range", + "forward", + "forward-interface", + "forward-pf", + "portgroup", + "dns-host", + "dns-txt", + "dns-srv") + static virNetworkPtr virtDBusNetworkGetVirNetwork(virtDBusConnect *connect, const gchar *objectPath, @@ -306,6 +332,53 @@ virtDBusNetworkUndefine(GVariant *inArgs G_GNUC_UNUSED, virtDBusUtilSetLastVirtError(error); } =20 +static void +virtDBusNetworkUpdate(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ + virtDBusConnect *connect =3D userData; + g_autoptr(virNetwork) network =3D NULL; + const gchar *commandStr; + gint command; + const gchar *sectionStr; + gint section; + gint parentIndex; + const gchar *xml; + guint flags; + + g_variant_get(inArgs, "(&s&si&su)", + &commandStr, §ionStr, + &parentIndex, &xml, &flags); + + command =3D virtDBusNetworkUpdateCommandTypeFromString(commandStr); + if (command < 0) { + g_set_error(error, VIRT_DBUS_ERROR, VIRT_DBUS_ERROR_LIBVIRT, + "Can't get valid virNetworkUpdateCommand from string '= %s'.", + commandStr); + return; + } + section =3D virtDBusNetworkUpdateSectionTypeFromString(sectionStr); + if (section < 0) { + g_set_error(error, VIRT_DBUS_ERROR, VIRT_DBUS_ERROR_LIBVIRT, + "Can't get valid virNetworkUpdateSection from string '= %s'.", + sectionStr); + return; + } + + network =3D virtDBusNetworkGetVirNetwork(connect, objectPath, error); + if (!network) + return; + + if (virNetworkUpdate(network, command, section, + parentIndex, xml, flags) < 0) + virtDBusUtilSetLastVirtError(error); +} + static virtDBusGDBusPropertyTable virtDBusNetworkPropertyTable[] =3D { { "Active", virtDBusNetworkGetActive, NULL }, { "Autostart", virtDBusNetworkGetAutostart, virtDBusNetworkSetAutostar= t }, @@ -322,6 +395,7 @@ static virtDBusGDBusMethodTable virtDBusNetworkMethodTa= ble[] =3D { { "GetDHCPLeases", virtDBusNetworkGetDHCPLeases }, { "GetXMLDesc", virtDBusNetworkGetXMLDesc }, { "Undefine", virtDBusNetworkUndefine }, + { "Update", virtDBusNetworkUpdate }, { 0 } }; =20 diff --git a/tests/test_network.py b/tests/test_network.py index 0dda923..2c1bd21 100755 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -2,11 +2,17 @@ =20 import dbus import libvirttest +import pytest =20 =20 class TestNetwork(libvirttest.BaseTestClass): """ Tests for methods and properties of the Network interface """ + + ip_dhcp_host_xml =3D ''' + + ''' + def test_network_properties_type(self): """ Ensure correct return type for Network properties """ @@ -73,5 +79,16 @@ class TestNetwork(libvirttest.BaseTestClass): =20 self.main_loop() =20 + @pytest.mark.parametrize("command, section, parentIndex, xml_str, flag= s", [ + ('add-first', 'ip-dhcp-host', 0, ip_dhcp_host_xml, 0), + ]) + def test_network_update(self, command, section, parentIndex, xml_str, = flags): + _, test_network =3D self.test_network() + interface_obj =3D dbus.Interface(test_network, 'org.libvirt.Networ= k') + interface_obj.Update(command, section, parentIndex, xml_str, flags) + updated_netxml =3D interface_obj.GetXMLDesc(0) + assert (xml_str.strip() in updated_netxml) + + if __name__ =3D=3D '__main__': libvirttest.run() --=20 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list