]> xenbits.xensource.com Git - libvirt.git/commitdiff
Better error reporting from qemu AttachDevice
authorCole Robinson <crobinso@redhat.com>
Mon, 2 Mar 2009 17:39:43 +0000 (17:39 +0000)
committerCole Robinson <crobinso@redhat.com>
Mon, 2 Mar 2009 17:39:43 +0000 (17:39 +0000)
ChangeLog
src/domain_conf.c
src/domain_conf.h
src/libvirt_private.syms
src/qemu_driver.c

index 3c5adb6332c04dbb5fcad61a0fbfa2f6a51bdc09..f4b398cc13b49812e7730d073bc8963db033594a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Mar 2 12:37:04 EST 2009 Cole Robinson <crobinso@redhat.com>
+
+       * src/domain_conf.c src/domain_conf.h src/libvirt_private.syms
+         src/qemu_driver.c:
+         Better error reporting from qemu AttachDevice
+
 Mon Mar 2 12:34:25 EST 2009 Cole Robinson <crobinso@redhat.com>
 
        * src/bridge.c src/bridge.h src/libvirt_private.syms src/network_conf.c
index d2f3417297736bdba2e6ddde944fd024a7552c75..30c8b8b63d5b66f43c54a0dd0946d49e8a8996e1 100644 (file)
@@ -73,6 +73,14 @@ VIR_ENUM_IMPL(virDomainLifecycle, VIR_DOMAIN_LIFECYCLE_LAST,
               "rename-restart",
               "preserve")
 
+VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST,
+              "disk",
+              "filesystem",
+              "interface",
+              "input",
+              "sound",
+              "hostdev")
+
 VIR_ENUM_IMPL(virDomainDisk, VIR_DOMAIN_DISK_TYPE_LAST,
               "block",
               "file")
index 8574f65104199638c19bd7a381af1bc677192f0e..428c0fa7b5d06b93eeb0d7c95479eecfabfcb247 100644 (file)
@@ -343,6 +343,8 @@ enum virDomainDeviceType {
     VIR_DOMAIN_DEVICE_INPUT,
     VIR_DOMAIN_DEVICE_SOUND,
     VIR_DOMAIN_DEVICE_HOSTDEV,
+
+    VIR_DOMAIN_DEVICE_LAST,
 };
 
 typedef struct _virDomainDeviceDef virDomainDeviceDef;
@@ -622,6 +624,7 @@ VIR_ENUM_DECL(virDomainVirt)
 VIR_ENUM_DECL(virDomainBoot)
 VIR_ENUM_DECL(virDomainFeature)
 VIR_ENUM_DECL(virDomainLifecycle)
+VIR_ENUM_DECL(virDomainDevice)
 VIR_ENUM_DECL(virDomainDisk)
 VIR_ENUM_DECL(virDomainDiskDevice)
 VIR_ENUM_DECL(virDomainDiskBus)
index 950ecdc09757d4e6da0c7fb432796f7dcc2612e3..5aa9edfc70501f3d7daacff4d5664c43c486ab1a 100644 (file)
@@ -68,6 +68,7 @@ virDomainDefParseString;
 virDomainDeleteConfig;
 virDomainDeviceDefFree;
 virDomainDeviceDefParse;
+virDomainDeviceTypeToString;
 virDomainDiskBusTypeToString;
 virDomainDiskDefFree;
 virDomainDiskDeviceTypeToString;
index 3723c524c2e6a27c0758c61967502cbdebc87d9b..5221c35693fd6a32737a15f93d9c460896ea46c1 100644 (file)
@@ -3472,17 +3472,25 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
         case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
             ret = qemudDomainChangeEjectableMedia(dom->conn, vm, dev);
             break;
+
         case VIR_DOMAIN_DISK_DEVICE_DISK:
             if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_USB) {
                 ret = qemudDomainAttachUsbMassstorageDevice(dom->conn, vm, dev);
             } else if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_SCSI ||
                        dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) {
                 ret = qemudDomainAttachPciDiskDevice(dom->conn, vm, dev);
+            } else {
+                qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
+                                 _("disk bus '%s' cannot be hotplugged."),
+                                 virDomainDiskBusTypeToString(dev->data.disk->bus));
+                goto cleanup;
             }
             break;
+
         default:
             qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
-                             "%s", _("this disk device type cannot be attached"));
+                             _("disk device type '%s' cannot be hotplugged"),
+                             virDomainDiskDeviceTypeToString(dev->data.disk->device));
             goto cleanup;
         }
     } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&
@@ -3491,7 +3499,8 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
         ret = qemudDomainAttachHostDevice(dom->conn, vm, dev);
     } else {
         qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
-                         "%s", _("this device type cannot be attached"));
+                         _("device type '%s' cannot be attached"),
+                         virDomainDeviceTypeToString(dev->type));
         goto cleanup;
     }