From 1a9efb6aecd8c92162447c921478dd5095ebb37d Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 29 Mar 2023 17:08:46 +0800 Subject: [PATCH] chore: always keep platform config --- packages/dashmate/configs/migrations.js | 2 ++ packages/dashmate/src/commands/reset.js | 2 +- .../dashmate/src/commands/status/platform.js | 2 +- packages/dashmate/src/config/Config.js | 22 ++----------------- .../src/listr/tasks/resetNodeTaskFactory.js | 2 +- .../local/configureTenderdashTaskFactory.js | 2 +- .../configureSSLCertificateTaskFactory.js | 1 - .../setup/setupLocalPresetTaskFactory.js | 2 +- .../setup/setupRegularPresetTaskFactory.js | 7 ++---- .../obtainSelfSignedCertificateTaskFactory.js | 2 +- .../listr/tasks/startGroupNodesTaskFactory.js | 4 ++-- .../src/listr/tasks/startNodeTaskFactory.js | 4 ++-- .../dashmate/src/status/scopes/overview.js | 4 ++-- .../dashmate/src/status/scopes/services.js | 2 +- .../renderServiceTemplatesFactory.js | 2 +- .../test/unit/status/scopes/overview.spec.js | 3 +-- .../test/unit/status/scopes/platform.spec.js | 1 - .../test/unit/status/scopes/services.spec.js | 1 - 18 files changed, 21 insertions(+), 44 deletions(-) diff --git a/packages/dashmate/configs/migrations.js b/packages/dashmate/configs/migrations.js index 34fa96c26a4..f68e767fd02 100644 --- a/packages/dashmate/configs/migrations.js +++ b/packages/dashmate/configs/migrations.js @@ -480,6 +480,8 @@ module.exports = { .forEach(([name, config]) => { if (config.platform) { config.platform.enable = name !== 'mainnet'; + } else { + config.platform = (systemConfigs[name] || systemConfigs.base).platform; } if (systemConfigs[name]) { diff --git a/packages/dashmate/src/commands/reset.js b/packages/dashmate/src/commands/reset.js index 94658f1c8b0..c8a6eb8e33b 100644 --- a/packages/dashmate/src/commands/reset.js +++ b/packages/dashmate/src/commands/reset.js @@ -32,7 +32,7 @@ class ResetCommand extends ConfigBaseCommand { throw new Error(`Cannot hard reset non-system config "${config.getName()}"`); } - if (!config.isPlatformEnabled() && isPlatformOnlyReset) { + if (!config.get('platform.enable') && isPlatformOnlyReset) { throw new Error('Cannot reset platform only if platform services are not enabled in config'); } diff --git a/packages/dashmate/src/commands/status/platform.js b/packages/dashmate/src/commands/status/platform.js index 9588528d5fc..00bdc8a27ef 100644 --- a/packages/dashmate/src/commands/status/platform.js +++ b/packages/dashmate/src/commands/status/platform.js @@ -27,7 +27,7 @@ class PlatformStatusCommand extends ConfigBaseCommand { config, getPlatformScope, ) { - if (!config.isPlatformEnabled()) { + if (!config.get('platform.enable')) { throw new Error('Platform is not supported for this node type and network'); } diff --git a/packages/dashmate/src/config/Config.js b/packages/dashmate/src/config/Config.js index d52f8f4db04..9fe370b28d0 100644 --- a/packages/dashmate/src/config/Config.js +++ b/packages/dashmate/src/config/Config.js @@ -104,16 +104,6 @@ class Config { return this; } - /** - * Remove by path - * - * @param {string} path - * @returns {Config} - */ - remove(path) { - return this.set(path, undefined); - } - /** * Get options * @@ -171,7 +161,7 @@ class Config { dockerComposeFiles.push('docker-compose.sentinel.yml'); } - if (this.isPlatformEnabled()) { + if (this.get('platform.enable')) { dockerComposeFiles.push('docker-compose.platform.yml'); if (this.get('platform.sourcePath') !== null) { @@ -188,7 +178,7 @@ class Config { ...convertObjectToEnvs(this.getOptions()), }; - if (this.isPlatformEnabled()) { + if (this.get('platform.enable')) { envs = { ...envs, @@ -212,14 +202,6 @@ class Config { return envs; } - - /** - * - * @returns {boolean} - */ - isPlatformEnabled() { - return this.has('platform') && this.get('platform.enable'); - } } Config.ajv = new Ajv({ coerceTypes: true }); diff --git a/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js index 202642e2a9a..1e3b1dbb076 100644 --- a/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js @@ -37,7 +37,7 @@ function resetNodeTaskFactory( }, { title: 'Remove platform services and associated data', - enabled: (ctx) => ctx.isPlatformOnlyReset && config.isPlatformEnabled(), + enabled: (ctx) => ctx.isPlatformOnlyReset && config.get('platform.enable'), task: async () => { // Remove containers const coreContainerNames = ['core', 'sentinel']; diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js index f98fafe58b6..853fc05280f 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js @@ -19,7 +19,7 @@ function configureTenderdashTaskFactory( return new Listr([ { task: async (ctx) => { - const platformConfigs = configGroup.filter((config) => config.isPlatformEnabled()); + const platformConfigs = configGroup.filter((config) => config.get('platform.enable')); const subTasks = []; diff --git a/packages/dashmate/src/listr/tasks/setup/regular/configureSSLCertificateTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/regular/configureSSLCertificateTaskFactory.js index 042e1403d13..04c4f2145f4 100644 --- a/packages/dashmate/src/listr/tasks/setup/regular/configureSSLCertificateTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/regular/configureSSLCertificateTaskFactory.js @@ -94,7 +94,6 @@ function configureSSLCertificateTaskFactory( { title: 'Configure SSL certificate', task: async (ctx, task) => { - // TODO Move to upper function to show output in upper task? const choices = [ { name: SSL_PROVIDERS.ZEROSSL, message: 'ZeroSSL' }, { name: SSL_PROVIDERS.FILE, message: 'File on disk' }, diff --git a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js index cddb380f238..38a85208586 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js @@ -189,7 +189,7 @@ function setupLocalPresetTaskFactory( config.set('core.miner.enable', true); // Disable platform for the seed node - config.remove('platform'); + config.set('platform.enable', false); } else { config.set('description', `local node #${nodeIndex}`); diff --git a/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js index 267624d2841..38fdb82cf24 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js @@ -81,10 +81,7 @@ function setupRegularPresetTaskFactory( ctx.config = new Config(ctx.preset, systemConfigs[ctx.preset]); - if (!ctx.isHP) { - delete ctx.config.remove('platform'); - } - + ctx.config.set('platform.enable', ctx.isHP); ctx.config.set('core.masternode.enable', ctx.nodeType === NODE_TYPE_MASTERNODE); // eslint-disable-next-line no-param-reassign @@ -132,7 +129,7 @@ function setupRegularPresetTaskFactory( task: () => configureNodeTask(), }, { - enabled: (ctx) => ctx.config && ctx.config.isPlatformEnabled(), + enabled: (ctx) => ctx.config && ctx.config.get('platform.enable'), task: () => configureSSLCertificateTask(), }, { diff --git a/packages/dashmate/src/listr/tasks/ssl/selfSigned/obtainSelfSignedCertificateTaskFactory.js b/packages/dashmate/src/listr/tasks/ssl/selfSigned/obtainSelfSignedCertificateTaskFactory.js index 5687a1a676b..58e7cb70662 100644 --- a/packages/dashmate/src/listr/tasks/ssl/selfSigned/obtainSelfSignedCertificateTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/ssl/selfSigned/obtainSelfSignedCertificateTaskFactory.js @@ -22,7 +22,7 @@ function obtainSelfSignedCertificateTaskFactory( return new Listr([ { task: async (ctx) => { - const platformConfigs = configGroup.filter((config) => config.isPlatformEnabled()); + const platformConfigs = configGroup.filter((config) => config.get('platform.enable')); const subTasks = platformConfigs.map((config) => ({ title: `Create certificate for ${config.getName()}`, diff --git a/packages/dashmate/src/listr/tasks/startGroupNodesTaskFactory.js b/packages/dashmate/src/listr/tasks/startGroupNodesTaskFactory.js index f72d56460d4..c01372202d9 100644 --- a/packages/dashmate/src/listr/tasks/startGroupNodesTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/startGroupNodesTaskFactory.js @@ -38,7 +38,7 @@ function startGroupNodesTaskFactory( )); const platformBuildConfig = configGroup.find((config) => ( - config.has('platform.sourcePath') && config.get('platform.sourcePath') !== null + config.get('platform.enable') && config.get('platform.sourcePath') !== null )); return new Listr([ @@ -155,7 +155,7 @@ function startGroupNodesTaskFactory( enabled: (ctx) => Boolean(ctx.waitForReadiness), task: () => { const tasks = configGroup - .filter((config) => config.isPlatformEnabled()) + .filter((config) => config.get('platform.enable')) .map((config) => ({ title: `Wait for ${config.getName()} node`, task: () => waitForNodeToBeReadyTask(config), diff --git a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js index fc7802b7f7a..a4d71a89bba 100644 --- a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js @@ -47,7 +47,7 @@ function startNodeTaskFactory( } // Check Drive log files are created - if (config.isPlatformEnabled()) { + if (config.get('platform.enable')) { const prettyFilePath = config.get('platform.drive.abci.log.prettyFile.path'); // Remove directory that could potentially be created by Docker mount @@ -84,7 +84,7 @@ function startNodeTaskFactory( }, { enabled: (ctx) => !ctx.skipBuildServices - && config.has('platform.sourcePath') + && config.get('platform.enable') && config.get('platform.sourcePath') !== null, task: () => buildServicesTask(config), }, diff --git a/packages/dashmate/src/status/scopes/overview.js b/packages/dashmate/src/status/scopes/overview.js index ae45a7202a3..07cea3aec19 100644 --- a/packages/dashmate/src/status/scopes/overview.js +++ b/packages/dashmate/src/status/scopes/overview.js @@ -44,7 +44,7 @@ function getOverviewScopeFactory(getCoreScope, }; const platform = { - enabled: config.isPlatformEnabled(), + enabled: config.get('platform.enable'), tenderdash: null, }; @@ -59,7 +59,7 @@ function getOverviewScopeFactory(getCoreScope, masternode.nodeState = nodeState; } - if (config.isPlatformEnabled()) { + if (config.get('platform.enable')) { const { tenderdash } = await getPlatformScope(config); platform.tenderdash = tenderdash; diff --git a/packages/dashmate/src/status/scopes/services.js b/packages/dashmate/src/status/scopes/services.js index ff1d1625054..43c8f23c5f5 100644 --- a/packages/dashmate/src/status/scopes/services.js +++ b/packages/dashmate/src/status/scopes/services.js @@ -25,7 +25,7 @@ function getServicesScopeFactory(dockerCompose) { }); } - if (config.isPlatformEnabled()) { + if (config.get('platform.enable')) { Object.assign(serviceHumanNames, { drive_abci: 'Drive ABCI', drive_tenderdash: 'Drive Tenderdash', diff --git a/packages/dashmate/src/templates/renderServiceTemplatesFactory.js b/packages/dashmate/src/templates/renderServiceTemplatesFactory.js index 09b0d62cba8..28f0bedc3e2 100644 --- a/packages/dashmate/src/templates/renderServiceTemplatesFactory.js +++ b/packages/dashmate/src/templates/renderServiceTemplatesFactory.js @@ -24,7 +24,7 @@ function renderServiceTemplatesFactory() { .sync(`${templatesPath}/**/*.dot`) // Do not render platform templates if it's not configured .filter((templatePath) => ( - !templatePath.includes('templates/platform') || config.isPlatformEnabled() + !templatePath.includes('templates/platform') || config.get('platform.enable') )); const configFiles = {}; diff --git a/packages/dashmate/test/unit/status/scopes/overview.spec.js b/packages/dashmate/test/unit/status/scopes/overview.spec.js index 81c5bbe1c0a..b653c5fccef 100644 --- a/packages/dashmate/test/unit/status/scopes/overview.spec.js +++ b/packages/dashmate/test/unit/status/scopes/overview.spec.js @@ -20,7 +20,6 @@ describe('getOverviewScopeFactory', () => { config = { get: this.sinon.stub(), toEnvs: this.sinon.stub(), - isPlatformEnabled: this.sinon.stub(), }; getOverviewScope = getOverviewScopeFactory(mockGetCoreScope, @@ -74,7 +73,7 @@ describe('getOverviewScopeFactory', () => { }); it('should not load if masternode or platform disabled ', async () => { - config.isPlatformEnabled.returns(false); + config.get.withArgs('platform.enable').returns(false); config.get.withArgs('core.masternode.enable').returns(false); config.get.withArgs('network').returns('mainnet'); diff --git a/packages/dashmate/test/unit/status/scopes/platform.spec.js b/packages/dashmate/test/unit/status/scopes/platform.spec.js index 3e9be784b23..43cf6135988 100644 --- a/packages/dashmate/test/unit/status/scopes/platform.spec.js +++ b/packages/dashmate/test/unit/status/scopes/platform.spec.js @@ -40,7 +40,6 @@ describe('getPlatformScopeFactory', () => { config = { get: this.sinon.stub(), toEnvs: this.sinon.stub(), - isPlatformEnabled: this.sinon.stub(), }; getPlatformScope = getPlatformScopeFactory(mockDockerCompose, diff --git a/packages/dashmate/test/unit/status/scopes/services.spec.js b/packages/dashmate/test/unit/status/scopes/services.spec.js index 7dada5436b3..710c56d8bc2 100644 --- a/packages/dashmate/test/unit/status/scopes/services.spec.js +++ b/packages/dashmate/test/unit/status/scopes/services.spec.js @@ -13,7 +13,6 @@ describe('getServicesScopeFactory', () => { config = { get: this.sinon.stub(), toEnvs: this.sinon.stub(), - isPlatformEnabled: this.sinon.stub(), }; getServicesScope = getServicesScopeFactory(mockDockerCompose);