Signed-off-by: Katerina Koukiou <kkoukiou(a)redhat.com>
---
data/org.libvirt.Domain.xml | 5 ++++-
src/domain.c | 51 ++++++++++++++++++++++++++-------------------
test/test_domain.py | 3 ++-
3 files changed, 35 insertions(+), 24 deletions(-)
diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml
index 48bf40f..1ecf826 100644
--- a/data/org.libvirt.Domain.xml
+++ b/data/org.libvirt.Domain.xml
@@ -6,12 +6,15 @@
<property name="Name" type="s" access="read"/>
<property name="UUID" type="s" access="read"/>
<property name="Id" type="u" access="read"/>
- <property name="Vcpus" type="u" access="read"/>
<property name="OSType" type="s" access="read"/>
<property name="Active" type="b" access="read"/>
<property name="Persistent" type="b"
access="read"/>
<property name="State" type="s" access="read"/>
<property name="Autostart" type="b"
access="read"/>
+ <method name="GetVcpus">
+ <arg name="flags" type="u" direction="in"/>
+ <arg name="vcpus" type="u" direction="out"/>
+ </method>
<method name="GetXMLDesc">
<arg name="flags" type="u" direction="in"/>
<arg name="xml" type="s" direction="out"/>
diff --git a/src/domain.c b/src/domain.c
index e4404c1..09b3440 100644
--- a/src/domain.c
+++ b/src/domain.c
@@ -86,27 +86,6 @@ virtDBusDomainGetId(const gchar *objectPath,
*value = g_variant_new("u", id);
}
-static void
-virtDBusDomainGetVcpus(const gchar *objectPath,
- gpointer userData,
- GVariant **value,
- GError **error)
-{
- virtDBusConnect *connect = userData;
- g_autoptr(virDomain) domain = NULL;
- gint vcpus;
-
- domain = virtDBusDomainGetVirDomain(connect, objectPath, error);
- if (!domain)
- return;
-
- vcpus = virDomainGetVcpusFlags(domain, VIR_DOMAIN_VCPU_CURRENT);
- if (vcpus < 0)
- return virtDBusUtilSetLastVirtError(error);
-
- *value = g_variant_new("u", vcpus);
-}
-
static void
virtDBusDomainGetOsType(const gchar *objectPath,
gpointer userData,
@@ -239,6 +218,34 @@ virtDBusDomainGetAutostart(const gchar *objectPath,
*value = g_variant_new("b", !!autostart);
}
+static void
+virtDBusDomainGetVcpus(GVariant *inArgs,
+ GUnixFDList *inFDs G_GNUC_UNUSED,
+ const gchar *objectPath,
+ gpointer userData,
+ GVariant **outArgs,
+ GUnixFDList **outFDs G_GNUC_UNUSED,
+ GError **error)
+
+{
+ virtDBusConnect *connect = userData;
+ g_autoptr(virDomain) domain = NULL;
+ gint vcpus;
+ guint flags;
+
+ g_variant_get(inArgs, "(u)", &flags);
+
+ domain = virtDBusDomainGetVirDomain(connect, objectPath, error);
+ if (!domain)
+ return;
+
+ vcpus = virDomainGetVcpusFlags(domain, flags);
+ if (vcpus < 0)
+ return virtDBusUtilSetLastVirtError(error);
+
+ *outArgs = g_variant_new("(u)", vcpus);
+}
+
static void
virtDBusDomainGetXMLDesc(GVariant *inArgs,
GUnixFDList *inFDs G_GNUC_UNUSED,
@@ -435,7 +442,6 @@ static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = {
{ "Name", virtDBusDomainGetName, NULL },
{ "UUID", virtDBusDomainGetUUID, NULL },
{ "Id", virtDBusDomainGetId, NULL },
- { "Vcpus", virtDBusDomainGetVcpus, NULL },
{ "OSType", virtDBusDomainGetOsType, NULL },
{ "Active", virtDBusDomainGetActive, NULL },
{ "Persistent", virtDBusDomainGetPersistent, NULL },
@@ -445,6 +451,7 @@ static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = {
};
static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = {
+ { "GetVcpus", virtDBusDomainGetVcpus },
{ "GetXMLDesc", virtDBusDomainGetXMLDesc },
{ "GetStats", virtDBusDomainGetStats },
{ "Shutdown", virtDBusDomainShutdown },
diff --git a/test/test_domain.py b/test/test_domain.py
index 1bf9c1b..22039dc 100755
--- a/test/test_domain.py
+++ b/test/test_domain.py
@@ -17,7 +17,6 @@ class TestDomain(libvirttest.BaseTestClass):
assert isinstance(props['Name'], dbus.String)
assert isinstance(props['UUID'], dbus.String)
assert isinstance(props['Id'], dbus.UInt32)
- assert isinstance(props['Vcpus'], dbus.UInt32)
assert isinstance(props['OSType'], dbus.String)
assert isinstance(props['Active'], dbus.Boolean)
assert isinstance(props['Persistent'], dbus.Boolean)
@@ -29,6 +28,8 @@ class TestDomain(libvirttest.BaseTestClass):
xml = domain.GetXMLDesc(0)
assert isinstance(xml, dbus.String)
+ vcpus = domain.GetVcpus(0)
+ assert isinstance(vcpus, dbus.UInt32)
domain.Reboot(0)
domain.Shutdown()
--
2.15.0