]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Add sentinel for virErrorDomain enum
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 14 May 2012 15:31:05 +0000 (16:31 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 24 May 2012 15:20:55 +0000 (16:20 +0100)
Add a VIR_ERR_DOMAIN_LAST sentinel for virErrorDomain and
replace the virErrorDomainName function by a VIR_ENUM_IMPL

In the process the naming of error domains is sanitized

* src/util/virterror.c: Use VIR_ENUM_IMPL for converting
  error domains to strings
* include/libvirt/virterror.h: Add VIR_ERR_DOMAIN_LAST

include/libvirt/virterror.h
src/util/virterror.c

index 72832075a11eb1b90dd6fe0192314fc9daba2f02..0e0bc9cd36b33f6d431316539110175e8dfba32f 100644 (file)
@@ -43,51 +43,64 @@ typedef enum {
     VIR_FROM_XEND = 2,         /* Error at connection with xend daemon */
     VIR_FROM_XENSTORE = 3,     /* Error at connection with xen store */
     VIR_FROM_SEXPR = 4,                /* Error in the S-Expression code */
+
     VIR_FROM_XML = 5,          /* Error in the XML code */
     VIR_FROM_DOM = 6,          /* Error when operating on a domain */
     VIR_FROM_RPC = 7,          /* Error in the XML-RPC code */
     VIR_FROM_PROXY = 8,                /* Error in the proxy code; unused since
                                    0.8.6 */
     VIR_FROM_CONF = 9,         /* Error in the configuration file handling */
+
     VIR_FROM_QEMU = 10,                /* Error at the QEMU daemon */
     VIR_FROM_NET = 11,         /* Error when operating on a network */
     VIR_FROM_TEST = 12,                /* Error from test driver */
     VIR_FROM_REMOTE = 13,      /* Error from remote driver */
     VIR_FROM_OPENVZ = 14,      /* Error from OpenVZ driver */
+
     VIR_FROM_XENXM = 15,       /* Error at Xen XM layer */
     VIR_FROM_STATS_LINUX = 16, /* Error in the Linux Stats code */
     VIR_FROM_LXC = 17,         /* Error from Linux Container driver */
     VIR_FROM_STORAGE = 18,     /* Error from storage driver */
     VIR_FROM_NETWORK = 19,     /* Error from network config */
+
     VIR_FROM_DOMAIN = 20,      /* Error from domain config */
     VIR_FROM_UML = 21,         /* Error at the UML driver */
     VIR_FROM_NODEDEV = 22,     /* Error from node device monitor */
     VIR_FROM_XEN_INOTIFY = 23, /* Error from xen inotify layer */
     VIR_FROM_SECURITY = 24,    /* Error from security framework */
+
     VIR_FROM_VBOX = 25,                /* Error from VirtualBox driver */
     VIR_FROM_INTERFACE = 26,   /* Error when operating on an interface */
     VIR_FROM_ONE = 27,         /* The OpenNebula driver no longer exists.
                                    Retained for ABI/API compat only */
     VIR_FROM_ESX = 28,         /* Error from ESX driver */
     VIR_FROM_PHYP = 29,                /* Error from IBM power hypervisor */
+
     VIR_FROM_SECRET = 30,      /* Error from secret storage */
     VIR_FROM_CPU = 31,         /* Error from CPU driver */
     VIR_FROM_XENAPI = 32,      /* Error from XenAPI */
     VIR_FROM_NWFILTER = 33,    /* Error from network filter driver */
     VIR_FROM_HOOK = 34,                /* Error from Synchronous hooks */
+
     VIR_FROM_DOMAIN_SNAPSHOT = 35,/* Error from domain snapshot */
     VIR_FROM_AUDIT = 36,       /* Error from auditing subsystem */
     VIR_FROM_SYSINFO = 37,     /* Error from sysinfo/SMBIOS */
     VIR_FROM_STREAMS = 38,     /* Error from I/O streams */
     VIR_FROM_VMWARE = 39,      /* Error from VMware driver */
+
     VIR_FROM_EVENT = 40,       /* Error from event loop impl */
     VIR_FROM_LIBXL = 41,       /* Error from libxenlight driver */
     VIR_FROM_LOCKING = 42,     /* Error from lock manager */
     VIR_FROM_HYPERV = 43,      /* Error from Hyper-V driver */
     VIR_FROM_CAPABILITIES = 44, /* Error from capabilities */
+
     VIR_FROM_URI = 45,          /* Error from URI handling */
     VIR_FROM_AUTH = 46,         /* Error from auth handling */
     VIR_FROM_DBUS = 47,         /* Error from DBus */
+
+# ifdef VIR_ENUM_SENTINELS
+    VIR_ERR_DOMAIN_LAST
+# endif
 } virErrorDomain;
 
 
index b1a5d2ba4b3816a8c90d15fddc70d23be0539e02..cb37be010e2a4221efb52b8ab43b7c5f85f63b40 100644 (file)
@@ -40,156 +40,67 @@ static virLogPriority virErrorLevelPriority(virErrorLevel level) {
     return VIR_LOG_ERROR;
 }
 
-static const char *virErrorDomainName(virErrorDomain domain) {
-    const char *dom = "unknown";
-    switch (domain) {
-        case VIR_FROM_NONE:
-            dom = "";
-            break;
-        case VIR_FROM_XEN:
-            dom = "Xen ";
-            break;
-        case VIR_FROM_XENAPI:
-            dom = "XenAPI ";
-            break;
-        case VIR_FROM_LIBXL:
-            dom = "xenlight ";
-            break;
-        case VIR_FROM_XML:
-            dom = "XML ";
-            break;
-        case VIR_FROM_XEND:
-            dom = "Xen Daemon ";
-            break;
-        case VIR_FROM_XENSTORE:
-            dom = "Xen Store ";
-            break;
-        case VIR_FROM_XEN_INOTIFY:
-            dom = "Xen Inotify ";
-            break;
-        case VIR_FROM_DOM:
-            dom = "Domain ";
-            break;
-        case VIR_FROM_RPC:
-            dom = "RPC ";
-            break;
-        case VIR_FROM_QEMU:
-            dom = "QEMU ";
-            break;
-        case VIR_FROM_NET:
-            dom = "Network ";
-            break;
-        case VIR_FROM_TEST:
-            dom = "Test ";
-            break;
-        case VIR_FROM_REMOTE:
-            dom = "Remote ";
-            break;
-        case VIR_FROM_SEXPR:
-            dom = "S-Expr ";
-            break;
-        case VIR_FROM_PROXY:
-            dom = "PROXY ";
-            break;
-        case VIR_FROM_CONF:
-            dom = "Config ";
-            break;
-        case VIR_FROM_PHYP:
-            dom = "IBM power hypervisor ";
-            break;
-        case VIR_FROM_OPENVZ:
-            dom = "OpenVZ ";
-            break;
-        case VIR_FROM_VMWARE:
-            dom = "VMware ";
-            break;
-        case VIR_FROM_XENXM:
-            dom = "Xen XM ";
-            break;
-        case VIR_FROM_STATS_LINUX:
-            dom = "Linux Stats ";
-            break;
-        case VIR_FROM_LXC:
-            dom = "Linux Container ";
-            break;
-        case VIR_FROM_STORAGE:
-            dom = "Storage ";
-            break;
-        case VIR_FROM_NETWORK:
-            dom = "Network Config ";
-            break;
-        case VIR_FROM_DOMAIN:
-            dom = "Domain Config ";
-            break;
-        case VIR_FROM_NODEDEV:
-            dom = "Node Device ";
-            break;
-        case VIR_FROM_UML:
-            dom = "UML ";
-            break;
-        case VIR_FROM_SECURITY:
-            dom = "Security Labeling ";
-            break;
-        case VIR_FROM_VBOX:
-            dom = "VBOX ";
-            break;
-        case VIR_FROM_INTERFACE:
-            dom = "Interface ";
-            break;
-        case VIR_FROM_ONE:
-            dom = "ONE ";
-            break;
-        case VIR_FROM_ESX:
-            dom = "ESX ";
-            break;
-        case VIR_FROM_SECRET:
-            dom = "Secret Storage ";
-            break;
-        case VIR_FROM_CPU:
-            dom = "CPU ";
-            break;
-        case VIR_FROM_NWFILTER:
-            dom = "Network Filter ";
-            break;
-        case VIR_FROM_HOOK:
-            dom = "Sync Hook ";
-            break;
-        case VIR_FROM_DOMAIN_SNAPSHOT:
-            dom = "Domain Snapshot ";
-            break;
-        case VIR_FROM_AUDIT:
-            dom = "Audit ";
-            break;
-        case VIR_FROM_SYSINFO:
-            dom = "Sysinfo ";
-            break;
-        case VIR_FROM_STREAMS:
-            dom = "Streams ";
-            break;
-        case VIR_FROM_EVENT:
-            dom = "Events ";
-            break;
-        case VIR_FROM_LOCKING:
-            dom = "Locking ";
-            break;
-        case VIR_FROM_HYPERV:
-            dom = "Hyper-V ";
-            break;
-        case VIR_FROM_CAPABILITIES:
-            dom = "Capabilities ";
-            break;
-        case VIR_FROM_URI:
-            dom = "URI ";
-            break;
-        case VIR_FROM_AUTH:
-            dom = "Auth ";
-            break;
-        case VIR_FROM_DBUS:
-            dom = "DBus ";
-            break;
-    }
-    return dom;
-}
+
+VIR_ENUM_DECL(virErrorDomain)
+VIR_ENUM_IMPL(virErrorDomain, VIR_ERR_DOMAIN_LAST,
+              "", /* 0 */
+              "Xen Driver",
+              "Xen Daemon",
+              "Xen Store",
+              "S-Expression",
+
+              "XML Util", /* 5 */
+              "Domain",
+              "XML-RPC",
+              "Proxy Daemon",
+              "Config File",
+
+              "QEMU Driver", /* 10 */
+              "Network",
+              "Test Driver",
+              "Remote Driver",
+              "OpenVZ Driver",
+
+              "Xen XM Driver", /* 15 */
+              "Linux Statistics",
+              "LXC Driver",
+              "Storage Driver",
+              "Network Driver",
+
+              "Domain Config", /* 20 */
+              "User Mode Linux Driver",
+              "Node Device Driver",
+              "Xen Inotify Driver",
+              "Security Driver",
+
+              "VirtualBox Driver", /* 25 */
+              "Network Interface Driver",
+              "Open Nebula Driver",
+              "ESX Driver",
+              "Power Hypervisor Driver",
+
+              "Secrets Driver", /* 30 */
+              "CPU Driver",
+              "XenAPI Driver",
+              "Network Filter Driver",
+              "Lifecycle Hook",
+
+              "Domain Snapshot", /* 35 */
+              "Audit Utils",
+              "Sysinfo Utils",
+              "I/O Stream Utils",
+              "VMWare Driver",
+
+              "Event Loop", /* 40 */
+              "Xen Light Driver",
+              "Lock Driver",
+              "Hyper-V Driver",
+              "Capabilities Utils",
+
+              "URI Utils", /* 45 */
+              "Authentication Utils",
+              "DBus Utils"
+    )
 
 
 /*
@@ -585,7 +496,9 @@ virDefaultErrorFunc(virErrorPtr err)
             lvl = _("error");
             break;
     }
-    dom = virErrorDomainName(err->domain);
+    dom = virErrorDomainTypeToString(err->domain);
+    if (!dom)
+        dom = "Unknown";
     if ((err->dom != NULL) && (err->code != VIR_ERR_INVALID_DOMAIN)) {
         domain = err->dom->name;
     } else if ((err->net != NULL) && (err->code != VIR_ERR_INVALID_NETWORK)) {
@@ -594,13 +507,13 @@ virDefaultErrorFunc(virErrorPtr err)
     len = strlen(err->message);
     if ((err->domain == VIR_FROM_XML) && (err->code == VIR_ERR_XML_DETAIL) &&
         (err->int1 != 0))
-        fprintf(stderr, "libvir: %s%s %s%s: line %d: %s",
+        fprintf(stderr, "libvir: %s %s %s%s: line %d: %s",
                 dom, lvl, domain, network, err->int1, err->message);
     else if ((len == 0) || (err->message[len - 1] != '\n'))
-        fprintf(stderr, "libvir: %s%s %s%s: %s\n",
+        fprintf(stderr, "libvir: %s %s %s%s: %s\n",
                 dom, lvl, domain, network, err->message);
     else
-        fprintf(stderr, "libvir: %s%s %s%s: %s",
+        fprintf(stderr, "libvir: %s %s %s%s: %s",
                 dom, lvl, domain, network, err->message);
 }