Merge pull request #82 from vatesfr/vmMetadata

Only VM metadata handle in various backup/export methods
This commit is contained in:
Fabrice Marsaud 2015-09-10 17:14:19 +02:00
commit 7ea2204dfd
2 changed files with 10 additions and 7 deletions

View File

@ -494,8 +494,8 @@ exports.rollingSnapshot = rollingSnapshot
#---------------------------------------------------------------------
backup = $coroutine ({vm, pathToFile, compress}) ->
yield @backupVm({vm, pathToFile, compress: compress ? true})
backup = $coroutine ({vm, pathToFile, compress, onlyMetadata}) ->
yield @backupVm({vm, pathToFile, compress: compress ? true, onlyMetadata: onlyMetadata ? false})
backup.params = {
id: { type: 'string' }
@ -513,7 +513,7 @@ exports.backup = backup
#---------------------------------------------------------------------
rollingBackup = $coroutine ({vm, remoteId, tag, depth, compress}) ->
rollingBackup = $coroutine ({vm, remoteId, tag, depth, compress, onlyMetadata}) ->
remote = yield @getRemote remoteId
if not remote?.path?
throw new Error "No such Remote #{remoteId}"

View File

@ -653,14 +653,17 @@ export default class Xo extends EventEmitter {
// -----------------------------------------------------------------
async backupVm ({vm, pathToFile, compress}) {
async backupVm ({vm, pathToFile, compress, onlyMetadata}) {
const targetStream = fs.createWriteStream(pathToFile, {flag: 'xw'})
const sourceStream = await this.getXAPI(vm).exportVm(vm.id, {compress})
const sourceStream = await this.getXAPI(vm).exportVm(vm.id, {
compress,
onlyMetadata: onlyMetadata || false
})
sourceStream.pipe(targetStream)
await eventToPromise(targetStream, 'finish')
}
async rollingBackupVm ({vm, path, tag, depth, compress}) {
async rollingBackupVm ({vm, path, tag, depth, compress, onlyMetadata}) {
await fs.ensureDirAsync(path)
const files = await fs.readdirAsync(path)
@ -670,7 +673,7 @@ export default class Xo extends EventEmitter {
const date = new Date().toISOString()
const backupFullPath = `${path}/${date}_${tag}_${vm.name_label}.xva`
await this.backupVm({vm, pathToFile: backupFullPath, compress})
await this.backupVm({vm, pathToFile: backupFullPath, compress, onlyMetadata})
const promises = []
for (let surplus = backups.length - (depth - 1); surplus > 0; surplus--) {