diff --git a/packages/xo-web/src/xo-app/backup-ng/new/index.js b/packages/xo-web/src/xo-app/backup-ng/new/index.js index b8d319dbd..51dfce0f5 100644 --- a/packages/xo-web/src/xo-app/backup-ng/new/index.js +++ b/packages/xo-web/src/xo-app/backup-ng/new/index.js @@ -129,19 +129,21 @@ const getInitialState = () => ({ $pool: {}, backupMode: false, compression: true, - concurrency: 0, + concurrency: undefined, crMode: false, deltaMode: false, drMode: false, editionMode: undefined, formId: generateRandomId(), + inputConcurrencyId: generateRandomId(), + inputReportWhenId: generateRandomId(), inputTimeoutId: generateRandomId(), name: '', - offlineSnapshot: false, + offlineSnapshot: undefined, paramsUpdated: false, powerState: 'All', remotes: [], - reportWhen: 'failure', + reportWhen: undefined, schedules: {}, settings: {}, showErrors: false, @@ -265,15 +267,21 @@ export default [ ) const globalSettings = props.job.settings[''] + const { + concurrency = globalSettings.concurrency, + offlineSnapshot = globalSettings.offlineSnapshot, + reportWhen = globalSettings.reportWhen, + timeout, + } = state settings[''] = { ...globalSettings, - reportWhen: state.reportWhen, - concurrency: state.concurrency, - offlineSnapshot: state.offlineSnapshot, + reportWhen, + concurrency: state.concurrency === '' ? undefined : concurrency, + offlineSnapshot, timeout: - state.timeout === '' + timeout === '' ? undefined - : state.timeout * 1e3 || globalSettings.timeout, + : timeout * 1e3 || globalSettings.timeout, } await editBackupNgJob({ @@ -357,8 +365,6 @@ export default [ const remotes = job.remotes !== undefined ? destructPattern(job.remotes) : [] const srs = job.srs !== undefined ? destructPattern(job.srs) : [] - const { concurrency, reportWhen, offlineSnapshot } = - job.settings[''] || {} const settings = cloneDeep(job.settings) delete settings[''] const drMode = job.mode === 'full' && !isEmpty(srs) @@ -384,9 +390,6 @@ export default [ crMode, remotes, srs, - reportWhen: reportWhen || 'failure', - concurrency: concurrency || 0, - offlineSnapshot, settings, schedules, ...destructVmsPattern(job.vms), @@ -522,13 +525,12 @@ export default [ return getInitialState() }, - setReportWhen: (_, { value }) => state => ({ - ...state, + setReportWhen: (_, { value }) => () => ({ reportWhen: value, }), - setConcurrency: (_, concurrency) => state => ({ - ...state, - concurrency, + setConcurrency: (_, concurrency) => (_, { job }) => ({ + concurrency: + concurrency === undefined && job !== undefined ? '' : concurrency, }), setTimeout: (_, timeout) => (_, { job }) => ({ timeout: timeout === undefined && job !== undefined ? '' : timeout, @@ -583,7 +585,13 @@ export default [ }), injectState, ({ state, effects, remotesById, job }) => { - const { timeout: jobTimeout } = get(() => job.settings['']) || {} + const { + concurrency: jobConcurrency, + offlineSnapshot: jobOfflineSnapshot, + reportWhen: jobReportWhen = 'failure', + timeout: jobTimeout, + } = + get(() => job.settings['']) || {} if (state.needUpdateParams) { effects.updateParams() @@ -829,28 +837,28 @@ export default [ {_('newBackupAdvancedSettings')} -