@xen-orchestra/backups 0.39.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{Backup.js → Backup.mjs} +4 -6
- package/{DurablePartition.js → DurablePartition.mjs} +2 -4
- package/{HealthCheckVmBackup.js → HealthCheckVmBackup.mjs} +2 -4
- package/{ImportVmBackup.js → ImportVmBackup.mjs} +6 -8
- package/{RemoteAdapter.js → RemoteAdapter.mjs} +69 -76
- package/RestoreMetadataBackup.mjs +32 -0
- package/{Task.js → Task.mjs} +3 -6
- package/_backupType.mjs +4 -0
- package/{_backupWorker.js → _backupWorker.mjs} +22 -22
- package/{_cancelableMap.js → _cancelableMap.mjs} +3 -5
- package/{_cleanVm.js → _cleanVm.mjs} +16 -19
- package/_filenameDate.mjs +6 -0
- package/{_getOldEntries.js → _getOldEntries.mjs} +1 -3
- package/{_getTmpDir.js → _getTmpDir.mjs} +5 -7
- package/_getVmBackupDir.mjs +5 -0
- package/{_incrementalVm.js → _incrementalVm.mjs} +21 -20
- package/{_isValidXva.js → _isValidXva.mjs} +2 -5
- package/{_listPartitions.js → _listPartitions.mjs} +6 -9
- package/{_lvm.js → _lvm.mjs} +5 -7
- package/_runners/{Metadata.js → Metadata.mjs} +10 -12
- package/_runners/{VmsRemote.js → VmsRemote.mjs} +12 -14
- package/_runners/{VmsXapi.js → VmsXapi.mjs} +13 -15
- package/_runners/{_Abstract.js → _Abstract.mjs} +7 -9
- package/_runners/{_PoolMetadataBackup.js → _PoolMetadataBackup.mjs} +7 -10
- package/_runners/{_RemoteTimeoutError.js → _RemoteTimeoutError.mjs} +1 -3
- package/_runners/{_XoMetadataBackup.js → _XoMetadataBackup.mjs} +14 -10
- package/_runners/{_createStreamThrottle.js → _createStreamThrottle.mjs} +4 -6
- package/_runners/{_forkStreamUnpipe.js → _forkStreamUnpipe.mjs} +4 -5
- package/_runners/{_getAdaptersByRemote.js → _getAdaptersByRemote.mjs} +1 -3
- package/_runners/_runTask.mjs +5 -0
- package/_runners/_vmRunners/{FullRemote.js → FullRemote.mjs} +9 -12
- package/_runners/_vmRunners/{FullXapi.js → FullXapi.mjs} +7 -9
- package/_runners/_vmRunners/{IncrementalRemote.js → IncrementalRemote.mjs} +11 -12
- package/_runners/_vmRunners/{IncrementalXapi.js → IncrementalXapi.mjs} +18 -20
- package/_runners/_vmRunners/{_Abstract.js → _Abstract.mjs} +4 -6
- package/_runners/_vmRunners/{_AbstractRemote.js → _AbstractRemote.mjs} +6 -6
- package/_runners/_vmRunners/{_AbstractXapi.js → _AbstractXapi.mjs} +14 -17
- package/_runners/_vmRunners/_forkDeltaExport.mjs +11 -0
- package/_runners/_writers/{FullRemoteWriter.js → FullRemoteWriter.mjs} +6 -8
- package/_runners/_writers/{FullXapiWriter.js → FullXapiWriter.mjs} +10 -12
- package/_runners/_writers/{IncrementalRemoteWriter.js → IncrementalRemoteWriter.mjs} +22 -24
- package/_runners/_writers/{IncrementalXapiWriter.js → IncrementalXapiWriter.mjs} +11 -13
- package/_runners/_writers/{_AbstractFullWriter.js → _AbstractFullWriter.mjs} +2 -4
- package/_runners/_writers/{_AbstractIncrementalWriter.js → _AbstractIncrementalWriter.mjs} +2 -4
- package/_runners/_writers/{_AbstractWriter.js → _AbstractWriter.mjs} +3 -5
- package/_runners/_writers/{_MixinRemoteWriter.js → _MixinRemoteWriter.mjs} +10 -12
- package/_runners/_writers/{_MixinXapiWriter.js → _MixinXapiWriter.mjs} +6 -8
- package/_runners/_writers/_checkVhd.mjs +6 -0
- package/_runners/_writers/{_listReplicatedVms.js → _listReplicatedVms.mjs} +1 -3
- package/_runners/_writers/{_packUuid.js → _packUuid.mjs} +1 -3
- package/{_watchStreamSize.js → _watchStreamSize.mjs} +1 -3
- package/{extractIdsFromSimplePattern.js → extractIdsFromSimplePattern.mjs} +1 -3
- package/{formatVmBackups.js → formatVmBackups.mjs} +3 -5
- package/merge-worker/cli.mjs +103 -0
- package/merge-worker/config.toml +1 -0
- package/merge-worker/{index.js → index.mjs} +6 -7
- package/package.json +12 -9
- package/{parseMetadataBackupId.js → parseMetadataBackupId.mjs} +2 -4
- package/{runBackupWorker.js → runBackupWorker.mjs} +4 -7
- package/RestoreMetadataBackup.js +0 -29
- package/_backupType.js +0 -6
- package/_filenameDate.js +0 -8
- package/_getVmBackupDir.js +0 -8
- package/_runners/_runTask.js +0 -6
- package/_runners/_vmRunners/_forkDeltaExport.js +0 -12
- package/_runners/_writers/_checkVhd.js +0 -8
- package/merge-worker/cli.js +0 -92
package/merge-worker/cli.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// eslint-disable-next-line eslint-comments/disable-enable-pair
|
|
3
|
-
/* eslint-disable n/shebang */
|
|
4
|
-
|
|
5
|
-
'use strict'
|
|
6
|
-
|
|
7
|
-
const { catchGlobalErrors } = require('@xen-orchestra/log/configure')
|
|
8
|
-
const { createLogger } = require('@xen-orchestra/log')
|
|
9
|
-
const { getSyncedHandler } = require('@xen-orchestra/fs')
|
|
10
|
-
const { join } = require('path')
|
|
11
|
-
const Disposable = require('promise-toolbox/Disposable')
|
|
12
|
-
const min = require('lodash/min')
|
|
13
|
-
|
|
14
|
-
const { getVmBackupDir } = require('../_getVmBackupDir.js')
|
|
15
|
-
const { RemoteAdapter } = require('../RemoteAdapter.js')
|
|
16
|
-
|
|
17
|
-
const { CLEAN_VM_QUEUE } = require('./index.js')
|
|
18
|
-
|
|
19
|
-
// -------------------------------------------------------------------
|
|
20
|
-
|
|
21
|
-
catchGlobalErrors(createLogger('xo:backups:mergeWorker'))
|
|
22
|
-
|
|
23
|
-
const { fatal, info, warn } = createLogger('xo:backups:mergeWorker')
|
|
24
|
-
|
|
25
|
-
// -------------------------------------------------------------------
|
|
26
|
-
|
|
27
|
-
const main = Disposable.wrap(async function* main(args) {
|
|
28
|
-
const handler = yield getSyncedHandler({ url: 'file://' + process.cwd() })
|
|
29
|
-
|
|
30
|
-
yield handler.lock(CLEAN_VM_QUEUE)
|
|
31
|
-
|
|
32
|
-
const adapter = new RemoteAdapter(handler)
|
|
33
|
-
|
|
34
|
-
const listRetry = async () => {
|
|
35
|
-
const timeoutResolver = resolve => setTimeout(resolve, 10e3)
|
|
36
|
-
for (let i = 0; i < 10; ++i) {
|
|
37
|
-
const entries = await handler.list(CLEAN_VM_QUEUE)
|
|
38
|
-
if (entries.length !== 0) {
|
|
39
|
-
return entries
|
|
40
|
-
}
|
|
41
|
-
await new Promise(timeoutResolver)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
let taskFiles
|
|
46
|
-
while ((taskFiles = await listRetry()) !== undefined) {
|
|
47
|
-
const taskFileBasename = min(taskFiles)
|
|
48
|
-
const previousTaskFile = join(CLEAN_VM_QUEUE, taskFileBasename)
|
|
49
|
-
const taskFile = join(CLEAN_VM_QUEUE, '_' + taskFileBasename)
|
|
50
|
-
|
|
51
|
-
// move this task to the end
|
|
52
|
-
try {
|
|
53
|
-
await handler.rename(previousTaskFile, taskFile)
|
|
54
|
-
} catch (error) {
|
|
55
|
-
// this error occurs if the task failed too many times (i.e. too many `_` prefixes)
|
|
56
|
-
// there is nothing more that can be done
|
|
57
|
-
if (error.code === 'ENAMETOOLONG') {
|
|
58
|
-
await handler.unlink(previousTaskFile)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
throw error
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
const vmDir = getVmBackupDir(String(await handler.readFile(taskFile)))
|
|
66
|
-
try {
|
|
67
|
-
await adapter.cleanVm(vmDir, { merge: true, logInfo: info, logWarn: warn, remove: true })
|
|
68
|
-
} catch (error) {
|
|
69
|
-
// consider the clean successful if the VM dir is missing
|
|
70
|
-
if (error.code !== 'ENOENT') {
|
|
71
|
-
throw error
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
handler.unlink(taskFile).catch(error => warn('deleting task failure', { error }))
|
|
76
|
-
} catch (error) {
|
|
77
|
-
warn('failure handling task', { error })
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
info('starting')
|
|
83
|
-
main(process.argv.slice(2)).then(
|
|
84
|
-
() => {
|
|
85
|
-
info('bye :-)')
|
|
86
|
-
},
|
|
87
|
-
error => {
|
|
88
|
-
fatal(error)
|
|
89
|
-
|
|
90
|
-
process.exit(1)
|
|
91
|
-
}
|
|
92
|
-
)
|