Mayank Chhabra
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with
23 additions and
0 deletions
-
README.md
-
logic/disk.js
-
logic/system.js
-
routes/v1/system.js
-
utils/const.js
|
@ -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_STATUS_FILE` | Path to update status file | `/statuses/update-status.json` | |
|
|
| `UPDATE_SIGNAL_FILE` | Path to write the update signal file | `/signals/update` | |
|
|
| `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` | |
|
|
| `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 |
|
|
### Step 3. Run manager |
|
|
```sh |
|
|
```sh |
|
|
|
@ -126,6 +126,10 @@ function writeUpdateSignalFile() { |
|
|
return diskService.writeFile(constants.UPDATE_SIGNAL_FILE, 'true'); |
|
|
return diskService.writeFile(constants.UPDATE_SIGNAL_FILE, 'true'); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function readBackupStatusFile() { |
|
|
|
|
|
return diskService.readJsonFile(constants.BACKUP_STATUS_FILE); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function readJWTPrivateKeyFile() { |
|
|
function readJWTPrivateKeyFile() { |
|
|
return diskService.readFile(constants.JWT_PRIVATE_KEY_FILE); |
|
|
return diskService.readFile(constants.JWT_PRIVATE_KEY_FILE); |
|
|
} |
|
|
} |
|
@ -208,6 +212,7 @@ module.exports = { |
|
|
writeUpdateSignalFile, |
|
|
writeUpdateSignalFile, |
|
|
updateSignalFileExists, |
|
|
updateSignalFileExists, |
|
|
updateLockFileExists, |
|
|
updateLockFileExists, |
|
|
|
|
|
readBackupStatusFile, |
|
|
readJWTPrivateKeyFile, |
|
|
readJWTPrivateKeyFile, |
|
|
readJWTPublicKeyFile, |
|
|
readJWTPublicKeyFile, |
|
|
writeJWTPrivateKeyFile, |
|
|
writeJWTPrivateKeyFile, |
|
|
|
@ -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() { |
|
|
async function requestShutdown() { |
|
|
try { |
|
|
try { |
|
|
await diskLogic.shutdown(); |
|
|
await diskLogic.shutdown(); |
|
@ -163,6 +172,7 @@ module.exports = { |
|
|
getAvailableUpdate, |
|
|
getAvailableUpdate, |
|
|
getUpdateStatus, |
|
|
getUpdateStatus, |
|
|
startUpdate, |
|
|
startUpdate, |
|
|
|
|
|
getBackupStatus, |
|
|
requestShutdown, |
|
|
requestShutdown, |
|
|
requestReboot |
|
|
requestReboot |
|
|
}; |
|
|
}; |
|
|
|
@ -44,6 +44,12 @@ router.post('/update', auth.jwt, safeHandler(async (req, res) => { |
|
|
return res.status(constants.STATUS_CODES.OK).json(status); |
|
|
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) => { |
|
|
router.post('/shutdown', auth.jwt, safeHandler(async (req, res) => { |
|
|
const result = await systemLogic.requestShutdown(); |
|
|
const result = await systemLogic.requestShutdown(); |
|
|
|
|
|
|
|
|
|
@ -17,6 +17,7 @@ module.exports = { |
|
|
UPDATE_STATUS_FILE: process.env.UPDATE_STATUS_FILE || '/statuses/update-status.json', |
|
|
UPDATE_STATUS_FILE: process.env.UPDATE_STATUS_FILE || '/statuses/update-status.json', |
|
|
UPDATE_SIGNAL_FILE: process.env.UPDATE_SIGNAL_FILE || '/signals/update', |
|
|
UPDATE_SIGNAL_FILE: process.env.UPDATE_SIGNAL_FILE || '/signals/update', |
|
|
UPDATE_LOCK_FILE: process.env.UPDATE_LOCK_FILE || '/statuses/update-in-progress', |
|
|
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: { |
|
|
STATUS_CODES: { |
|
|
ACCEPTED: 202, |
|
|
ACCEPTED: 202, |
|
|
BAD_GATEWAY: 502, |
|
|
BAD_GATEWAY: 502, |
|
|