Move: * qemuAgentDiskInfoFormatParams * qemuAgentFSInfoFormatParams * virDomainInterfaceFormatParams
from the qemu driver to hypervisor/qemu_agent.c so they could be reused by the other drivers implementing virDomainGetGuestInfo() using the qemu agent. Also, rename virDomainInterfaceFormatParams() to qemuAgentInterfaceFormatParams() to follow the common naming schema as it's not really used outside of the qemu agent related code. Signed-off-by: Roman Bogorodskiy <[email protected]> --- src/hypervisor/qemu_agent.c | 159 +++++++++++++++++++++++++++++++++++ src/hypervisor/qemu_agent.h | 17 ++++ src/libvirt_private.syms | 3 + src/qemu/qemu_driver.c | 162 +----------------------------------- 4 files changed, 180 insertions(+), 161 deletions(-) diff --git a/src/hypervisor/qemu_agent.c b/src/hypervisor/qemu_agent.c index e549947fbf..36134e3cc2 100644 --- a/src/hypervisor/qemu_agent.c +++ b/src/hypervisor/qemu_agent.c @@ -2681,3 +2681,162 @@ qemuAgentFSInfoFormat(qemuAgentFSInfo **agentinfo, } return ret; } + +void +qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info, + int ndisks, + virDomainDef *vmdef, + virTypedParamList *list) +{ + size_t i; + + virTypedParamListAddUInt(list, ndisks, VIR_DOMAIN_GUEST_INFO_DISK_COUNT); + + for (i = 0; i < ndisks; i++) { + virTypedParamListAddString(list, info[i]->name, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_NAME, i); + virTypedParamListAddBoolean(list, info[i]->partition, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_PARTITION, i); + + if (info[i]->dependencies) { + size_t ndeps = g_strv_length(info[i]->dependencies); + size_t j; + + if (ndeps > 0) + virTypedParamListAddUInt(list, ndeps, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_COUNT, i); + + for (j = 0; j < ndeps; j++) { + virTypedParamListAddString(list, info[i]->dependencies[j], + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME, i, j); + } + } + + if (info[i]->address) { + qemuAgentDiskAddress *address = info[i]->address; + virDomainDiskDef *diskdef = NULL; + + if (address->serial) + virTypedParamListAddString(list, address->serial, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_SERIAL, i); + + /* match the disk to the target in the vm definition */ + diskdef = virDomainDiskByAddress(vmdef, + &address->pci_controller, + address->ccw_addr, + address->bus, + address->target, + address->unit); + + if (diskdef && diskdef->dst) + virTypedParamListAddString(list, diskdef->dst, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_ALIAS, i); + + if (address->bus_type) + virTypedParamListAddString(list, address->bus_type, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_BUS, i); + } + + if (info[i]->alias) + virTypedParamListAddString(list, info[i]->alias, + VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_ALIAS, i); + } +} + +void +qemuAgentFSInfoFormatParams(qemuAgentFSInfo **fsinfo, + int nfs, + virDomainDef *vmdef, + virTypedParamList *list) +{ + size_t i; + + virTypedParamListAddUInt(list, nfs, VIR_DOMAIN_GUEST_INFO_FS_COUNT); + + for (i = 0; i < nfs; i++) { + size_t j; + + virTypedParamListAddString(list, fsinfo[i]->name, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_NAME, i); + virTypedParamListAddString(list, fsinfo[i]->mountpoint, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_MOUNTPOINT, i); + virTypedParamListAddString(list, fsinfo[i]->fstype, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_FSTYPE, i); + + /* disk usage values are not returned by older guest agents, so + * only add the params if the value is set */ + if (fsinfo[i]->total_bytes != -1) + virTypedParamListAddULLong(list, fsinfo[i]->total_bytes, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_TOTAL_BYTES, i); + if (fsinfo[i]->used_bytes != -1) + virTypedParamListAddULLong(list, fsinfo[i]->used_bytes, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_USED_BYTES, i); + + virTypedParamListAddUInt(list, fsinfo[i]->ndisks, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_COUNT, i); + + for (j = 0; j < fsinfo[i]->ndisks; j++) { + virDomainDiskDef *diskdef = NULL; + qemuAgentDiskAddress *d = fsinfo[i]->disks[j]; + + /* match the disk to the target in the vm definition */ + diskdef = virDomainDiskByAddress(vmdef, + &d->pci_controller, + d->ccw_addr, + d->bus, + d->target, + d->unit); + if (diskdef && diskdef->dst) + virTypedParamListAddString(list, diskdef->dst, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_ALIAS, i, j); + + if (d->serial) + virTypedParamListAddString(list, d->serial, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_SERIAL, i, j); + + if (d->devnode) + virTypedParamListAddString(list, d->devnode, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_DEVICE, i, j); + } + } +} + +void +qemuAgentInterfaceFormatParams(virDomainInterfacePtr *ifaces, + int nifaces, + virTypedParamList *list) +{ + size_t i; + + virTypedParamListAddUInt(list, nifaces, VIR_DOMAIN_GUEST_INFO_IF_COUNT); + + for (i = 0; i < nifaces; i++) { + size_t j; + + virTypedParamListAddString(list, ifaces[i]->name, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_NAME, i); + virTypedParamListAddString(list, ifaces[i]->hwaddr, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_HWADDR, i); + virTypedParamListAddUInt(list, ifaces[i]->naddrs, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_COUNT, i); + + for (j = 0; j < ifaces[i]->naddrs; j++) { + switch (ifaces[i]->addrs[j].type) { + case VIR_IP_ADDR_TYPE_IPV4: + virTypedParamListAddString(list, "ipv4", + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); + break; + + case VIR_IP_ADDR_TYPE_IPV6: + virTypedParamListAddString(list, "ipv6", + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); + break; + } + + virTypedParamListAddString(list, ifaces[i]->addrs[j].addr, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_ADDR, i, j); + virTypedParamListAddUInt(list, ifaces[i]->addrs[j].prefix, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_PREFIX, i, j); + } + } +} diff --git a/src/hypervisor/qemu_agent.h b/src/hypervisor/qemu_agent.h index 3dbc3baec1..def6f983d4 100644 --- a/src/hypervisor/qemu_agent.h +++ b/src/hypervisor/qemu_agent.h @@ -201,3 +201,20 @@ int qemuAgentFSInfoFormat(qemuAgentFSInfo **agentinfo, int nagentinfo, virDomainDef *vmdef, virDomainFSInfoPtr **info); + +void +qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info, + int ndisks, + virDomainDef *vmdef, + virTypedParamList *list); + +void +qemuAgentFSInfoFormatParams(qemuAgentFSInfo **fsinfo, + int nfs, + virDomainDef *vmdef, + virTypedParamList *list); + +void +qemuAgentInterfaceFormatParams(virDomainInterfacePtr *ifaces, + int nifaces, + virTypedParamList *list); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index c76e5cb08a..02bd505749 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1716,9 +1716,11 @@ virDomainInterfaceVportRemove; # hypervisor/qemu_agent.h qemuAgentArbitraryCommand; qemuAgentClose; +qemuAgentDiskInfoFormatParams; qemuAgentDiskInfoFree; qemuAgentFSFreeze; qemuAgentFSInfoFormat; +qemuAgentFSInfoFormatParams; qemuAgentFSInfoFree; qemuAgentFSThaw; qemuAgentFSTrim; @@ -1732,6 +1734,7 @@ qemuAgentGetTime; qemuAgentGetTimezone; qemuAgentGetUsers; qemuAgentGetVCPUs; +qemuAgentInterfaceFormatParams; qemuAgentNotifyClose; qemuAgentNotifyEvent; qemuAgentOpen; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bdc0cff66a..8185a078d5 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19964,166 +19964,6 @@ qemuDomainGetGuestInfoCheckSupport(unsigned int types, } -static void -qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info, - int ndisks, - virDomainDef *vmdef, - virTypedParamList *list) -{ - size_t i; - - virTypedParamListAddUInt(list, ndisks, VIR_DOMAIN_GUEST_INFO_DISK_COUNT); - - for (i = 0; i < ndisks; i++) { - virTypedParamListAddString(list, info[i]->name, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_NAME, i); - virTypedParamListAddBoolean(list, info[i]->partition, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_PARTITION, i); - - if (info[i]->dependencies) { - size_t ndeps = g_strv_length(info[i]->dependencies); - size_t j; - - if (ndeps > 0) - virTypedParamListAddUInt(list, ndeps, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_COUNT, i); - - for (j = 0; j < ndeps; j++) { - virTypedParamListAddString(list, info[i]->dependencies[j], - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME, i, j); - } - } - - if (info[i]->address) { - qemuAgentDiskAddress *address = info[i]->address; - virDomainDiskDef *diskdef = NULL; - - if (address->serial) - virTypedParamListAddString(list, address->serial, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_SERIAL, i); - - /* match the disk to the target in the vm definition */ - diskdef = virDomainDiskByAddress(vmdef, - &address->pci_controller, - address->ccw_addr, - address->bus, - address->target, - address->unit); - - if (diskdef && diskdef->dst) - virTypedParamListAddString(list, diskdef->dst, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_ALIAS, i); - - if (address->bus_type) - virTypedParamListAddString(list, address->bus_type, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_BUS, i); - } - - if (info[i]->alias) - virTypedParamListAddString(list, info[i]->alias, - VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_ALIAS, i); - } -} - - -static void -qemuAgentFSInfoFormatParams(qemuAgentFSInfo **fsinfo, - int nfs, - virDomainDef *vmdef, - virTypedParamList *list) -{ - size_t i; - - virTypedParamListAddUInt(list, nfs, VIR_DOMAIN_GUEST_INFO_FS_COUNT); - - for (i = 0; i < nfs; i++) { - size_t j; - - virTypedParamListAddString(list, fsinfo[i]->name, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_NAME, i); - virTypedParamListAddString(list, fsinfo[i]->mountpoint, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_MOUNTPOINT, i); - virTypedParamListAddString(list, fsinfo[i]->fstype, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_FSTYPE, i); - - /* disk usage values are not returned by older guest agents, so - * only add the params if the value is set */ - if (fsinfo[i]->total_bytes != -1) - virTypedParamListAddULLong(list, fsinfo[i]->total_bytes, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_TOTAL_BYTES, i); - if (fsinfo[i]->used_bytes != -1) - virTypedParamListAddULLong(list, fsinfo[i]->used_bytes, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_USED_BYTES, i); - - virTypedParamListAddUInt(list, fsinfo[i]->ndisks, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_COUNT, i); - - for (j = 0; j < fsinfo[i]->ndisks; j++) { - virDomainDiskDef *diskdef = NULL; - qemuAgentDiskAddress *d = fsinfo[i]->disks[j]; - - /* match the disk to the target in the vm definition */ - diskdef = virDomainDiskByAddress(vmdef, - &d->pci_controller, - d->ccw_addr, - d->bus, - d->target, - d->unit); - if (diskdef && diskdef->dst) - virTypedParamListAddString(list, diskdef->dst, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_ALIAS, i, j); - - if (d->serial) - virTypedParamListAddString(list, d->serial, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_SERIAL, i, j); - - if (d->devnode) - virTypedParamListAddString(list, d->devnode, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_DEVICE, i, j); - } - } -} - -static void -virDomainInterfaceFormatParams(virDomainInterfacePtr *ifaces, - int nifaces, - virTypedParamList *list) -{ - size_t i; - - virTypedParamListAddUInt(list, nifaces, VIR_DOMAIN_GUEST_INFO_IF_COUNT); - - for (i = 0; i < nifaces; i++) { - size_t j; - - virTypedParamListAddString(list, ifaces[i]->name, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_NAME, i); - virTypedParamListAddString(list, ifaces[i]->hwaddr, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_HWADDR, i); - virTypedParamListAddUInt(list, ifaces[i]->naddrs, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_COUNT, i); - - for (j = 0; j < ifaces[i]->naddrs; j++) { - switch (ifaces[i]->addrs[j].type) { - case VIR_IP_ADDR_TYPE_IPV4: - virTypedParamListAddString(list, "ipv4", - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); - break; - - case VIR_IP_ADDR_TYPE_IPV6: - virTypedParamListAddString(list, "ipv6", - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); - break; - } - - virTypedParamListAddString(list, ifaces[i]->addrs[j].addr, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_ADDR, i, j); - virTypedParamListAddUInt(list, ifaces[i]->addrs[j].prefix, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_PREFIX, i, j); - } - } -} - static int qemuDomainGetGuestInfo(virDomainPtr dom, unsigned int types, @@ -20250,7 +20090,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom, } if (nifaces > 0) { - virDomainInterfaceFormatParams(ifaces, nifaces, list); + qemuAgentInterfaceFormatParams(ifaces, nifaces, list); } if (format_load) { -- 2.52.0
