Since vboxDomainAttachDeviceImple not used in vbox_tmpl.c, it has
been deleted.
---
src/vbox/vbox_common.c | 16 +++
src/vbox/vbox_tmpl.c | 215 -----------------------------------------
src/vbox/vbox_uniformed_api.h | 2 +
3 files changed, 18 insertions(+), 215 deletions(-)
diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index f22cb5b..71c97a0 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -4169,3 +4169,19 @@ int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
return vboxDomainAttachDeviceImpl(dom, xml, 0);
}
+
+int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml,
+ unsigned int flags)
+{
+ virCheckFlags(VIR_DOMAIN_AFFECT_CURRENT |
+ VIR_DOMAIN_AFFECT_LIVE |
+ VIR_DOMAIN_AFFECT_CONFIG, -1);
+
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("cannot modify the persistent configuration of a
domain"));
+ return -1;
+ }
+
+ return vboxDomainAttachDeviceImpl(dom, xml, 1);
+}
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
index 5078f27..dd93e2a 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
@@ -1450,221 +1450,6 @@ _vboxAttachDrivesOld(virDomainDefPtr def ATTRIBUTE_UNUSED,
#endif /* VBOX_API_VERSION >= 4000000 */
-static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
- const char *xml,
- int mediaChangeOnly ATTRIBUTE_UNUSED)
-{
- VBOX_OBJECT_CHECK(dom->conn, int, -1);
- IMachine *machine = NULL;
- vboxIID iid = VBOX_IID_INITIALIZER;
- PRUint32 state = MachineState_Null;
- virDomainDefPtr def = NULL;
- virDomainDeviceDefPtr dev = NULL;
- nsresult rc;
-
- if (VIR_ALLOC(def) < 0)
- return ret;
-
- if (VIR_STRDUP(def->os.type, "hvm") < 0)
- goto cleanup;
-
- dev = virDomainDeviceDefParse(xml, def, data->caps, data->xmlopt,
- VIR_DOMAIN_XML_INACTIVE);
- if (dev == NULL)
- goto cleanup;
-
- vboxIIDFromUUID(&iid, dom->uuid);
- rc = VBOX_OBJECT_GET_MACHINE(iid.value, &machine);
- if (NS_FAILED(rc)) {
- virReportError(VIR_ERR_NO_DOMAIN, "%s",
- _("no domain with matching uuid"));
- goto cleanup;
- }
-
- if (machine) {
- machine->vtbl->GetState(machine, &state);
-
- if ((state == MachineState_Running) ||
- (state == MachineState_Paused)) {
- rc = VBOX_SESSION_OPEN_EXISTING(iid.value, machine);
- } else {
- rc = VBOX_SESSION_OPEN(iid.value, machine);
- }
- if (NS_SUCCEEDED(rc)) {
- rc = data->vboxSession->vtbl->GetMachine(data->vboxSession,
&machine);
- if (NS_SUCCEEDED(rc) && machine) {
- if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
-#if VBOX_API_VERSION < 3001000
- const char *src = virDomainDiskGetSource(dev->data.disk);
- int type = virDomainDiskGetType(dev->data.disk);
-
- if (dev->data.disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
- if (type == VIR_STORAGE_TYPE_FILE && src) {
- IDVDDrive *dvdDrive = NULL;
- /* Currently CDROM/DVD Drive is always IDE
- * Secondary Master so neglecting the following
- * parameter dev->data.disk->bus
- */
- machine->vtbl->GetDVDDrive(machine, &dvdDrive);
- if (dvdDrive) {
- IDVDImage *dvdImage = NULL;
- PRUnichar *dvdfileUtf16 = NULL;
- vboxIID dvduuid = VBOX_IID_INITIALIZER;
- vboxIID dvdemptyuuid = VBOX_IID_INITIALIZER;
-
- VBOX_UTF8_TO_UTF16(src, &dvdfileUtf16);
-
-
data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16,
&dvdImage);
- if (!dvdImage) {
-
data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16,
dvdemptyuuid.value, &dvdImage);
- }
- if (dvdImage) {
- rc = dvdImage->vtbl->imedium.GetId((IMedium
*)dvdImage, &dvduuid.value);
- if (NS_FAILED(rc)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("can't get the uuid of
the file to "
- "be attached to cdrom: %s,
rc=%08x"),
- src, (unsigned)rc);
- } else {
- /* unmount the previous mounted image */
- dvdDrive->vtbl->Unmount(dvdDrive);
- rc = dvdDrive->vtbl->MountImage(dvdDrive,
dvduuid.value);
- if (NS_FAILED(rc)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("could not attach the
file to cdrom: %s, rc=%08x"),
- src, (unsigned)rc);
- } else {
- ret = 0;
- DEBUGIID("CD/DVD Image UUID:",
dvduuid.value);
- }
- }
-
- VBOX_MEDIUM_RELEASE(dvdImage);
- }
- vboxIIDUnalloc(&dvduuid);
- VBOX_UTF16_FREE(dvdfileUtf16);
- VBOX_RELEASE(dvdDrive);
- }
- } else if (type == VIR_STORAGE_TYPE_BLOCK) {
- }
- } else if (dev->data.disk->device ==
VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
- if (type == VIR_STORAGE_TYPE_FILE && src) {
- IFloppyDrive *floppyDrive;
- machine->vtbl->GetFloppyDrive(machine,
&floppyDrive);
- if (floppyDrive) {
- rc = floppyDrive->vtbl->SetEnabled(floppyDrive,
1);
- if (NS_SUCCEEDED(rc)) {
- IFloppyImage *floppyImage = NULL;
- PRUnichar *fdfileUtf16 = NULL;
- vboxIID fduuid = VBOX_IID_INITIALIZER;
- vboxIID fdemptyuuid = VBOX_IID_INITIALIZER;
- VBOX_UTF8_TO_UTF16(src, &fdfileUtf16);
- rc =
data->vboxObj->vtbl->FindFloppyImage(data->vboxObj,
-
fdfileUtf16,
-
&floppyImage);
-
- if (!floppyImage) {
-
data->vboxObj->vtbl->OpenFloppyImage(data->vboxObj,
-
fdfileUtf16,
-
fdemptyuuid.value,
-
&floppyImage);
- }
-
- if (floppyImage) {
- rc =
floppyImage->vtbl->imedium.GetId((IMedium *)floppyImage, &fduuid.value);
- if (NS_FAILED(rc)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("can't get the uuid
of the file to be "
- "attached to floppy
drive: %s, rc=%08x"),
- src, (unsigned)rc);
- } else {
- rc =
floppyDrive->vtbl->MountImage(floppyDrive, fduuid.value);
- if (NS_FAILED(rc)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("could not attach
the file to floppy drive: %s, rc=%08x"),
- src, (unsigned)rc);
- } else {
- ret = 0;
- DEBUGIID("attached floppy,
UUID:", fduuid.value);
- }
- }
- VBOX_MEDIUM_RELEASE(floppyImage);
- }
- vboxIIDUnalloc(&fduuid);
- VBOX_UTF16_FREE(fdfileUtf16);
- }
- VBOX_RELEASE(floppyDrive);
- }
- } else if (type == VIR_STORAGE_TYPE_BLOCK) {
- }
- }
-#else /* VBOX_API_VERSION >= 3001000 */
-#endif /* VBOX_API_VERSION >= 3001000 */
- } else if (dev->type == VIR_DOMAIN_DEVICE_NET) {
- } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
- if (dev->data.hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
{
- if (dev->data.hostdev->source.subsys.type ==
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
- }
- }
- } else if (dev->type == VIR_DOMAIN_DEVICE_FS &&
- dev->data.fs->type == VIR_DOMAIN_FS_TYPE_MOUNT) {
- PRUnichar *nameUtf16;
- PRUnichar *hostPathUtf16;
- PRBool writable;
-
- VBOX_UTF8_TO_UTF16(dev->data.fs->dst, &nameUtf16);
- VBOX_UTF8_TO_UTF16(dev->data.fs->src, &hostPathUtf16);
- writable = !dev->data.fs->readonly;
-
-#if VBOX_API_VERSION < 4000000
- rc = machine->vtbl->CreateSharedFolder(machine, nameUtf16,
hostPathUtf16,
- writable);
-#else /* VBOX_API_VERSION >= 4000000 */
- rc = machine->vtbl->CreateSharedFolder(machine, nameUtf16,
hostPathUtf16,
- writable, PR_FALSE);
-#endif /* VBOX_API_VERSION >= 4000000 */
-
- if (NS_FAILED(rc)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("could not attach shared folder
'%s', rc=%08x"),
- dev->data.fs->dst, (unsigned)rc);
- } else {
- ret = 0;
- }
-
- VBOX_UTF16_FREE(nameUtf16);
- VBOX_UTF16_FREE(hostPathUtf16);
- }
- machine->vtbl->SaveSettings(machine);
- VBOX_RELEASE(machine);
- }
- VBOX_SESSION_CLOSE();
- }
- }
-
- cleanup:
- vboxIIDUnalloc(&iid);
- virDomainDefFree(def);
- virDomainDeviceDefFree(dev);
- return ret;
-}
-
-static int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml,
- unsigned int flags)
-{
- virCheckFlags(VIR_DOMAIN_AFFECT_CURRENT |
- VIR_DOMAIN_AFFECT_LIVE |
- VIR_DOMAIN_AFFECT_CONFIG, -1);
-
- if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot modify the persistent configuration of a
domain"));
- return -1;
- }
-
- return vboxDomainAttachDeviceImpl(dom, xml, 1);
-}
-
static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml)
{
VBOX_OBJECT_CHECK(dom->conn, int, -1);
diff --git a/src/vbox/vbox_uniformed_api.h b/src/vbox/vbox_uniformed_api.h
index 69090f3..493d12c 100644
--- a/src/vbox/vbox_uniformed_api.h
+++ b/src/vbox/vbox_uniformed_api.h
@@ -527,6 +527,8 @@ int vboxConnectNumOfDefinedDomains(virConnectPtr conn);
int vboxDomainAttachDevice(virDomainPtr dom, const char *xml);
int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
unsigned int flags);
+int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml,
+ unsigned int flags);
/* Version specified functions for installing uniformed API */
void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);
--
1.7.9.5