1 | import * as fs from 'fs-extra';
|
2 | import * as path from 'path';
|
3 | import { getProvider } from './getProvider';
|
4 | export const restore = async ({ monitor: monitorIn, environment, options, }) => {
|
5 | const monitor = monitorIn.at('node_data_restore');
|
6 | const { dataPath, tmpPath, readyPath } = environment;
|
7 | try {
|
8 | // tslint:disable-next-line no-bitwise
|
9 | await fs.access(readyPath, fs.constants.R_OK | fs.constants.W_OK);
|
10 | monitor.log({
|
11 | name: 'neo_restore_skip_exists',
|
12 | message: 'Skipping restore beause it already exists',
|
13 | });
|
14 | return;
|
15 | }
|
16 | catch (error) {
|
17 | if (error.code !== 'ENOENT') {
|
18 | monitor.logError({
|
19 | name: 'neo_restore_skip_exists',
|
20 | message: 'Encountered error checking for existing restore.',
|
21 | error,
|
22 | });
|
23 | throw error;
|
24 | }
|
25 | }
|
26 | const provider = getProvider({ environment, options });
|
27 | if (provider === undefined) {
|
28 | monitor.log({
|
29 | name: 'neo_restore_skip_no_provider',
|
30 | message: 'Skipping restore due to no provider',
|
31 | });
|
32 | return;
|
33 | }
|
34 | await monitor.captureSpanLog(async (span) => {
|
35 | await Promise.all([fs.remove(dataPath), fs.remove(tmpPath)]);
|
36 | await Promise.all([fs.ensureDir(tmpPath), fs.ensureDir(path.dirname(readyPath)), fs.ensureDir(dataPath)]);
|
37 | await provider.restore(span);
|
38 | await fs.remove(tmpPath);
|
39 | await fs.writeFile(readyPath, 'ready');
|
40 | }, {
|
41 | name: 'neo_restore_execute',
|
42 | trace: true,
|
43 | });
|
44 | };
|
45 |
|
46 | //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEVBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQ2xCLFdBQVcsRUFDWCxPQUFPLEdBS1IsRUFBRSxFQUFFO0lBQ0gsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUNyRCxJQUFJO1FBQ0Ysc0NBQXNDO1FBQ3RDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ1YsSUFBSSxFQUFFLHlCQUF5QjtZQUMvQixPQUFPLEVBQUUsMkNBQTJDO1NBQ3JELENBQUMsQ0FBQztRQUVILE9BQU87S0FDUjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMzQixPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUNmLElBQUksRUFBRSx5QkFBeUI7Z0JBQy9CLE9BQU8sRUFBRSxrREFBa0Q7Z0JBQzNELEtBQUs7YUFDTixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssQ0FBQztTQUNiO0tBQ0Y7SUFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNWLElBQUksRUFBRSw4QkFBOEI7WUFDcEMsT0FBTyxFQUFFLHFDQUFxQztTQUMvQyxDQUFDLENBQUM7UUFFSCxPQUFPO0tBQ1I7SUFFRCxNQUFNLE9BQU8sQ0FBQyxjQUFjLENBQzFCLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNiLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQyxFQUNEO1FBQ0UsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixLQUFLLEVBQUUsSUFBSTtLQUNaLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLW5vZGUtZGF0YS1iYWNrdXAvc3JjL3Jlc3RvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb25pdG9yIH0gZnJvbSAnQG5lby1vbmUvbW9uaXRvcic7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZ2V0UHJvdmlkZXIgfSBmcm9tICcuL2dldFByb3ZpZGVyJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCByZXN0b3JlID0gYXN5bmMgKHtcbiAgbW9uaXRvcjogbW9uaXRvckluLFxuICBlbnZpcm9ubWVudCxcbiAgb3B0aW9ucyxcbn06IHtcbiAgcmVhZG9ubHkgbW9uaXRvcjogTW9uaXRvcjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICByZWFkb25seSBvcHRpb25zOiBPcHRpb25zO1xufSkgPT4ge1xuICBjb25zdCBtb25pdG9yID0gbW9uaXRvckluLmF0KCdub2RlX2RhdGFfcmVzdG9yZScpO1xuICBjb25zdCB7IGRhdGFQYXRoLCB0bXBQYXRoLCByZWFkeVBhdGggfSA9IGVudmlyb25tZW50O1xuICB0cnkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgYXdhaXQgZnMuYWNjZXNzKHJlYWR5UGF0aCwgZnMuY29uc3RhbnRzLlJfT0sgfCBmcy5jb25zdGFudHMuV19PSyk7XG4gICAgbW9uaXRvci5sb2coe1xuICAgICAgbmFtZTogJ25lb19yZXN0b3JlX3NraXBfZXhpc3RzJyxcbiAgICAgIG1lc3NhZ2U6ICdTa2lwcGluZyByZXN0b3JlIGJlYXVzZSBpdCBhbHJlYWR5IGV4aXN0cycsXG4gICAgfSk7XG5cbiAgICByZXR1cm47XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICBtb25pdG9yLmxvZ0Vycm9yKHtcbiAgICAgICAgbmFtZTogJ25lb19yZXN0b3JlX3NraXBfZXhpc3RzJyxcbiAgICAgICAgbWVzc2FnZTogJ0VuY291bnRlcmVkIGVycm9yIGNoZWNraW5nIGZvciBleGlzdGluZyByZXN0b3JlLicsXG4gICAgICAgIGVycm9yLFxuICAgICAgfSk7XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0UHJvdmlkZXIoeyBlbnZpcm9ubWVudCwgb3B0aW9ucyB9KTtcbiAgaWYgKHByb3ZpZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICBtb25pdG9yLmxvZyh7XG4gICAgICBuYW1lOiAnbmVvX3Jlc3RvcmVfc2tpcF9ub19wcm92aWRlcicsXG4gICAgICBtZXNzYWdlOiAnU2tpcHBpbmcgcmVzdG9yZSBkdWUgdG8gbm8gcHJvdmlkZXInLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgbW9uaXRvci5jYXB0dXJlU3BhbkxvZzxQcm9taXNlPHZvaWQ+PihcbiAgICBhc3luYyAoc3BhbikgPT4ge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZzLnJlbW92ZShkYXRhUGF0aCksIGZzLnJlbW92ZSh0bXBQYXRoKV0pO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZzLmVuc3VyZURpcih0bXBQYXRoKSwgZnMuZW5zdXJlRGlyKHBhdGguZGlybmFtZShyZWFkeVBhdGgpKSwgZnMuZW5zdXJlRGlyKGRhdGFQYXRoKV0pO1xuICAgICAgYXdhaXQgcHJvdmlkZXIucmVzdG9yZShzcGFuKTtcbiAgICAgIGF3YWl0IGZzLnJlbW92ZSh0bXBQYXRoKTtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZWFkeVBhdGgsICdyZWFkeScpO1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25lb19yZXN0b3JlX2V4ZWN1dGUnLFxuICAgICAgdHJhY2U6IHRydWUsXG4gICAgfSxcbiAgKTtcbn07XG4iXX0=
|