From a3c92b32b6f8ca2bc9ba34661f62fec835d466fa Mon Sep 17 00:00:00 2001 From: Michele Marcucci Date: Thu, 9 Dec 2021 15:34:37 +0100 Subject: [PATCH] Added format node disk --- apolloui | 2 +- backend/format_node_disk | 18 ++++++++++++ backend/format_node_disk_fake | 17 +++++++++++ package.json | 2 +- src/graphql/graphqlModules/Node/nodeFormat.js | 13 +++++++++ src/store/api/node/nodeFormat.js | 29 +++++++++++++++++++ 6 files changed, 79 insertions(+), 2 deletions(-) create mode 100755 backend/format_node_disk create mode 100755 backend/format_node_disk_fake create mode 100644 src/graphql/graphqlModules/Node/nodeFormat.js create mode 100644 src/store/api/node/nodeFormat.js diff --git a/apolloui b/apolloui index c0d56f4..0964115 160000 --- a/apolloui +++ b/apolloui @@ -1 +1 @@ -Subproject commit c0d56f4c4d3eafdf01a8499ddff32d0fcb19506e +Subproject commit 09641151acd13f0f212ee6755b8bfa1ff724e3ca diff --git a/backend/format_node_disk b/backend/format_node_disk new file mode 100755 index 0000000..bcc7a32 --- /dev/null +++ b/backend/format_node_disk @@ -0,0 +1,18 @@ +#!/bin/bash + +# Stop node +screen -X -S node quit +sleep 10 + +# Umount disk +sudo umount /media/nvme + +# Format disk +sudo mkfs.ext4 -F -j /dev/nvme0n1p1 + +# Mount back disk +sudo mount /dev/nvme0n1p1 /media/nvme + +# Recreate Bitcoin directory +sudo mkdir /media/nvme/Bitcoin +sudo chown futurebit.futurebit /media/nvme/Bitcoin \ No newline at end of file diff --git a/backend/format_node_disk_fake b/backend/format_node_disk_fake new file mode 100755 index 0000000..3f821b3 --- /dev/null +++ b/backend/format_node_disk_fake @@ -0,0 +1,17 @@ +#!/bin/bash + +# Stop node +screen -X -S node quit +sleep 5 + +# Umount disk +echo "umounting disk" + +# Format disk +echo "formatting disk" + +# Mount back disk +echo "mounting back disk" + +# Recreate Bitcoin directory +echo "recreating dir" \ No newline at end of file diff --git a/package.json b/package.json index 148a5f0..218ff5a 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "node": ">= 8.x" }, "scripts": { - "dev": "./node_modules/nodemon/bin/nodemon.js src/init.js | ./node_modules/.bin/bunyan", + "dev": "PORT=5001 ./node_modules/nodemon/bin/nodemon.js src/init.js | ./node_modules/.bin/bunyan", "build": "pkg . --targets node8-linux-armv7 --no-bytecode", "run-container": "docker run --rm -it -v \"$(pwd)\":/hostdir --entrypoint=/bin/bash orange" }, diff --git a/src/graphql/graphqlModules/Node/nodeFormat.js b/src/graphql/graphqlModules/Node/nodeFormat.js new file mode 100644 index 0000000..a3f1398 --- /dev/null +++ b/src/graphql/graphqlModules/Node/nodeFormat.js @@ -0,0 +1,13 @@ +module.exports.typeDefs = ` + type NodeActions { + format: EmptyOutput! + } +`; + +module.exports.resolvers = { + NodeActions: { + format (root, args, { dispatch }) { + return dispatch('api/node/format'); + } + } +}; diff --git a/src/store/api/node/nodeFormat.js b/src/store/api/node/nodeFormat.js new file mode 100644 index 0000000..39319c8 --- /dev/null +++ b/src/store/api/node/nodeFormat.js @@ -0,0 +1,29 @@ +const { join } = require('path') +const { exec } = require('child_process') +const axios = require('axios') + +module.exports = ({ define }) => { + define('format', async (payload, { knex, errors, utils }) => { + await formatDisk(); + }, { + auth: true + }) +} + +function formatDisk () { + return new Promise((resolve, reject) => { + const scriptName = (process.env.NODE_ENV === 'production') ? 'format_node_disk' : 'format_node_disk_fake' + const scriptPath = join(__dirname, '..', '..', '..', '..', 'backend', scriptName) + exec(scriptPath, {}, (err, stdout) => { + if (err) { + reject(err) + } else { + try { + resolve(); + } catch (err) { + reject(err) + } + } + }) + }) +}