From 830902bedcb1fcf8a613709afa1977a721f4b1f2 Mon Sep 17 00:00:00 2001 From: Mayank Chhabra Date: Sat, 5 Sep 2020 16:11:29 +0530 Subject: [PATCH] Get backup status (#40) --- README.md | 1 + logic/disk.js | 5 +++++ logic/system.js | 10 ++++++++++ routes/v1/system.js | 6 ++++++ utils/const.js | 1 + 5 files changed, 23 insertions(+) diff --git a/README.md b/README.md index 86b34ba..0a00018 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ Set the following environment variables directly or by placing them in `.env` fi | `UPDATE_STATUS_FILE` | Path to update status file | `/statuses/update-status.json` | | `UPDATE_SIGNAL_FILE` | Path to write the update signal file | `/signals/update` | | `UPDATE_LOCK_FILE` | Path to the update lock file | `/statuses/update-in-progress` | +| `BACKUP_STATUS_FILE` | Path to backup status file | `/statuses/backup-status.json` | ### Step 3. Run manager ```sh diff --git a/logic/disk.js b/logic/disk.js index c18625d..0b95bba 100644 --- a/logic/disk.js +++ b/logic/disk.js @@ -126,6 +126,10 @@ function writeUpdateSignalFile() { return diskService.writeFile(constants.UPDATE_SIGNAL_FILE, 'true'); } +function readBackupStatusFile() { + return diskService.readJsonFile(constants.BACKUP_STATUS_FILE); +} + function readJWTPrivateKeyFile() { return diskService.readFile(constants.JWT_PRIVATE_KEY_FILE); } @@ -208,6 +212,7 @@ module.exports = { writeUpdateSignalFile, updateSignalFileExists, updateLockFileExists, + readBackupStatusFile, readJWTPrivateKeyFile, readJWTPublicKeyFile, writeJWTPrivateKeyFile, diff --git a/logic/system.js b/logic/system.js index 86037e7..ef9bf9b 100644 --- a/logic/system.js +++ b/logic/system.js @@ -136,6 +136,15 @@ async function startUpdate() { } } +async function getBackupStatus() { + try { + const status = await diskLogic.readBackupStatusFile() + return status; + } catch (error) { + throw new NodeError('Unable to get backup status'); + } +} + async function requestShutdown() { try { await diskLogic.shutdown(); @@ -163,6 +172,7 @@ module.exports = { getAvailableUpdate, getUpdateStatus, startUpdate, + getBackupStatus, requestShutdown, requestReboot }; diff --git a/routes/v1/system.js b/routes/v1/system.js index fad3726..18e62d8 100644 --- a/routes/v1/system.js +++ b/routes/v1/system.js @@ -44,6 +44,12 @@ router.post('/update', auth.jwt, safeHandler(async (req, res) => { return res.status(constants.STATUS_CODES.OK).json(status); })); +router.get('/backup-status', safeHandler(async (req, res) => { + const backup = await systemLogic.getBackupStatus(); + + return res.status(constants.STATUS_CODES.OK).json(backup); +})); + router.post('/shutdown', auth.jwt, safeHandler(async (req, res) => { const result = await systemLogic.requestShutdown(); diff --git a/utils/const.js b/utils/const.js index 49b54e5..1782f25 100644 --- a/utils/const.js +++ b/utils/const.js @@ -17,6 +17,7 @@ module.exports = { UPDATE_STATUS_FILE: process.env.UPDATE_STATUS_FILE || '/statuses/update-status.json', UPDATE_SIGNAL_FILE: process.env.UPDATE_SIGNAL_FILE || '/signals/update', UPDATE_LOCK_FILE: process.env.UPDATE_LOCK_FILE || '/statuses/update-in-progress', + BACKUP_STATUS_FILE: process.env.BACKUP_STATUS_FILE || '/statuses/backup-status.json', STATUS_CODES: { ACCEPTED: 202, BAD_GATEWAY: 502,