[PATCH] [Test](#3)Testcase to check for duplicate UUID
by Yogananth Subramanian
# HG changeset patch
# User anantyog(a)in.ibm.com
# Date 1250681088 25200
# Node ID 1d4ded063ea6b2fa3437b09e4cee6e71303a5723
# Parent 5c08aeea7fa147dea06d6b1f0c75c2de70b4b0ae
[Test](#3)Testcase to check for duplicate UUID
Made changes based on comments from Deepti Kalakeri, renamed the test case to
06_duplicate_uuid.py.
Thx
yogi
Signed-off-by: Yogananth Subramanian <anantyog(a)linux.vnet.ibm.com>
diff -r 5c08aeea7fa1 -r 1d4ded063ea6 suites/libvirt-cim/cimtest/VSSD/06_duplicate_uuid.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/suites/libvirt-cim/cimtest/VSSD/06_duplicate_uuid.py Wed Aug 19 04:24:48 2009 -0700
@@ -0,0 +1,116 @@
+#!/usr/bin/python
+#
+# Copyright 2009 IBM Corp.
+#
+# Authors:
+# Yogananth Subramanian <anantyog(a)linux.vnet.ibm.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#Steps:
+#1) Define 2 domains,'default' and 'test', both with random UUID
+#2) Reset the uuid of the second domain, 'test', to the uuid of the
+# first domain, using ModifySystemSettings
+#
+
+import sys
+import time
+from XenKvmLib import vsms
+from XenKvmLib import vxml
+from CimTest.Globals import logger
+from CimTest.ReturnCodes import PASS, FAIL
+from XenKvmLib.const import do_main
+from XenKvmLib.classes import get_typed_class, inst_to_mof
+from XenKvmLib.enumclass import GetInstance
+
+sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
+default_dom = 'uuid_domain'
+test_dom = 'test_domain'
+nmac = '99:aa:bb:cc:ee:ff'
+
+def get_vssd(ip, virt, default_dom):
+ cn = get_typed_class(virt, "VirtualSystemSettingData")
+ inst = None
+
+ try:
+ if virt == "XenFV":
+ virt = "Xen"
+
+ key_list = {"InstanceID" : "%s:%s" % (virt, default_dom) }
+ inst = GetInstance(ip, cn, key_list, True)
+
+ except Exception, details:
+ logger.error(details)
+ return FAIL, inst
+
+ if inst is None:
+ return FAIL, inst
+
+ return PASS, inst
+
+@do_main(sup_types)
+def main():
+ options = main.options
+
+ service = vsms.get_vsms_class(options.virt)(options.ip)
+
+ cxml = vxml.get_class(options.virt)(default_dom)
+ ret = cxml.cim_define(options.ip)
+ if not ret:
+ logger.error("Failed to define the dom: %s", default_dom)
+ return FAIL
+
+ try:
+ status, inst = get_vssd(options.ip, options.virt, default_dom)
+ if status != PASS:
+ raise Exception("Failed to get the VSSD instance for %s" %
+ default_dom)
+
+ uuid_defaultdom = inst['UUID']
+
+ sxml = vxml.get_class(options.virt)(test_dom, mac=nmac)
+ ret = sxml.cim_define(options.ip)
+ if not ret:
+ raise Exception("Failed to define the dom: %s" % test_dom)
+
+ status, inst = get_vssd(options.ip, options.virt, test_dom)
+ if status != PASS:
+ raise Exception("Failed to get the VSSD instance for %s" %
+ test_dom)
+
+ inst['UUID'] = uuid_defaultdom
+ vssd = inst_to_mof(inst)
+ ret = service.ModifySystemSettings(SystemSettings=vssd)
+ if ret[0] ==0:
+ raise Exception("Was able to assign duplicate UUID to domain %s"
+ % test_dom)
+
+ except Exception, details:
+ err_no = details[0]
+ err_desc = details[1]
+ if err_desc.find("domain 'uuid_domain' is already defined"):
+ logger.info('Got expected error desc')
+ status = PASS
+ else:
+ logger.error(details)
+ status = FAIL
+
+ sxml.undefine(options.ip)
+ cxml.undefine(options.ip)
+ return status
+
+if __name__ == "__main__":
+ sys.exit(main())
+
15 years, 2 months
[PATCH] [TEST] Fixing VSMS/08*py
by Deepti B. Kalakeri
# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1250697820 25200
# Node ID c338efef06278a9a40a90f07a34750ec50c49939
# Parent 5c08aeea7fa147dea06d6b1f0c75c2de70b4b0ae
[TEST] Fixing VSMS/08*py .
Tested with KVM on F10 and Xen on SLES with current sources.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 5c08aeea7fa1 -r c338efef0627 suites/libvirt-cim/cimtest/VirtualSystemManagementService/08_modifyresource.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/08_modifyresource.py Mon Aug 17 04:16:50 2009 -0700
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/08_modifyresource.py Wed Aug 19 09:03:40 2009 -0700
@@ -43,7 +43,9 @@
ncpu = 1
nmem = 256
new_int = randint(10, 99)
-new_mac = "11:%s:22:%s:33:%s" % (new_int, new_int, new_int)
+new_mac1 = "11:%s:22:%s:33:%s" % (new_int, new_int, new_int)
+new_int += 1
+new_mac2 = "11:%s:22:%s:33:%s" % (new_int, new_int, new_int)
def cleanup_env(ip, virt, cxml):
cxml.destroy(ip)
@@ -54,7 +56,7 @@
options = main.options
service = vsms.get_vsms_class(options.virt)(options.ip)
- cxml = vxml.get_class(options.virt)(default_dom, vcpus=cpu)
+ cxml = vxml.get_class(options.virt)(default_dom, vcpus=cpu, mac=new_mac1)
ndpath = cxml.secondary_disk_path
dasd = vsms.get_dasd_class(options.virt)(dev=cxml.xml_get_disk_dev(),
source=ndpath,
@@ -77,7 +79,6 @@
for case in test_cases:
#Each time through, define guest using a default XML
cxml.undefine(options.ip)
- cxml = vxml.get_class(options.virt)(default_dom, vcpus=cpu)
ret = cxml.cim_define(options.ip)
if not ret:
logger.error("Failed to define the dom: %s", default_dom)
@@ -107,7 +108,7 @@
if status != PASS:
break
- nasd.Address = new_mac
+ nasd.Address = new_mac2
status = vsms_util.mod_net_res(options.ip, service, options.virt, cxml,
nasd, ntype, default_network_name)
if status != PASS:
15 years, 2 months
[PATCH] Fix LXC connection uri, remove default graphics device
by Kaitlin Rupert
# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1250619499 25200
# Node ID b15ece6f581dd1372261edd782f41411d1a90652
# Parent 4ceb7a25fdfe0ff4ab994d151e3e98ba70ac5e05
Fix LXC connection uri, remove default graphics device
Using "lxc:///system" for the connection uri used to work, but it is no longer
valid.
Containers guests do not support <graphics> devices. Older versions of libvirt
didn't do strict checking of guest XMLs, but this has been changed in newer
versions.
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r 4ceb7a25fdfe -r b15ece6f581d libxkutil/misc_util.c
--- a/libxkutil/misc_util.c Tue Aug 18 11:18:18 2009 -0700
+++ b/libxkutil/misc_util.c Tue Aug 18 11:18:19 2009 -0700
@@ -50,7 +50,7 @@
else if (STARTS_WITH(classname, "KVM"))
return "qemu:///system";
else if (STARTS_WITH(classname, "LXC"))
- return "lxc:///system";
+ return "lxc:///";
else
return NULL;
}
diff -r 4ceb7a25fdfe -r b15ece6f581d src/Virt_VirtualSystemManagementService.c
--- a/src/Virt_VirtualSystemManagementService.c Tue Aug 18 11:18:18 2009 -0700
+++ b/src/Virt_VirtualSystemManagementService.c Tue Aug 18 11:18:19 2009 -0700
@@ -323,6 +323,9 @@
static bool default_graphics_device(struct domain *domain)
{
+ if (domain->type == DOMAIN_LXC)
+ return true;
+
free(domain->dev_graphics);
domain->dev_graphics = calloc(1, sizeof(*domain->dev_graphics));
if (domain->dev_graphics == NULL) {
@@ -946,8 +949,6 @@
return net_rasd_to_vdev(inst, dev, ns);
} else if (type == CIM_RES_TYPE_PROC) {
return lxc_proc_rasd_to_vdev(inst, dev);
- } else if (type == CIM_RES_TYPE_GRAPHICS) {
- return graphics_rasd_to_vdev(inst, dev);
} else if (type == CIM_RES_TYPE_INPUT) {
return input_rasd_to_vdev(inst, dev);
}
15 years, 2 months
[PATCH] Be sure to initialize msg in storage_vol_rasd_to_res()
by Kaitlin Rupert
# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1250287987 25200
# Node ID 9dec453226dadbd358fdd87cbbaffe0528d25308
# Parent 6f6393788fc52d942a53fdf2b93cf2a83a0559e4
Be sure to initialize msg in storage_vol_rasd_to_res()
Some versions of gcc will complain about this variable being uninitialized.
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r 6f6393788fc5 -r 9dec453226da src/Virt_ResourcePoolConfigurationService.c
--- a/src/Virt_ResourcePoolConfigurationService.c Fri Aug 14 13:30:43 2009 -0700
+++ b/src/Virt_ResourcePoolConfigurationService.c Fri Aug 14 15:13:07 2009 -0700
@@ -695,7 +695,7 @@
{
uint16_t int_val;
const char *val;
- const char *msg;
+ const char *msg = NULL;
if (cu_get_u16_prop(inst, "FormatType", &int_val) != CMPI_RC_OK) {
msg = "StorageVolumeRASD FormatType field not valid";
15 years, 2 months
[PATCH] Dup all necessary fields of the net_device struct in virt_device_dup()
by Kaitlin Rupert
# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1250281843 25200
# Node ID 6f6393788fc52d942a53fdf2b93cf2a83a0559e4
# Parent 77db61a05abb9eb2e5db719677f4e15cd0626168
Dup all necessary fields of the net_device struct in virt_device_dup()
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r 77db61a05abb -r 6f6393788fc5 libxkutil/device_parsing.c
--- a/libxkutil/device_parsing.c Wed Aug 12 22:07:51 2009 -0700
+++ b/libxkutil/device_parsing.c Fri Aug 14 13:30:43 2009 -0700
@@ -659,6 +659,8 @@
DUP_FIELD(dev, _dev, dev.net.mac);
DUP_FIELD(dev, _dev, dev.net.type);
DUP_FIELD(dev, _dev, dev.net.source);
+ DUP_FIELD(dev, _dev, dev.net.name);
+ DUP_FIELD(dev, _dev, dev.net.model);
} else if (dev->type == CIM_RES_TYPE_DISK) {
DUP_FIELD(dev, _dev, dev.disk.type);
DUP_FIELD(dev, _dev, dev.disk.device);
15 years, 2 months
[PATCH] [RFC] Implement libvirt event callback management
by Hollis Blanchard
# HG changeset patch
# User Hollis Blanchard <hollisb(a)us.ibm.com>
# Date 1250181138 25200
# Node ID 36aa26ca62cabda72e027f075889c7a0973a4e6b
# Parent c345ed88f03432da53efee161d505bd64c02c32e
[RFC] Implement libvirt event callback management.
Libvirt requires that users implement their own event monitoring and
callback-management infrastructure. Actually, two similar lists are needed: one
for file descriptors to monitor, and one for pending timers.
This patch starts exactly one event-monitoring thread per libvirt-cim instance.
Multiple provider threads in the same process will share this thread.
Signed-off-by: Hollis Blanchard <hollisb(a)us.ibm.com>
---
This builds but isn't tested, and may very well contain embarrassing list
manipulation or locking bugs. It really needs a consumer to test, i.e. for
someone to register a domain event callback.
Comments welcome.
Please CC me on replies.
diff --git a/libxkutil/Makefile.am b/libxkutil/Makefile.am
--- a/libxkutil/Makefile.am
+++ b/libxkutil/Makefile.am
@@ -5,14 +5,14 @@ SUBDIRS = tests
CFLAGS += $(CFLAGS_STRICT)
noinst_HEADERS = cs_util.h misc_util.h device_parsing.h xmlgen.h infostore.h \
- pool_parsing.h
+ pool_parsing.h event.h
lib_LTLIBRARIES = libxkutil.la
AM_LDFLAGS = -lvirt -luuid
libxkutil_la_SOURCES = cs_util_instance.c misc_util.c device_parsing.c \
- xmlgen.c infostore.c pool_parsing.c
+ xmlgen.c infostore.c pool_parsing.c event.c
noinst_PROGRAMS = xml_parse_test
diff --git a/libxkutil/event.c b/libxkutil/event.c
new file mode 100644
--- /dev/null
+++ b/libxkutil/event.c
@@ -0,0 +1,367 @@
+/*
+ * Copyright IBM Corp. 2009
+ *
+ * Authors:
+ * Hollis Blanchard <hollisb(a)us.ibm.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <errno.h>
+#include <poll.h>
+#include <values.h>
+
+#include <libvirt/libvirt.h>
+#include <libvirt/virterror.h>
+
+#include "event.h"
+
+struct timer {
+ int id;
+ int timeout;
+ void *opaque;
+ virFreeCallback ff;
+ struct timer *next;
+ bool deleted;
+};
+
+struct watch {
+ int id;
+ int fd;
+ int events;
+ virEventHandleCallback cb;
+ void *opaque;
+ virFreeCallback ff;
+ struct watch *next;
+ bool deleted;
+};
+
+static pthread_t watch_thread_id;
+
+static int next_watch_id;
+static struct watch *watch_list;
+static int watch_count;
+static pthread_mutex_t watch_list_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+static int next_timer_id;
+static struct timer *timer_list;
+static pthread_mutex_t timer_list_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+
+static int eventAddHandle(int fd, int events, virEventHandleCallback cb,
+ void *opaque, virFreeCallback ff)
+{
+ struct watch *watch;
+
+ CU_DEBUG("%s", __func__);
+
+ watch = malloc(sizeof(struct watch));
+ if (!watch)
+ return -ENOMEM;
+
+ watch->id = next_watch_id++;
+ watch->fd = fd;
+ watch->events = events;
+ watch->cb = cb;
+ watch->opaque = opaque;
+ watch->ff = ff;
+
+ pthread_mutex_lock(&watch_list_mutex);
+
+ watch->next = watch_list;
+ watch_list = watch;
+ watch_count++;
+
+ pthread_mutex_unlock(&watch_list_mutex);
+
+ return watch->id;
+}
+
+static void eventUpdateHandle(int id, int events)
+{
+ struct watch *cur;
+
+ CU_DEBUG("%s %d", __func__, id);
+
+ for (cur = watch_list; cur != NULL; cur = cur->next) {
+ if (cur->id == id) {
+ cur->events = events;
+ break;
+ }
+ }
+}
+
+/* To avoid locking problems, watches are just flagged here, and the memory is
+ * freed later. */
+static int eventRemoveHandle(int id)
+{
+ struct watch *cur;
+
+ CU_DEBUG("%s %d", __func__, id);
+
+ for (cur = watch_list; cur != NULL; cur = cur->next) {
+ if (cur->id == id) {
+ cur->deleted = 1;
+ break;
+ }
+ }
+
+ return 0;
+}
+
+/* Delete all watches marked for deletion. */
+static void event_watch_free_deleted(void)
+{
+ struct watch *cur;
+ struct watch **link;
+
+ CU_DEBUG("%s", __func__);
+
+ pthread_mutex_lock(&watch_list_mutex);
+
+ cur = watch_list;
+ link = &watch_list;
+ while (cur != NULL) {
+ struct watch *next = cur->next;
+
+ if (cur->deleted) {
+ *link = next;
+
+ cur->ff(cur->opaque);
+ free(cur);
+ watch_count--;
+ } else
+ link = &cur->next;
+
+ cur = next;
+ }
+
+ pthread_mutex_unlock(&watch_list_mutex);
+}
+
+static int eventAddTimeout(int timeout, virEventTimeoutCallback cb,
+ void *opaque, virFreeCallback ff)
+{
+ struct timer *timer;
+
+ CU_DEBUG("%s", __func__);
+
+ timer = malloc(sizeof(struct timer));
+ if (!timer)
+ return -ENOMEM;
+
+ timer->id = next_timer_id++;
+ timer->timeout = timeout;
+ timer->opaque = opaque;
+ timer->ff = ff;
+
+ pthread_mutex_lock(&timer_list_mutex);
+
+ timer->next = timer_list;
+ timer_list = timer;
+
+ pthread_mutex_unlock(&timer_list_mutex);
+
+ return timer->id;
+}
+
+static void eventUpdateTimeout(int id, int timeout)
+{
+ struct timer *cur;
+
+ CU_DEBUG("%s %d", __func__, id);
+
+ for (cur = timer_list; cur != NULL; cur = cur->next) {
+ if (cur->id == id) {
+ cur->timeout = timeout;
+ break;
+ }
+ }
+}
+
+static int eventRemoveTimeout(int id)
+{
+ struct timer *cur;
+
+ CU_DEBUG("%s %d", __func__, id);
+
+ for (cur = timer_list; cur != NULL; cur = cur->next) {
+ if (cur->id == id) {
+ cur->deleted = 1;
+ break;
+ }
+ }
+
+ return 0;
+}
+
+/* Delete all timers marked for deletion. */
+static void event_timer_free_deleted(void)
+{
+ struct timer *cur;
+ struct timer **link;
+
+ CU_DEBUG("%s", __func__);
+
+ pthread_mutex_lock(&timer_list_mutex);
+
+ cur = timer_list;
+ link = &timer_list;
+ while (cur != NULL) {
+ struct timer *next = cur->next;
+
+ if (cur->deleted) {
+ *link = next;
+
+ cur->ff(cur->opaque);
+ free(cur);
+ } else
+ link = &cur->next;
+
+ cur = next;
+ }
+
+ pthread_mutex_unlock(&timer_list_mutex);
+}
+
+
+
+static int poll_to_libvirt_events(int pevents)
+{
+ int vevents = 0;
+
+ if (pevents & POLLIN)
+ vevents |= VIR_EVENT_HANDLE_READABLE;
+
+ if (pevents & POLLOUT)
+ vevents |= VIR_EVENT_HANDLE_WRITABLE;
+
+ if (pevents & POLLERR)
+ vevents |= VIR_EVENT_HANDLE_ERROR;
+
+ if (pevents & POLLHUP)
+ vevents |= VIR_EVENT_HANDLE_HANGUP;
+
+ return vevents;
+}
+
+static int libvirt_to_poll_events(int vevents)
+{
+ int pevents = 0;
+
+ if (vevents & VIR_EVENT_HANDLE_READABLE)
+ pevents |= POLLIN;
+
+ if (vevents & VIR_EVENT_HANDLE_WRITABLE)
+ pevents |= POLLOUT;
+
+ if (vevents & VIR_EVENT_HANDLE_ERROR)
+ pevents |= POLLERR;
+
+ if (vevents & VIR_EVENT_HANDLE_HANGUP)
+ pevents |= POLLHUP;
+
+ return pevents;
+}
+
+static void invoke_callback(struct watch *watch, struct pollfd *pollfd)
+{
+ int vevents = poll_to_libvirt_events(watch->events);
+
+ watch->cb(watch->id, watch->fd, vevents, watch->opaque);
+}
+
+static int event_next_timeout(void)
+{
+ struct timer *cur;
+ int closest = MAXINT;
+
+ for (cur = timer_list; cur != NULL; cur = cur->next)
+ if (cur->timeout < closest)
+ closest = cur->timeout;
+
+ return closest;
+}
+
+/* One thread to watch all fds for all events for all libvirt threads. */
+static void *event_thread(void *ptr)
+{
+ while (1) {
+ struct watch *cur;
+ struct pollfd *pollfds;
+ struct pollfd *pollfd;
+ int timeout;
+ int i;
+
+ pollfds = malloc(sizeof(struct pollfd) * watch_count);
+
+ /* fill in pollfds array from our watch list */
+ for (pollfd = &pollfds[0], cur = watch_list;
+ cur != NULL;
+ pollfd++, cur = cur->next) {
+ pollfd->fd = cur->fd;
+ pollfd->events = libvirt_to_poll_events(cur->events);
+ }
+
+ timeout = event_next_timeout();
+
+ poll(pollfds, watch_count, timeout);
+
+ /* invoke callbacks */
+ for (i = 0; i < watch_count; i++)
+ for (cur = watch_list; cur != NULL; cur = cur->next)
+ if (cur->fd == pollfds[i].fd
+ && !cur->deleted) {
+ invoke_callback(cur, &pollfds[i]);
+ break;
+ }
+
+ free(pollfds);
+
+ event_watch_free_deleted();
+ event_timer_free_deleted();
+ }
+
+ return NULL;
+}
+
+void init_events(void)
+{
+ static pthread_mutex_t thread_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+ CU_DEBUG("%s", __func__);
+
+ pthread_mutex_lock(&thread_mutex);
+
+ if (!watch_thread_id) {
+ virEventRegisterImpl(eventAddHandle,
+ eventUpdateHandle,
+ eventRemoveHandle,
+ eventAddTimeout,
+ eventUpdateTimeout,
+ eventRemoveTimeout);
+
+ pthread_create(&watch_thread_id, NULL, event_thread, NULL);
+ }
+
+ pthread_mutex_unlock(&thread_mutex);
+}
diff --git a/libxkutil/event.h b/libxkutil/event.h
new file mode 100644
--- /dev/null
+++ b/libxkutil/event.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright IBM Corp. 2009
+ *
+ * Authors:
+ * Hollis Blanchard <hollisb(a)us.ibm.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __EVENT_H
+#define __EVENT_H
+
+#include <libcmpiutil.h>
+
+void init_events(void);
+
+#endif /* __EVENT_H */
diff --git a/libxkutil/misc_util.c b/libxkutil/misc_util.c
--- a/libxkutil/misc_util.c
+++ b/libxkutil/misc_util.c
@@ -38,6 +38,7 @@
#include "misc_util.h"
#include "cs_util.h"
+#include "event.h"
#include <config.h>
@@ -490,6 +491,7 @@ bool parse_instanceid(const CMPIObjectPa
bool libvirt_cim_init(void)
{
+ init_events();
return virInitialize() == 0;
}
15 years, 2 months
[PATCH] (#3) Add a new OperatingStatus state and map them all to libvirt states
by Richard Maciel
# HG changeset patch
# User Richard Maciel <rmaciel(a)linux.vnet.ibm.com>
# Date 1250185820 10800
# Node ID edde8b4607e96d45d2c784070c84143be4d57fef
# Parent 69ee9e708fe8fb2f5af562fdc412290e30fa41e7
(#3) Add a new OperatingStatus state and map them all to libvirt states
OperatingStatus state added:
STARTED
#2:
Fixed patch submission date
#3:
Previous patches were setting the wrong provider variable (OperationalStatus).
Signed-off-by: Richard Maciel <rmaciel(a)linux.vnet.ibm.com>
diff -r 69ee9e708fe8 -r edde8b4607e9 src/Virt_ComputerSystem.c
--- a/src/Virt_ComputerSystem.c Thu Aug 13 13:51:34 2009 -0300
+++ b/src/Virt_ComputerSystem.c Thu Aug 13 14:50:20 2009 -0300
@@ -187,6 +187,54 @@
}
}
+static uint16_t state_lv_to_cim_oings(const char lv_state, const bool migrating)
+{
+ enum CIM_oping_status {
+ CIM_OPING_STATUS_UNKNOWN = 0,
+ CIM_OPING_STATUS_NOT_AVAILABLE = 1,
+ CIM_OPING_STATUS_SERVICING = 2,
+ CIM_OPING_STATUS_STARTING = 3,
+ CIM_OPING_STATUS_STOPPING = 4,
+ CIM_OPING_STATUS_STOPPED = 5,
+ CIM_OPING_STATUS_ABORTED = 6,
+ CIM_OPING_STATUS_DORMANT = 7,
+ CIM_OPING_STATUS_COMPLETED = 8,
+ CIM_OPING_STATUS_MIGRATING = 9,
+ CIM_OPING_STATUS_EMIGRATING = 10,
+ CIM_OPING_STATUS_IMMIGRATING = 11,
+ CIM_OPING_STATUS_SNAPSHOTTING = 12,
+ CIM_OPING_STATUS_SHUTTING_DOWN = 13,
+ CIM_OPING_STATUS_IN_TEST = 14,
+ CIM_OPING_STATUS_TRANSITIONING = 15,
+ CIM_OPING_STATUS_IN_SERVICE = 16,
+ CIM_OPING_STATUS_STARTED = 32768,
+ };
+
+
+ if (migrating)
+ return CIM_OPING_STATUS_MIGRATING;
+
+ switch (lv_state) {
+ case VIR_DOMAIN_NOSTATE:
+ case VIR_DOMAIN_SHUTDOWN:
+ case VIR_DOMAIN_SHUTOFF:
+ return CIM_OPING_STATUS_STOPPED;
+
+ case VIR_DOMAIN_CRASHED:
+ return CIM_OPING_STATUS_ABORTED;
+
+ case VIR_DOMAIN_RUNNING:
+ return CIM_OPING_STATUS_STARTED;
+
+ case VIR_DOMAIN_BLOCKED:
+ case VIR_DOMAIN_PAUSED:
+ return CIM_OPING_STATUS_DORMANT;
+
+ default:
+ return CIM_OPING_STATUS_UNKNOWN;
+ }
+}
+
static uint16_t state_lv_to_cim_os(const char lv_state)
{
enum CIM_op_status {
@@ -268,9 +316,11 @@
uint16_t health_state;
uint16_t req_state;
uint16_t op_status;
+ uint16_t oping_status;
CMPIArray *array;
CMPIStatus s;
struct infostore_ctx *infostore = NULL;
+ bool migrating = false;
ret = virDomainGetInfo(dom, &info);
if (ret != 0)
@@ -298,6 +348,14 @@
(CMPIValue *)&array, CMPI_uint16A);
infostore = infostore_open(dom);
+
+ if (infostore != NULL)
+ migrating = infostore_get_bool(infostore, "migrating");
+
+ oping_status = state_lv_to_cim_oings((const int)info.state, migrating);
+ CMSetProperty(instance, "OperatingStatus",
+ (CMPIValue *)&oping_status, CMPI_uint16);
+
if (infostore != NULL)
req_state = (uint16_t)infostore_get_u64(infostore, "reqstate");
else
15 years, 2 months
[PATCH] [TEST] Removing the unused reference to test_xml from the tc
by Deepti B. Kalakeri
# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1250507810 25200
# Node ID 6234055ffd27ae76486caf7a07eeccd4cc2589b7
# Parent 85a07c7dadb889ffeb0e38ba7de31cd42dcfcc79
[TEST] Removing the unused reference to test_xml from the tc.
Tested with KVM on F10 with current sources.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 85a07c7dadb8 -r 6234055ffd27 suites/libvirt-cim/cimtest/ElementConforms/02_reverse.py
--- a/suites/libvirt-cim/cimtest/ElementConforms/02_reverse.py Thu Aug 13 10:19:11 2009 -0700
+++ b/suites/libvirt-cim/cimtest/ElementConforms/02_reverse.py Mon Aug 17 04:16:50 2009 -0700
@@ -38,7 +38,6 @@
import sys
from pywbem.cim_obj import CIMInstanceName
-from XenKvmLib.test_xml import testxml
from VirtLib import utils
from CimTest import Globals
from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, CIM_ERROR_ASSOCIATORS
diff -r 85a07c7dadb8 -r 6234055ffd27 suites/libvirt-cim/cimtest/Processor/01_processor.py
--- a/suites/libvirt-cim/cimtest/Processor/01_processor.py Thu Aug 13 10:19:11 2009 -0700
+++ b/suites/libvirt-cim/cimtest/Processor/01_processor.py Mon Aug 17 04:16:50 2009 -0700
@@ -27,7 +27,6 @@
from VirtLib import utils
from XenKvmLib.xm_virt_util import active_domain_list
from XenKvmLib.enumclass import GetInstance
-from XenKvmLib.test_xml import testxml
from XenKvmLib.classes import get_typed_class
from XenKvmLib.vxml import XenXML, KVMXML, get_class
from CimTest.Globals import logger
15 years, 2 months
Test Run Summary (Aug 17 2009): KVM on Fedora release 11 (Leonidas) with Pegasus
by Deepti B Kalakeri
=================================================
Test Run Summary (Aug 17 2009): KVM on Fedora release 11 (Leonidas) with Pegasus
=================================================
Distro: Fedora release 11 (Leonidas)
Kernel: 2.6.27.5-117.fc10.x86_64
libvirt: 0.7.0
Hypervisor: QEMU 0.10.1
CIMOM: Pegasus 2.9.0
Libvirt-cim revision: 956
Libvirt-cim changeset: 77db61a05abb
Cimtest revision: 761
Cimtest changeset: 85a07c7dadb8
=================================================
FAIL : 3
XFAIL : 3
SKIP : 10
PASS : 151
-----------------
Total : 167
=================================================
FAIL Test Summary:
ComputerSystemIndication - 01_created_indication.py: FAIL
VirtualSystemManagementService - 08_modifyresource.py: FAIL
VirtualSystemManagementService - 22_addmulti_brg_interface.py: FAIL
=================================================
XFAIL Test Summary:
ComputerSystem - 32_start_reboot.py: XFAIL
ComputerSystem - 33_suspend_reboot.py: XFAIL
VirtualSystemManagementService - 16_removeresource.py: XFAIL
=================================================
SKIP Test Summary:
ComputerSystem - 02_nosystems.py: SKIP
ComputerSystemMigrationJobIndication - 01_csmig_ind_for_offline_mig.py: SKIP
LogicalDisk - 02_nodevs.py: SKIP
VSSD - 02_bootldr.py: SKIP
VirtualSystemMigrationService - 01_migratable_host.py: SKIP
VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP
VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP
VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP
VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP
VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP
=================================================
Full report:
--------------------------------------------------------------------
AllocationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
AllocationCapabilities - 02_alloccap_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 01_enum.py: PASS
--------------------------------------------------------------------
ComputerSystem - 02_nosystems.py: SKIP
ERROR - System has defined domains; unable to run
--------------------------------------------------------------------
ComputerSystem - 03_defineVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 04_defineStartVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 05_activate_defined_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 06_paused_active_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 22_define_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 23_pause_pause.py: PASS
--------------------------------------------------------------------
ComputerSystem - 27_define_pause_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 32_start_reboot.py: XFAIL
ERROR - Got CIM error CIM_ERR_FAILED: Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1
ERROR - Exception: Unable reboot dom 'cs_test_domain'
InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot
Bug:<00005>
--------------------------------------------------------------------
ComputerSystem - 33_suspend_reboot.py: XFAIL
ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not supported with return code 7
ERROR - Exception: Unable Suspend dom 'test_domain'
InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not supported
Bug:<00012>
--------------------------------------------------------------------
ComputerSystem - 34_start_disable.py: PASS
--------------------------------------------------------------------
ComputerSystem - 35_start_reset.py: PASS
--------------------------------------------------------------------
ComputerSystem - 40_RSC_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 41_cs_to_settingdefinestate.py: PASS
--------------------------------------------------------------------
ComputerSystem - 42_cs_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystemIndication - 01_created_indication.py: FAIL
ERROR - Waited too long for destroy indication
--------------------------------------------------------------------
ComputerSystemMigrationJobIndication - 01_csmig_ind_for_offline_mig.py: SKIP
--------------------------------------------------------------------
ElementAllocatedFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 03_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 04_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 05_hostsystem_cap.py: PASS
--------------------------------------------------------------------
ElementConforms - 01_forward.py: PASS
--------------------------------------------------------------------
ElementConforms - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementConforms - 03_ectp_fwd_errs.py: PASS
--------------------------------------------------------------------
ElementConforms - 04_ectp_rev_errs.py: PASS
--------------------------------------------------------------------
ElementSettingData - 01_forward.py: PASS
--------------------------------------------------------------------
ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 01_enum.py: PASS
--------------------------------------------------------------------
HostSystem - 02_hostsystem_to_rasd.py: PASS
--------------------------------------------------------------------
HostSystem - 03_hs_to_settdefcap.py: PASS
--------------------------------------------------------------------
HostSystem - 04_hs_to_EAPF.py: PASS
--------------------------------------------------------------------
HostSystem - 05_hs_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 06_hs_to_vsms.py: PASS
--------------------------------------------------------------------
HostedAccessPoint - 01_forward.py: PASS
--------------------------------------------------------------------
HostedAccessPoint - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedDependency - 01_forward.py: PASS
--------------------------------------------------------------------
HostedDependency - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedDependency - 03_enabledstate.py: PASS
--------------------------------------------------------------------
HostedDependency - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 01_forward.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedService - 01_forward.py: PASS
--------------------------------------------------------------------
HostedService - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedService - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedService - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS
--------------------------------------------------------------------
LogicalDisk - 01_disk.py: PASS
--------------------------------------------------------------------
LogicalDisk - 02_nodevs.py: SKIP
ERROR - System has defined domains; unable to run
--------------------------------------------------------------------
LogicalDisk - 03_ld_gi_errs.py: PASS
--------------------------------------------------------------------
Memory - 01_memory.py: PASS
--------------------------------------------------------------------
Memory - 02_defgetmem.py: PASS
--------------------------------------------------------------------
Memory - 03_mem_gi_errs.py: PASS
--------------------------------------------------------------------
NetworkPort - 01_netport.py: PASS
--------------------------------------------------------------------
NetworkPort - 02_np_gi_errors.py: PASS
--------------------------------------------------------------------
NetworkPort - 03_user_netport.py: PASS
--------------------------------------------------------------------
Processor - 01_processor.py: PASS
--------------------------------------------------------------------
Processor - 02_definesys_get_procs.py: PASS
--------------------------------------------------------------------
Processor - 03_proc_gi_errs.py: PASS
--------------------------------------------------------------------
Profile - 01_enum.py: PASS
--------------------------------------------------------------------
Profile - 02_profile_to_elec.py: PASS
--------------------------------------------------------------------
Profile - 03_rprofile_gi_errs.py: PASS
--------------------------------------------------------------------
RASD - 01_verify_rasd_fields.py: PASS
--------------------------------------------------------------------
RASD - 02_enum.py: PASS
--------------------------------------------------------------------
RASD - 03_rasd_errs.py: PASS
--------------------------------------------------------------------
RASD - 04_disk_rasd_size.py: PASS
--------------------------------------------------------------------
RASD - 05_disk_rasd_emu_type.py: PASS
--------------------------------------------------------------------
RASD - 06_parent_net_pool.py: PASS
--------------------------------------------------------------------
RASD - 07_parent_disk_pool.py: PASS
--------------------------------------------------------------------
RedirectionService - 01_enum_crs.py: PASS
--------------------------------------------------------------------
RedirectionService - 02_enum_crscap.py: PASS
--------------------------------------------------------------------
RedirectionService - 03_RedirectionSAP_errs.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 01_verify_refprof.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 02_refprofile_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 05_RAPF_err.py: PASS
--------------------------------------------------------------------
ResourcePool - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePool - 02_rp_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS
--------------------------------------------------------------------
ServiceAccessBySAP - 01_forward.py: PASS
--------------------------------------------------------------------
ServiceAccessBySAP - 02_reverse.py: PASS
--------------------------------------------------------------------
ServiceAffectsElement - 01_forward.py: PASS
--------------------------------------------------------------------
ServiceAffectsElement - 02_reverse.py: PASS
--------------------------------------------------------------------
SettingsDefine - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefine - 02_reverse.py: PASS
--------------------------------------------------------------------
SettingsDefine - 03_sds_fwd_errs.py: PASS
--------------------------------------------------------------------
SettingsDefine - 04_sds_rev_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS
--------------------------------------------------------------------
SystemDevice - 01_forward.py: PASS
--------------------------------------------------------------------
SystemDevice - 02_reverse.py: PASS
--------------------------------------------------------------------
SystemDevice - 03_fwderrs.py: PASS
--------------------------------------------------------------------
VSSD - 01_enum.py: PASS
--------------------------------------------------------------------
VSSD - 02_bootldr.py: SKIP
--------------------------------------------------------------------
VSSD - 03_vssd_gi_errs.py: PASS
--------------------------------------------------------------------
VSSD - 04_vssd_to_rasd.py: PASS
--------------------------------------------------------------------
VSSD - 05_set_uuid.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 01_definesystem_name.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 02_destroysystem.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 03_definesystem_ess.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 04_definesystem_ers.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 05_destroysystem_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 06_addresource.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 07_addresource_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 08_modifyresource.py: FAIL
ERROR - Error invoking ModifyRS: mod_net_res
ERROR - (1, u"CIM_ERR_FAILED: Device `None' not found")
InvokeMethod(ModifyResourceSettings): CIM_ERR_FAILED: Device `None' not found
--------------------------------------------------------------------
VirtualSystemManagementService - 09_procrasd_persist.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 10_hv_version.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 11_define_memrasdunits.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 12_referenced_config.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 14_define_sys_disk.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 15_mod_system_settings.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 16_removeresource.py: XFAIL
ERROR - 0 RASD insts for domain/mouse:ps2
CIM_ERR_NOT_FOUND: No such instance (no device domain/mouse:ps2)
Bug:<00014>
--------------------------------------------------------------------
VirtualSystemManagementService - 17_removeresource_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 18_define_sys_bridge.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 19_definenetwork_ers.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 20_verify_vnc_password.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 21_createVS_verifyMAC.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 22_addmulti_brg_interface.py: FAIL
ERROR - Failed to create Virtual Network 'my_network1'
ERROR - Unable to create network pool my_network1
--------------------------------------------------------------------
VirtualSystemManagementService - 23_verify_duplicate_mac_err.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationService - 01_migratable_host.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 01_forward.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 02_reverse.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 03_create_snapshot.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS
--------------------------------------------------------------------
--
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik(a)linux.vnet.ibm.com
15 years, 2 months