[libvirt] [libvirt-test-API][PATCH 0/2] Add coredump_with_format test case
by jiahu
The coredump_with_format.py uses coreDumpWithFormat() to validate
new API virDomainCoreDumpWithFormat of libvirt.
jiahu (2):
Add coredump_with_format test case
Add coredump_with_format test case to linux_domain conf
cases/linux_domain.conf | 44 +++++++
repos/domain/coredump_with_format.py | 239 +++++++++++++++++++++++++++++++++++
2 files changed, 283 insertions(+)
create mode 100644 repos/domain/coredump_with_format.py
--
1.8.3.1
9 years, 8 months
[libvirt] [libvirt-test-API][PATCH] Rewrite case for listAllInterfaces() API
by jiahu
Using actual python API to validate test case, rather than use
virsh iface-* command lines.
---
cases/basic_interface.conf | 12 ++
repos/interface/iface_list.py | 299 ++++++++++++------------------------------
2 files changed, 99 insertions(+), 212 deletions(-)
diff --git a/cases/basic_interface.conf b/cases/basic_interface.conf
index e2125bb..43e37e8 100644
--- a/cases/basic_interface.conf
+++ b/cases/basic_interface.conf
@@ -15,3 +15,15 @@ interface:define
interface:create
ifacename
$testnic
+
+interface:iface_list
+ flags
+ all
+
+interface:iface_list
+ flags
+ active
+
+interface:iface_list
+ flags
+ inactive
diff --git a/repos/interface/iface_list.py b/repos/interface/iface_list.py
index 49f0c05..85f9df9 100644
--- a/repos/interface/iface_list.py
+++ b/repos/interface/iface_list.py
@@ -1,65 +1,26 @@
#!/usr/bin/env python
+# test listAllInterfaces() API
import os
-import sys
-import re
-import commands
+import libvirt
-required_params = ('ifaceopt',)
-optional_params = {}
-
-VIRSH_QUIET_IFACE_LIST = "virsh --quiet iface-list %s | awk '{print ""$%s""}'"
-NETWORK_CONFIG = "/etc/sysconfig/network-scripts/"
-IFCONFIG_DRIVER = "ifconfig %s | sed 's/[ \t].*//;/^$/d'"
-GET_MAC = "ip link show %s |sed -n '2p'| awk '{print $2}'"
-VIRSH_IFACE_LIST = "virsh iface-list %s"
-
-names = []
-state = []
-macs = []
-
-def get_option_list(params):
- """return options we need to test
- """
- logger = params['logger']
- option_list=[]
+from libvirt import libvirtError
+from src import sharedmod
+from utils import utils
- value = params['ifaceopt']
- if value == 'all':
- option_list = [' ', '--all', '--inactive']
- elif value == '--all' or value == '--inactive':
- option_list.append(value)
- else:
- logger.error("value %s is not supported" % value)
- return 1, option_list
+required_params = ('flags',)
+optional_params = {}
- return 0, option_list
+NETWORK_CONFIG = "/etc/sysconfig/network-scripts/"
+IFCONFIG_DRIVER = "ifconfig %s | sed 's/[ \t].*//;/^$/d'| cut -d \":\" -f -1"
-def get_output(command, logger):
- """execute shell command
+def get_inteface_list_from_ifcfg(logger):
+ """
+ return host interface list from ifcfg-*
"""
- status, ret = commands.getstatusoutput(command)
- if status:
- logger.error("executing "+ "\"" + command + "\"" + " failed")
- logger.error(ret)
- return status, ret
-
-def get_interface_list(option, logger):
- """ return active host interface list """
- interface_list = []
- status, interface_str = get_output(IFCONFIG_DRIVER % option, logger)
- if not status:
- interface_list = interface_str.split('\n')
- return interface_list
- else:
- logger.error("\"" + IFCONFIG_DRIVER % option + "\"" + "error")
- logger.error(interface_str)
- return interface_list
-
-def check_ifacename(names, option, logger):
- """ verify the validity of output data """
ifcfg_files = []
+ nic_names = []
for f in os.listdir(NETWORK_CONFIG):
if f.startswith("ifcfg-"):
f_path = os.path.join(NETWORK_CONFIG, f)
@@ -67,18 +28,6 @@ def check_ifacename(names, option, logger):
ifcfg_files.append(f_path)
else:
logger.warn("%s is not a regular file" % f_path)
-
- interface_active = get_interface_list('', logger)
- logger.debug("list of active host interface: %s" % interface_active)
- if interface_active == None:
- return 1
-
- interface_all = get_interface_list('-a', logger)
- logger.debug("list of all host interface: %s" % interface_all)
- if interface_all == None:
- return 1
-
-
for ifcfg_file in ifcfg_files:
fp = open(ifcfg_file, 'r')
fp.seek(0,0)
@@ -87,165 +36,91 @@ def check_ifacename(names, option, logger):
device_str = eachLine.rstrip()
nic_string = device_str.split("=")[1]
if nic_string.startswith("\""):
- nic_name = nic_string[1:-1]
+ nic_names = nic_string[1:-1]
else:
- nic_name = nic_string
+ nic_names.append(nic_string)
break
-
fp.close()
+ return list(set(nic_names))
- if option == ' ':
- if nic_name not in interface_active:
- continue
- else:
- if nic_name in names:
- logger.info("it contains interface %s in %s" % (nic_name, ifcfg_file))
- else:
- logger.error("interface %s in %s couldn't \n\
- be in the output of virsh iface-list with option %s" % \
- (nic_name, ifcfg_file, option))
- return 1
- elif option == '--all':
- if nic_name in names:
- logger.info("it contains interface %s in %s" % (nic_name, ifcfg_file))
- else:
- logger.error("interface %s in %s couldn't \n\
- be in the output of virsh iface-list with option %s" % \
- (nic_name, ifcfg_file, option))
-
- return 1
- elif option == '--inactive':
- if nic_name in interface_active:
- continue
- else:
- if nic_name in names:
- logger.info("it contains interface %s in %s" % (nic_name, ifcfg_file))
- else:
- logger.error("interface %s in %s couldn't \n\
- be in the output of virsh iface-list with option %s" % \
- (nic_name, ifcfg_file, option))
- return 1
-
- return 0
-
-def check_ifacestate(names, state, logger):
- """ check the state of give host interface """
-
- interface_active = get_interface_list('', logger)
- if interface_active == None:
- return 1
-
- interface_all = get_interface_list('-a', logger)
- if interface_all == None:
- return 1
-
- index = 0
- count = len(names)
- while(index < count):
- if names[index] in interface_active and state[index] == 'active':
- logger.info("interface %s is %s" % (names[index], state[index]))
- elif names[index] not in interface_active and \
- names[index] in interface_all and \
- state[index] == 'inactive':
- logger.info("interface %s is %s" % (names[index], state[index]))
- else:
- logger.error("interface %s is %s, but not we expected" % \
- (names[index], state[index]))
- return 1
-
- index = index + 1
-
- return 0
-
-def check_ifacemac(names, macs, logger):
- """ check if the mac corresponding to approriate name is correct """
- index = 0
- count = len(names)
- while(index < count):
- status, mac_shell = get_output(GET_MAC % names[index], logger)
- if not status:
- if mac_shell == macs[index]:
- logger.info("interface %s's mac address is %s" % \
- (names[index], macs[index]))
- else:
- logger.error("interface %s's mac address from iface-list: %s \
- is different from one from ip link show: %s" % \
- (name[index], macs[indesx], mac_shell))
- return 1
- index = index + 1
-
- return 0
-
-def iface_list_output(option, logger):
- """ check the output of virsh iface-list with appropriate option """
- global names, state, macs
-
- status, ret = get_output(VIRSH_QUIET_IFACE_LIST % (option, 1), logger)
- if not status:
- names = ret.split('\n')
- logger.info("interface names from option '%s' : %s" % (option, names))
-
- else:
- return 1
-
- status, ret = get_output(VIRSH_QUIET_IFACE_LIST % (option, 2), logger)
- if not status:
- state = ret.split('\n')
- logger.info("interface state from option '%s' : %s" % (option, state))
- else:
- return 1
-
- status, ret = get_output(VIRSH_QUIET_IFACE_LIST % (option, 3), logger)
+def get_interface_list(option, logger):
+ """
+ return host interface list
+ """
+ nic_names = []
+ status, nic_names = utils.exec_cmd(IFCONFIG_DRIVER % option, shell=True)
if not status:
- macs = ret.split('\n')
- logger.info("interface macs from option '%s' : %s" % (option, macs))
+ return nic_names
else:
- return 1
+ logger.error("\"" + IFCONFIG_DRIVER % option + "\"" + "error")
+ logger.error(nic_names)
+ return nic_names
- return 0
+def iface_list_output_from_ifconfig(flags, logger):
+ """
+ get all host interface using ifconfig command
+ """
+ nic_names = []
+ if flags == 0:
+ nic_names = get_interface_list('-a', logger)
+ elif flags == 1:
+ interface_all = get_interface_list('-a', logger)
+ interface_active = get_interface_list('', logger)
+ nic_names = list(set(interface_all) - set(interface_active))
+ elif flags == 2:
+ nic_names = get_interface_list('', logger)
+
+ if nic_names == None:
+ return False
+ return nic_names
+
+def iface_list_output_from_api(flags,logger):
+ """
+ get interface list using listAllInterfaces()
+ """
+ nic_names_api = []
+ for interface in conn.listAllInterfaces(flags):
+ nic_names_api.append(str(interface.name()))
+ return nic_names_api
def iface_list(params):
- """ test the validity of the output of iface_list with
- default, --all, --inactive option, including
- interface name, state, and mac
+ """
+ test listAllInterfaces() api
"""
+ global conn
logger = params['logger']
- ret, option_list = get_option_list(params)
- global names, state, macs
-
- if ret:
- return 1
-
- for option in option_list:
- logger.info("CHECK the output of virsh pool-list with option '%s'" % option)
- logger.info("get the name, corresponding state and mac address of interfaces")
- if iface_list_output(option, logger):
- logger.error("faied to name, state, and mac from iface-list")
- return 1
+ flags = params['flags']
+ conn = sharedmod.libvirtobj['conn']
+ logger.info("The given flags is %s " % flags)
+ if flags == "all":
+ flag = 0
+ elif flags == "inactive":
+ flag = 1
+ elif flags == "active":
+ flag = 2
+ try:
+ iface_list = iface_list_output_from_api(flag, logger)
+ iface_list_ifconfig = iface_list_output_from_ifconfig(flag, logger)
+ if iface_list_ifconfig == False:
+ return 1
+ ifcfg = get_inteface_list_from_ifcfg(logger)
+ logger.info("interface list from API: %s" % iface_list)
+ logger.debug("interface list from ifcfg: %s" % ifcfg)
+ for interface in iface_list_ifconfig:
+ if interface not in ifcfg:
+ iface_list_ifconfig.remove(interface)
+ logger.debug("%s has not regular ifcfg file" % interface)
+
+ logger.info("interface list from ifconfig cmd: %s" % iface_list_ifconfig)
+ for interface in iface_list:
+ if interface in iface_list_ifconfig:
+ logger.debug("%s :Pass" % interface)
else:
- logger.info("then, check the validity of these interface names")
- if check_ifacename(names, option, logger):
- logger.error("checking interface names FAILED")
- return 1
- else:
- logger.info("checking interface names SUCCESSFULLY")
-
- logger.info("check the state of these interfaces")
- if check_ifacestate(names, state, logger):
- logger.error("checking interface state FAILED")
- return 1
- else:
- logger.info("checking interface state SUCCESSFULLY")
-
- logger.info("check the interface mac address")
- if check_ifacemac(names, macs, logger):
- logger.error("checking interface mac address FAILED")
- return 1
- else:
- logger.info("checking interface mac address SUCESSFULLY")
-
- status, ret = get_output(VIRSH_IFACE_LIST % option, logger)
- if not status:
- logger.info("\n" + ret)
+ logger.debug("%s :Fail" % interface)
+ return 1
+
+ except libvirtError, e:
+ logger.error("API error message: %s" % e.message)
+ return 1
return 0
--
1.8.3.1
9 years, 8 months
[libvirt] [PATCHv2 0/4]add support for graphics to get a IPv6 address
by Luyao Huang
https://bugzilla.redhat.com/show_bug.cgi?id=1192318
We already support add a IPv6 address to graphics listen address
and xml like this:
<graphics type='spice' port='5900' autoport='yes' listen='2001b8:ca2:2::1' keymap='en-us'>
<listen type='address' address='2001b8:ca2:2::1'/>
</graphics>
However we do not support get a IPv6 address for the network.
add some helpers and rework networkGetNetworkAddress to make it
can get a IPv6 address when we need.
Luyao Huang (4):
util: introduce 2 new helpers for get interface IPv6 address
conf: introduce new family attribute in graphics listen for chose IP
family
network: rework networkGetNetworkAddress to make it can get IPv6
address
qemu: fix a error coverd issue in 2 place
docs/formatdomain.html.in | 10 ++-
docs/schemas/domaincommon.rng | 8 ++
src/conf/domain_conf.c | 20 +++++
src/conf/domain_conf.h | 9 ++
src/libvirt_private.syms | 1 +
src/network/bridge_driver.c | 15 ++--
src/network/bridge_driver.h | 6 +-
src/qemu/qemu_command.c | 22 +++--
src/util/virnetdev.c | 98 ++++++++++++++++++++++
src/util/virnetdev.h | 4 +
.../qemuxml2argv-graphics-listen-network-ipv6.xml | 35 ++++++++
.../qemuxml2argv-graphics-listen-network.xml | 2 +-
.../qemuxml2xmlout-graphics-listen-network2.xml | 2 +-
tests/qemuxml2xmltest.c | 1 +
14 files changed, 209 insertions(+), 24 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-graphics-listen-network-ipv6.xml
--
1.8.3.1
9 years, 8 months
[libvirt] [libvirt-test-API][PATCH 0/2] Add securitylabel test case
by jiahu
The test case will check securityLabel() and securityLabelList() APIs.
jiahu (2):
Add securitylabel test case to linux_domain.conf
Add securitylabel test case
cases/linux_domain.conf | 4 +
repos/domain/securitylabel.py | 170 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 174 insertions(+)
create mode 100644 repos/domain/securitylabel.py
--
1.8.3.1
9 years, 8 months
[libvirt] [PATCH v2] docs: add a note that spice channel is usable only with spice graphics
by Pavel Hrdina
To prevent a confusion about missing chardev argument in qemu
command line add a note about that behavior into documentation.
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
docs/formatdomain.html.in | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index fb0a0d1..2f2976c 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -5372,6 +5372,10 @@ qemu-kvm -net nic,model=? /dev/null
under a channel name specified in the <code>channel</code>
attribute. <span class="since">Since 1.2.2</span>
</p>
+ <p>
+ Note: in order for the spiceport to be usable, the domain must have
+ spice graphics as well.
+ </p>
<pre>
...
--
2.0.5
9 years, 8 months
[libvirt] [PATCH 0/3] update and unify some documentation texts
by Pavel Hrdina
Pavel Hrdina (3):
iface-define: update and unify documentation
pool-define: update and unify documentation
net-define: update or unify documentation
src/libvirt-interface.c | 3 ++-
src/libvirt-network.c | 3 ++-
src/libvirt-storage.c | 4 ++--
tools/virsh-interface.c | 5 +++--
tools/virsh-network.c | 5 +++--
tools/virsh-pool.c | 5 +++--
tools/virsh.pod | 11 ++++++-----
7 files changed, 21 insertions(+), 15 deletions(-)
--
2.0.5
9 years, 8 months
[libvirt] [RFC PATCH v2 0/4] Enable spapr-pci-vfio-host-bridge controllers for VFIO passthrough support
by Shivaprasad G Bhat
The following series of patches enable spapr-pci-vfio-host-bridge
controllers on PPC64-pseries machine which is required for supporting
host device passthrough using VFIO.
There were some initial enablement work on the same at
http://www.redhat.com/archives/libvir-list/2013-September/msg00838.html.
On pseries(ppc64), the vfio host devices(will refer as
hostdevs here on) cannot be assigned to the default emulated pci-host-bus(phb)
controller(like the default pci.0). The hostdevs goto spapr-pci-vfio-host-bridge.
The hostdevs belonging to the same iommu group share the same
spapr-pci-vfio-host-bridge. Henceforth, new spapr-pci-host-bridge needs to be
added for every hostdev belonging to any new iommu group. The hostdevs should
be attached to their respective spapr-pci-vfio-host-bridge.
Libvirt today adds all the devices to the default pci domain. The patch series
take care to add the new controller. A new pci domain in the guest per
controller is created. The hostdevs get their pci address in the respective
domain. The patch series taskes care of device addressing in vfio hostdevs,
SR-IOV interfaces and network interfaces from SRIOV virtual function pools.
Reference:
======
v1: http://www.redhat.com/archives/libvir-list/2014-October/msg00500.html
Changes Since v1:
* Some minor code clean up and rebase to latest code base after review with Prerna
* Patch 2 : Added logic to remove redundant spapr-vfio controllers.
* : Moved domaincommon.rng from Patch 4 to Patch 2.
---
Shivaprasad G Bhat (4):
qemu: Add SPAPR_VFIO_HOST_BRIDGE capability for PPC platform
qemu: parse spapr-vfio-pci controller from xml
qemu: assign addresses for spapr vfio hostdevices and generate cli
qemu: add test case for spapr-pci-vfio-host-bridge
docs/schemas/domaincommon.rng | 28 ++
src/bhyve/bhyve_domain.c | 2
src/conf/domain_addr.c | 8 -
src/conf/domain_addr.h | 2
src/conf/domain_conf.c | 165 +++++++++++-
src/conf/domain_conf.h | 19 +
src/libvirt_private.syms | 2
src/qemu/qemu_capabilities.c | 2
src/qemu/qemu_capabilities.h | 1
src/qemu/qemu_command.c | 276 +++++++++++++++++++-
src/qemu/qemu_command.h | 17 +
src/qemu/qemu_domain.c | 12 -
src/qemu/qemu_driver.c | 6
tests/qemuhotplugtest.c | 2
.../qemuxml2argv-hostdev-spapr-vfio.args | 20 +
.../qemuxml2argv-hostdev-spapr-vfio.xml | 75 +++++
tests/qemuxml2argvtest.c | 8 +
17 files changed, 609 insertions(+), 36 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-spapr-vfio.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-spapr-vfio.xml
--
Signature
9 years, 8 months
[libvirt] [PATCHv2 0/7] Automaticaly fill <memory> element for NUMA enabled guests
by Peter Krempa
This series changes the behavior of the <memory> element in case the guest has
NUMA enabled and fills automatically the sum of sizes of numa nodes instead of
relying on the user passing correct data.
Peter Krempa (7):
qemu: Forbid setting maximum memory size with the API with NUMA
enabled
qemu: lxc: Clarify error message when setting current memory
conf: Replace access to def->mem.max_balloon with accessor functions
phyp: Fix error messages mentioning memory
qemu: command: Add helper to align memory sizes
conf: numa: Add helper to count total memory size configured in NUMA
conf: Automatically use NUMA memory size in case NUMA is enabled
src/conf/domain_conf.c | 72 +++++++++++++++++++---
src/conf/domain_conf.h | 4 ++
src/conf/numa_conf.c | 13 ++++
src/conf/numa_conf.h | 2 +
src/hyperv/hyperv_driver.c | 2 +-
src/libvirt_private.syms | 4 ++
src/libxl/libxl_conf.c | 2 +-
src/libxl/libxl_driver.c | 8 +--
src/lxc/lxc_cgroup.c | 2 +-
src/lxc/lxc_driver.c | 28 +++++----
src/lxc/lxc_fuse.c | 4 +-
src/lxc/lxc_native.c | 4 +-
src/openvz/openvz_driver.c | 2 +-
src/parallels/parallels_driver.c | 2 +-
src/parallels/parallels_sdk.c | 12 ++--
src/phyp/phyp_driver.c | 15 +++--
src/qemu/qemu_command.c | 23 ++++---
src/qemu/qemu_domain.c | 21 +++++++
src/qemu/qemu_domain.h | 2 +
src/qemu/qemu_driver.c | 49 ++++++++++-----
src/qemu/qemu_hotplug.c | 8 ++-
src/qemu/qemu_process.c | 2 +-
src/test/test_driver.c | 8 +--
src/uml/uml_driver.c | 8 +--
src/vbox/vbox_common.c | 4 +-
src/vmware/vmware_driver.c | 2 +-
src/vmx/vmx.c | 12 ++--
src/xen/xm_internal.c | 14 ++---
src/xenapi/xenapi_driver.c | 2 +-
src/xenapi/xenapi_utils.c | 4 +-
src/xenconfig/xen_common.c | 8 ++-
src/xenconfig/xen_sxpr.c | 9 +--
.../qemuxml2argv-numatune-memnode.args | 2 +-
33 files changed, 243 insertions(+), 111 deletions(-)
--
2.2.2
9 years, 8 months
[libvirt] [PATCH 0/2] Add some tiny tests for latest commits
by Martin Kletzander
Two commits (hashes mentioned in commit messages) were added lately
without tests and I feel like both deserve one, so here goes.
Martin Kletzander (2):
tests: Add test for virtio-mmio address type
tests: Add test for os interleaving
...=> qemuxml2argv-aarch64-aavmf-virtio-mmio.args} | 4 ++--
... => qemuxml2argv-aarch64-aavmf-virtio-mmio.xml} | 27 +++++++++++-----------
...l => qemuxml2argv-bios-nvram-os-interleave.xml} | 2 +-
tests/qemuxml2argvtest.c | 4 ++++
.../qemuxml2xmlout-bios-nvram-os-interleave.xml} | 0
tests/qemuxml2xmltest.c | 2 ++
6 files changed, 23 insertions(+), 16 deletions(-)
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-virt-virtio.args => qemuxml2argv-aarch64-aavmf-virtio-mmio.args} (85%)
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-virt-virtio.xml => qemuxml2argv-aarch64-aavmf-virtio-mmio.xml} (68%)
copy tests/qemuxml2argvdata/{qemuxml2argv-bios-nvram.xml => qemuxml2argv-bios-nvram-os-interleave.xml} (100%)
copy tests/{qemuxml2argvdata/qemuxml2argv-bios-nvram.xml => qemuxml2xmloutdata/qemuxml2xmlout-bios-nvram-os-interleave.xml} (100%)
--
2.3.0
9 years, 8 months
[libvirt] [PATCH v8 0/4] Introduce API to query IP addresses for given domain
by Nehal J Wani
This feature has been requested for a very long time. Since qemu guest
agent and leaseshelper give us reliable results, now the wait is over.
The RFC was first proposed by Michal Privoznik:
http://www.redhat.com/archives/libvir-list/2012-February/msg00437.html
A patch was submitted, using structs:
https://www.redhat.com/archives/libvir-list/2012-June/msg00220.html
Another patch was submitted, using XML:
https://www.redhat.com/archives/libvir-list/2012-June/msg00904.html
Neither of the patches were accepted, probably due to lack of extensibility
and usability. Hence, we thought of using virTypedParameters for reporting
list of interfaces along with their MAC address and IP addresses. The RFC
can be found here:
https://www.redhat.com/archives/libvir-list/2013-July/msg00084.html
The idea of extensibility was rejected and rendered out of scope of
libvirt. Hence, we were back to structs.
This API is called virDomainInterfaceAddresses which returns a dynamically
allocated array of virDomainInterface struct. The great disadvantage is
once this gets released, it's written in stone and we cannot change
or add an item into it.
The virsh CLI supports two methods:
* Return information (list of all associated interfaces with MAC address
and IP addresses) of all of the domain interfaces by default (if
no interface name is provided)
* Return information for the specified interface (if an interface name
is provided)
v8:
* qemuDomainInterfaceAddresses: redo logic related to flags
* Make sure that NIC(s) on guest is/are using libvirt virtual network
before querying leaseshelper
* domifaddr: change --network option from VSH_OT_DATA to VSH_OT_STRING
v7:
* Enable support for DHCP lease file parsing method
* http://www.redhat.com/archives/libvir-list/2014-December/msg00866.html
v6:
* Inclusion of flags, readonly check for guest agent connection
* Correction of memory leaks, other small nits.
* https://www.redhat.com/archives/libvir-list/2013-September/msg00350.html
v5:
* s/virDomainInterfacesAddresses/virDomainInterfaceAddresses.
* Case for IP aliasing handled using virHashTable.
* New test cases added, involving multiple and 0 IP addresse(s)
per interface.
* IP prefix changed from int to unsigned int.
* Changes to practice libvirt habits.
* https://www.redhat.com/archives/libvir-list/2013-September/msg00003.html
v4:
* Various style nits, indentation errors, memory leaks fixed.
* https://www.redhat.com/archives/libvir-list/2013-August/msg01265.html
v3:
* Upper bounds to number of interfaces and addresses per interface
introduced.
* Change from array of structs to array of pointers
* ifaces_count moved from function argument to return value
* Changes in variable names
* Test cases added for qemuAgentGetInterfaces.
* https://www.redhat.com/archives/libvir-list/2013-August/msg01215.html
v2:
* Logical errors, memory leaks and few other errors fixed.
* https://www.redhat.com/archives/libvir-list/2013-August/msg00631.html
v1:
* http://www.redhat.com/archives/libvir-list/2013-July/msg01553.html
Nehal J Wani (4):
domifaddr: Implement the public APIs
domifaddr: Implement the remote protocol
domifaddr: Implement the API for qemu
domifaddr: Add virsh support
daemon/remote.c | 134 ++++++++++++++++++++++++++
include/libvirt/libvirt-domain.h | 27 ++++++
src/driver-hypervisor.h | 5 +
src/libvirt-domain.c | 129 +++++++++++++++++++++++++
src/libvirt_public.syms | 6 ++
src/qemu/qemu_agent.c | 202 +++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_agent.h | 4 +
src/qemu/qemu_driver.c | 173 +++++++++++++++++++++++++++++++++
src/remote/remote_driver.c | 100 +++++++++++++++++++
src/remote/remote_protocol.x | 36 ++++++-
src/remote_protocol-structs | 24 +++++
tests/qemuagenttest.c | 188 ++++++++++++++++++++++++++++++++++++
tools/virsh-domain-monitor.c | 141 +++++++++++++++++++++++++++
tools/virsh.pod | 16 ++++
14 files changed, 1184 insertions(+), 1 deletion(-)
--
2.1.0
9 years, 8 months