chore(xen-api): regroup HTTP requests
This commit is contained in:
parent
b47e097983
commit
4052f7f736
@ -433,71 +433,9 @@ export class Xapi extends EventEmitter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a task and automatically destroy it when settled
|
// ===========================================================================
|
||||||
//
|
// HTTP requests
|
||||||
// allowed even in read-only mode because it does not have impact on the
|
// ===========================================================================
|
||||||
// XenServer and it's necessary for getResource()
|
|
||||||
createTask(nameLabel, nameDescription = '') {
|
|
||||||
const promise = this._sessionCall('task.create', [
|
|
||||||
nameLabel,
|
|
||||||
nameDescription,
|
|
||||||
])
|
|
||||||
|
|
||||||
promise.then(taskRef => {
|
|
||||||
const destroy = () =>
|
|
||||||
this._sessionCall('task.destroy', [taskRef]).catch(noop)
|
|
||||||
this.watchTask(taskRef).then(destroy, destroy)
|
|
||||||
})
|
|
||||||
|
|
||||||
return promise
|
|
||||||
}
|
|
||||||
|
|
||||||
getField(type, ref, field) {
|
|
||||||
return this._sessionCall(`${type}.get_${field}`, [ref])
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nice getter which returns the object for a given $id (internal to
|
|
||||||
// this lib), UUID (unique identifier that some objects have) or
|
|
||||||
// opaque reference (internal to XAPI).
|
|
||||||
getObject(idOrUuidOrRef, defaultValue) {
|
|
||||||
if (typeof idOrUuidOrRef === 'object') {
|
|
||||||
idOrUuidOrRef = idOrUuidOrRef.$id
|
|
||||||
}
|
|
||||||
|
|
||||||
const object =
|
|
||||||
this._objects.all[idOrUuidOrRef] || this._objectsByRef[idOrUuidOrRef]
|
|
||||||
|
|
||||||
if (object !== undefined) return object
|
|
||||||
|
|
||||||
if (arguments.length > 1) return defaultValue
|
|
||||||
|
|
||||||
throw new Error('no object with UUID or opaque ref: ' + idOrUuidOrRef)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the object for a given opaque reference (internal to
|
|
||||||
// XAPI).
|
|
||||||
getObjectByRef(ref, defaultValue) {
|
|
||||||
const object = this._objectsByRef[ref]
|
|
||||||
|
|
||||||
if (object !== undefined) return object
|
|
||||||
|
|
||||||
if (arguments.length > 1) return defaultValue
|
|
||||||
|
|
||||||
throw new Error('no object with opaque ref: ' + ref)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the object for a given UUID (unique identifier that some
|
|
||||||
// objects have).
|
|
||||||
getObjectByUuid(uuid, defaultValue) {
|
|
||||||
// Objects ids are already UUIDs if they have one.
|
|
||||||
const object = this._objects.all[uuid]
|
|
||||||
|
|
||||||
if (object) return object
|
|
||||||
|
|
||||||
if (arguments.length > 1) return defaultValue
|
|
||||||
|
|
||||||
throw new Error('no object with UUID: ' + uuid)
|
|
||||||
}
|
|
||||||
|
|
||||||
@cancelable
|
@cancelable
|
||||||
async getResource($cancelToken, pathname, { host, query, task } = {}) {
|
async getResource($cancelToken, pathname, { host, query, task } = {}) {
|
||||||
@ -655,6 +593,72 @@ export class Xapi extends EventEmitter {
|
|||||||
return pTaskResult
|
return pTaskResult
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create a task and automatically destroy it when settled
|
||||||
|
//
|
||||||
|
// allowed even in read-only mode because it does not have impact on the
|
||||||
|
// XenServer and it's necessary for getResource()
|
||||||
|
createTask(nameLabel, nameDescription = '') {
|
||||||
|
const promise = this._sessionCall('task.create', [
|
||||||
|
nameLabel,
|
||||||
|
nameDescription,
|
||||||
|
])
|
||||||
|
|
||||||
|
promise.then(taskRef => {
|
||||||
|
const destroy = () =>
|
||||||
|
this._sessionCall('task.destroy', [taskRef]).catch(noop)
|
||||||
|
this.watchTask(taskRef).then(destroy, destroy)
|
||||||
|
})
|
||||||
|
|
||||||
|
return promise
|
||||||
|
}
|
||||||
|
|
||||||
|
getField(type, ref, field) {
|
||||||
|
return this._sessionCall(`${type}.get_${field}`, [ref])
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nice getter which returns the object for a given $id (internal to
|
||||||
|
// this lib), UUID (unique identifier that some objects have) or
|
||||||
|
// opaque reference (internal to XAPI).
|
||||||
|
getObject(idOrUuidOrRef, defaultValue) {
|
||||||
|
if (typeof idOrUuidOrRef === 'object') {
|
||||||
|
idOrUuidOrRef = idOrUuidOrRef.$id
|
||||||
|
}
|
||||||
|
|
||||||
|
const object =
|
||||||
|
this._objects.all[idOrUuidOrRef] || this._objectsByRef[idOrUuidOrRef]
|
||||||
|
|
||||||
|
if (object !== undefined) return object
|
||||||
|
|
||||||
|
if (arguments.length > 1) return defaultValue
|
||||||
|
|
||||||
|
throw new Error('no object with UUID or opaque ref: ' + idOrUuidOrRef)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the object for a given opaque reference (internal to
|
||||||
|
// XAPI).
|
||||||
|
getObjectByRef(ref, defaultValue) {
|
||||||
|
const object = this._objectsByRef[ref]
|
||||||
|
|
||||||
|
if (object !== undefined) return object
|
||||||
|
|
||||||
|
if (arguments.length > 1) return defaultValue
|
||||||
|
|
||||||
|
throw new Error('no object with opaque ref: ' + ref)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the object for a given UUID (unique identifier that some
|
||||||
|
// objects have).
|
||||||
|
getObjectByUuid(uuid, defaultValue) {
|
||||||
|
// Objects ids are already UUIDs if they have one.
|
||||||
|
const object = this._objects.all[uuid]
|
||||||
|
|
||||||
|
if (object) return object
|
||||||
|
|
||||||
|
if (arguments.length > 1) return defaultValue
|
||||||
|
|
||||||
|
throw new Error('no object with UUID: ' + uuid)
|
||||||
|
}
|
||||||
|
|
||||||
watchTask(ref) {
|
watchTask(ref) {
|
||||||
const watchers = this._taskWatchers
|
const watchers = this._taskWatchers
|
||||||
if (watchers === undefined) {
|
if (watchers === undefined) {
|
||||||
|
Loading…
Reference in New Issue
Block a user