This is called for every API, create a function for it.
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
src/domain.c | 220 ++++++++++++++++++++---------------------------------------
1 file changed, 75 insertions(+), 145 deletions(-)
diff --git a/src/domain.c b/src/domain.c
index 3df9113..f68a3a0 100644
--- a/src/domain.c
+++ b/src/domain.c
@@ -6,6 +6,28 @@
#include <libvirt/libvirt.h>
#include <stdio.h>
+static virDomainPtr
+virtDBusDomainGetVirDomain(virtDBusConnect *connect,
+ const char *path,
+ sd_bus_error *error)
+{
+ virDomainPtr domain;
+
+ if (virtDBusConnectOpen(connect, error) < 0)
+ return NULL;
+
+ domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
+ connect->domainPath);
+ if (domain == NULL) {
+ sd_bus_error_setf(error,
+ SD_BUS_ERROR_UNKNOWN_OBJECT,
+ "Unknown object '%s'.", path);
+ return NULL;
+ }
+
+ return domain;
+}
+
static int
virtDBusDomainGetName(sd_bus *bus VIRT_ATTR_UNUSED,
const char *path,
@@ -19,13 +41,9 @@ virtDBusDomainGetName(sd_bus *bus VIRT_ATTR_UNUSED,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
const char *name = "";
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "s", "");
+ return -1;
name = virDomainGetName(domain);
if (name == NULL)
@@ -47,13 +65,9 @@ virtDBusDomainGetUUID(sd_bus *bus VIRT_ATTR_UNUSED,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
char uuid[VIR_UUID_STRING_BUFLEN] = "";
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "s", "");
+ return -1;
virDomainGetUUIDString(domain, uuid);
@@ -72,13 +86,9 @@ virtDBusDomainGetId(sd_bus *bus VIRT_ATTR_UNUSED,
virtDBusConnect *connect = userdata;
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "u", 0);
+ return -1;
return sd_bus_message_append(reply, "u", virDomainGetID(domain));
}
@@ -95,13 +105,9 @@ virtDBusDomainGetVcpus(sd_bus *bus VIRT_ATTR_UNUSED,
virtDBusConnect *connect = userdata;
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "u", 0);
+ return -1;
return sd_bus_message_append(reply, "u", virDomainGetVcpusFlags(domain,
VIR_DOMAIN_VCPU_CURRENT));
}
@@ -119,13 +125,9 @@ virtDBusDomainGetOsType(sd_bus *bus VIRT_ATTR_UNUSED,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
_cleanup_(virtDBusUtilFreep) char *os_type = NULL;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "s", "");
+ return -1;
os_type = virDomainGetOSType(domain);
if (os_type == NULL)
@@ -147,13 +149,9 @@ virtDBusDomainGetActive(sd_bus *bus VIRT_ATTR_UNUSED,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int active;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "b", 0);
+ return -1;
active = virDomainIsActive(domain);
if (active < 0)
@@ -175,13 +173,9 @@ virtDBusDomainGetPersistent(sd_bus *bus VIRT_ATTR_UNUSED,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int persistent;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "b", 0);
+ return -1;
persistent = virDomainIsPersistent(domain);
if (persistent < 0)
@@ -204,13 +198,9 @@ virtDBusDomainGetState(sd_bus *bus VIRT_ATTR_UNUSED,
int state = 0;
const char *string;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "s", "");
+ return -1;
virDomainGetState(domain, &state, NULL, 0);
@@ -258,13 +248,9 @@ virtDBusDomainGetAutostart(sd_bus *bus VIRT_ATTR_UNUSED,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int autostart = 0;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection, path,
- connect->domainPath);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (domain == NULL)
- return sd_bus_message_append(reply, "b", 0);
+ return -1;
virDomainGetAutostart(domain, &autostart);
@@ -282,23 +268,16 @@ virtDBusDomainGetXMLDesc(sd_bus_message *message,
uint32_t flags;
int r;
- if (virtDBusConnectOpen(connect, error) < 0)
- return -1;
-
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = sd_bus_message_read(message, "u", &flags);
if (r < 0)
return r;
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
+ return -1;
+
description = virDomainGetXMLDesc(domain, flags);
if (!description)
return virtDBusUtilSetLastVirtError(error);
@@ -330,19 +309,12 @@ virtDBusDomainGetStats(sd_bus_message *message,
if (r < 0)
return r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
domains[0] = domain;
domains[1] = NULL;
@@ -369,19 +341,12 @@ virtDBusDomainShutdown(sd_bus_message *message,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = virDomainShutdown(domain);
if (r < 0)
return virtDBusUtilSetLastVirtError(error);
@@ -398,19 +363,12 @@ virtDBusDomainDestroy(sd_bus_message *message,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = virDomainDestroy(domain);
if (r < 0)
return virtDBusUtilSetLastVirtError(error);
@@ -432,19 +390,12 @@ virtDBusDomainReboot(sd_bus_message *message,
if (r < 0)
return r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = virDomainReboot(domain, flags);
if (r < 0)
return virtDBusUtilSetLastVirtError(error);
@@ -466,19 +417,12 @@ virtDBusDomainReset(sd_bus_message *message,
if (r < 0)
return r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = virDomainReset(domain, flags);
if (r < 0)
return virtDBusUtilSetLastVirtError(error);
@@ -495,19 +439,12 @@ virtDBusDomainCreate(sd_bus_message *message,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = virDomainCreate(domain);
if (r < 0)
return virtDBusUtilSetLastVirtError(error);
@@ -524,19 +461,12 @@ virtDBusDomainUndefine(sd_bus_message *message,
_cleanup_(virtDBusUtilVirDomainFreep) virDomainPtr domain = NULL;
int r;
- if (virtDBusConnectOpen(connect, error) < 0)
+ domain = virtDBusDomainGetVirDomain(connect,
+ sd_bus_message_get_path(message),
+ error);
+ if (domain == NULL)
return -1;
- domain = virtDBusUtilVirDomainFromBusPath(connect->connection,
- sd_bus_message_get_path(message),
- connect->domainPath);
- if (domain == NULL) {
- return sd_bus_reply_method_errorf(message,
- SD_BUS_ERROR_UNKNOWN_OBJECT,
- "Unknown object '%s'.",
- sd_bus_message_get_path(message));
- }
-
r = virDomainUndefine(domain);
if (r < 0)
return virtDBusUtilSetLastVirtError(error);
@@ -594,7 +524,7 @@ virtDBusDomainLookup(sd_bus *bus VIRT_ATTR_UNUSED,
if (*name == '\0')
return 0;
- domain = virDomainLookupByUUIDString(connect->connection, name);
+ domain = virtDBusDomainGetVirDomain(connect, path, error);
if (!domain)
return 0;
--
2.14.3