From 58e8d75935215c52fa75f4be412eae13f108d846 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Fri, 22 Feb 2019 18:30:43 +0100 Subject: [PATCH] chore(xen-api/*setField*): take separate type and ref --- @xen-orchestra/cr-seed-cli/index.js | 25 +++++++++---------------- packages/xen-api/src/index.js | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/@xen-orchestra/cr-seed-cli/index.js b/@xen-orchestra/cr-seed-cli/index.js index 61d672cec..ec8e90cd0 100755 --- a/@xen-orchestra/cr-seed-cli/index.js +++ b/@xen-orchestra/cr-seed-cli/index.js @@ -82,21 +82,17 @@ ${cliName} v${pkg.version} ) await Promise.all([ - srcXapi.setFieldEntries(srcSnapshot, 'other_config', metadata), - srcXapi.setFieldEntries(srcSnapshot, 'other_config', { + srcSnapshot.update_other_config(metadata), + srcSnapshot.update_other_config({ 'xo:backup:exported': 'true', }), - tgtXapi.setField( - tgtVm, - 'name_label', - `${srcVm.name_label} (${srcSnapshot.snapshot_time})` - ), - tgtXapi.setFieldEntries(tgtVm, 'other_config', metadata), - tgtXapi.setFieldEntries(tgtVm, 'other_config', { + tgtVm.set_name_label(`${srcVm.name_label} (${srcSnapshot.snapshot_time})`), + tgtVm.update_other_config(metadata), + tgtVm.update_other_config({ 'xo:backup:sr': tgtSr.uuid, 'xo:copy_of': srcSnapshotUuid, }), - tgtXapi.setFieldEntries(tgtVm, 'blocked_operations', { + tgtVm.update_blocked_operations({ start: 'Start operation for this vm is blocked, clone it if you want to use it.', }), @@ -105,12 +101,9 @@ ${cliName} v${pkg.version} const srcDisk = srcDisks[userDevice] const tgtDisk = tgtDisks[userDevice] - return tgtXapi.setFieldEntry( - tgtDisk, - 'other_config', - 'xo:copy_of', - srcDisk.uuid - ) + return tgtDisk.update_other_config({ + 'xo:copy_of': srcDisk.uuid, + }) }) ), ]) diff --git a/packages/xen-api/src/index.js b/packages/xen-api/src/index.js index f170369df..3d9f8b0f7 100644 --- a/packages/xen-api/src/index.js +++ b/packages/xen-api/src/index.js @@ -724,39 +724,39 @@ export class Xapi extends EventEmitter { ) } - setField({ $type, $ref }, field, value) { - return this.call(`${$type}.set_${field}`, $ref, value).then(noop) + setField(type, ref, field, value) { + return this.call(`${type}.set_${field}`, ref, value).then(noop) } - setFieldEntries(record, field, entries) { + setFieldEntries(type, ref, field, entries) { return Promise.all( getKeys(entries).map(entry => { const value = entries[entry] if (value !== undefined) { return value === null - ? this.unsetFieldEntry(record, field, entry) - : this.setFieldEntry(record, field, entry, value) + ? this.unsetFieldEntry(type, ref, field, entry) + : this.setFieldEntry(type, ref, field, entry, value) } }) ).then(noop) } - async setFieldEntry({ $type, $ref }, field, entry, value) { + async setFieldEntry(type, ref, field, entry, value) { while (true) { try { - await this.call(`${$type}.add_to_${field}`, $ref, entry, value) + await this.call(`${type}.add_to_${field}`, ref, entry, value) return } catch (error) { if (error == null || error.code !== 'MAP_DUPLICATE_KEY') { throw error } } - await this.unsetFieldEntry({ $type, $ref }, field, entry) + await this.unsetFieldEntry(type, ref, field, entry) } } - unsetFieldEntry({ $type, $ref }, field, entry) { - return this.call(`${$type}.remove_from_${field}`, $ref, entry) + unsetFieldEntry(type, ref, field, entry) { + return this.call(`${type}.remove_from_${field}`, ref, entry) } watchTask(ref) { @@ -1073,7 +1073,7 @@ export class Xapi extends EventEmitter { const props = { $type: type } fields.forEach(field => { props[`set_${field}`] = function(value) { - return xapi.setField(this, field, value) + return xapi.setField(this.$type, this.$ref, field, value) } const $field = (field in RESERVED_FIELDS ? '$$' : '$') + field @@ -1102,7 +1102,7 @@ export class Xapi extends EventEmitter { return result } props[`update_${field}`] = function(entries) { - return xapi.setFieldEntries(this, field, entries) + return xapi.setFieldEntries(this.$type, this.$ref, field, entries) } } else if (value === '' || isOpaqueRef(value)) { // 2019-02-07 - JFT: even if `value` should not be an empty string for