New Xapi#ejectCdFromVm().

This commit is contained in:
Julien Fontanet 2015-06-24 17:46:34 +02:00
parent 21d265d12f
commit 70780fc4ef
2 changed files with 14 additions and 18 deletions

View File

@ -130,23 +130,8 @@ exports.delete = delete_
#---------------------------------------------------------------------
ejectCd = $coroutine ({vm}) ->
xapi = @getXAPI vm
# Finds the CD drive.
cdDriveRef = null
$forEach (@getObjects vm.$VBDs), (VBD) ->
if VBD.is_cd_drive
cdDriveRef = VBD.ref
return false
return
if cdDriveRef
yield xapi.call 'VBD.eject', cdDriveRef
# Silently attempts to destroy the VBD.
xapi.call('VBD.destroy', cdDriveRef).catch(->)
return true
yield @getXAPI(vm).ejectCdFromVm(vm)
return
ejectCd.params = {
id: { type: 'string' }

View File

@ -717,13 +717,20 @@ export default class Xapi extends XapiBase {
}
_getVmCdDrive (vm) {
for (let vbd of vm.$VBDs) {
for (const vbd of vm.$VBDs) {
if (vbd.type === 'CD') {
return vbd
}
}
}
async _ejectCdFromVm (vm) {
const cdDrive = this._getVmCdDrive(vm)
if (cdDrive) {
await this.call('VBD.eject', cdDrive.$ref)
}
}
async _insertCdIntoVm (cd, vm, {
bootable = false,
force = false
@ -772,6 +779,10 @@ export default class Xapi extends XapiBase {
await this._deleteVdi(this.getObject(vdiId))
}
async ejectCdFromVm (vmId) {
await this._ejectCdFromVm(this.getObject(vmId))
}
async insertCdIntoVm (cdId, vmId, opts = undefined) {
await this._insertCdIntoVm(
this.getObject(cdId),