Skip to content

Commit 95e739f

Browse files
authored
Merge pull request #8615 from romayalon/romy-config-dir-locked-unlocked-enum
NC | Online Upgrade | Short refactoring
2 parents df9f8b2 + ce3efbc commit 95e739f

File tree

6 files changed

+39
-34
lines changed

6 files changed

+39
-34
lines changed

src/manage_nsfs/health.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ const P = require('../util/promise');
77
const config = require('../../config');
88
const os_util = require('../util/os_utils');
99
const nb_native = require('../util/nb_native');
10+
const { CONFIG_DIR_PHASES } = require('../sdk/config_fs');
1011
const native_fs_utils = require('../util/native_fs_utils');
1112
const { read_stream_join } = require('../util/buffer_utils');
1213
const { make_https_request } = require('../util/http_utils');
1314
const { TYPES } = require('./manage_nsfs_constants');
1415
const { get_boolean_or_string_value, throw_cli_error, write_stdout_response, get_bucket_owner_account_by_id } = require('./manage_nsfs_cli_utils');
1516
const { ManageCLIResponse } = require('./manage_nsfs_cli_responses');
1617
const ManageCLIError = require('./manage_nsfs_cli_errors').ManageCLIError;
17-
const { CONFIG_DIR_LOCKED, CONFIG_DIR_UNLOCKED } = require('../upgrade/nc_upgrade_manager');
1818

1919

2020
const HOSTNAME = 'localhost';
@@ -472,10 +472,10 @@ class NSFSHealth {
472472
*/
473473
_get_config_dir_upgrade_status(config_dir_data) {
474474
if (config_dir_data.in_progress_upgrade) return { in_progress_upgrade: config_dir_data.in_progress_upgrade };
475-
if (config_dir_data.phase === CONFIG_DIR_LOCKED) {
475+
if (config_dir_data.phase === CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED) {
476476
return { error: 'last_upgrade_failed', last_failure: config_dir_data.upgrade_history.last_failure };
477477
}
478-
if (config_dir_data.phase === CONFIG_DIR_UNLOCKED) {
478+
if (config_dir_data.phase === CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED) {
479479
return { message: 'there is no in-progress upgrade' };
480480
}
481481
}

src/sdk/config_fs.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ const CONFIG_TYPES = Object.freeze({
5656
const JSON_SUFFIX = '.json';
5757
const SYMLINK_SUFFIX = '.symlink';
5858

59+
const CONFIG_DIR_PHASES = Object.freeze({
60+
CONFIG_DIR_LOCKED: 'CONFIG_DIR_LOCKED',
61+
CONFIG_DIR_UNLOCKED: 'CONFIG_DIR_UNLOCKED'
62+
});
63+
5964
// TODO: A General Disclaimer about symlinks manipulated by this class -
6065
// currently we use direct symlink()/ unlink()
6166
// safe_link / safe_unlink can be better but the current impl causing ELOOP - Too many levels of symbolic links
@@ -71,6 +76,8 @@ const SYMLINK_SUFFIX = '.symlink';
7176
* The upgrade script will run via `noobaa-cli upgrade run command`
7277
*/
7378

79+
const CONFIG_DIR_VERSION = '1.0.0';
80+
7481
class ConfigFS {
7582

7683
/**
@@ -81,7 +88,7 @@ class ConfigFS {
8188
constructor(config_root, config_root_backend, fs_context) {
8289
this.config_root = config_root;
8390
this.config_root_backend = config_root_backend || config.NSFS_NC_CONFIG_DIR_BACKEND;
84-
this.config_dir_version = '1.0.0';
91+
this.config_dir_version = CONFIG_DIR_VERSION;
8592
this.old_accounts_dir_path = path.join(config_root, CONFIG_SUBDIRS.ACCOUNTS);
8693
this.accounts_by_name_dir_path = path.join(config_root, CONFIG_SUBDIRS.ACCOUNTS_BY_NAME);
8794
this.identities_dir_path = path.join(config_root, CONFIG_SUBDIRS.IDENTITIES);
@@ -1191,7 +1198,7 @@ class ConfigFS {
11911198
config_directory: {
11921199
config_dir_version: this.config_dir_version,
11931200
upgrade_package_version: pkg.version,
1194-
phase: 'CONFIG_DIR_UNLOCKED',
1201+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
11951202
upgrade_history: {
11961203
successful_upgrades: [],
11971204
last_failure: undefined
@@ -1206,4 +1213,5 @@ exports.SYMLINK_SUFFIX = SYMLINK_SUFFIX;
12061213
exports.JSON_SUFFIX = JSON_SUFFIX;
12071214
exports.CONFIG_SUBDIRS = CONFIG_SUBDIRS;
12081215
exports.CONFIG_TYPES = CONFIG_TYPES;
1216+
exports.CONFIG_DIR_PHASES = CONFIG_DIR_PHASES;
12091217
exports.ConfigFS = ConfigFS;

src/test/unit_tests/jest_tests/test_cli_upgrade.test.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const { TMP_PATH, exec_manage_cli, clean_config_dir, fail_test_if_default_config
1414
const { ManageCLIError } = require('../../../manage_nsfs/manage_nsfs_cli_errors');
1515
const { ManageCLIResponse } = require('../../../manage_nsfs/manage_nsfs_cli_responses');
1616
const { TYPES, UPGRADE_ACTIONS } = require('../../../manage_nsfs/manage_nsfs_constants');
17+
const { CONFIG_DIR_PHASES } = require('../../../sdk/config_fs');
1718

1819
const config_root = path.join(TMP_PATH, 'config_root_cli_upgrade_test');
1920
const config_fs = new ConfigFS(config_root);
@@ -73,7 +74,7 @@ const old_expected_system_json2 = {
7374
config_directory: {
7475
'config_dir_version': '1.0.0',
7576
'upgrade_package_version': '5.18.0',
76-
'phase': 'CONFIG_DIR_UNLOCKED',
77+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
7778
'upgrade_history': {
7879
'successful_upgrades': [
7980
{
@@ -102,7 +103,7 @@ const old_expected_system_json5 = {
102103
config_directory: {
103104
'config_dir_version': '0.0.0',
104105
'upgrade_package_version': '5.17.0',
105-
'phase': 'CONFIG_DIR_UNLOCKED',
106+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
106107
'upgrade_history': {
107108
'successful_upgrades': [
108109
{
@@ -130,7 +131,7 @@ const new_expected_system_json = {
130131
},
131132
config_directory: {
132133
'config_dir_version': '1.0.0',
133-
'phase': 'CONFIG_DIR_UNLOCKED',
134+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
134135
'upgrade_history': {
135136
'successful_upgrades': [
136137
{
@@ -164,7 +165,7 @@ const new_expected_system_json = {
164165
// },
165166
// config_directory: {
166167
// 'config_dir_version': '1',
167-
// 'phase': 'CONFIG_DIR_UNLOCKED',
168+
// 'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
168169
// 'upgrade_history': {
169170
// 'successful_upgrades': [
170171
// {

src/test/unit_tests/jest_tests/test_nc_upgrade_manager.test.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ const fs_utils = require('../../../util/fs_utils');
1414
const config = require('../../../../config');
1515
const pkg = require('../../../../package.json');
1616
const { NCUpgradeManager, DEFAULT_NC_UPGRADE_SCRIPTS_DIR, OLD_DEFAULT_PACKAGE_VERSION,
17-
OLD_DEFAULT_CONFIG_DIR_VERSION, CONFIG_DIR_UNLOCKED, CONFIG_DIR_LOCKED } = require('../../../upgrade/nc_upgrade_manager');
18-
const { ConfigFS } = require('../../../sdk/config_fs');
17+
OLD_DEFAULT_CONFIG_DIR_VERSION } = require('../../../upgrade/nc_upgrade_manager');
18+
const { ConfigFS, CONFIG_DIR_PHASES } = require('../../../sdk/config_fs');
1919
const { TMP_PATH, create_redirect_file, create_config_dir,
2020
fail_test_if_default_config_dir_exists, clean_config_dir, TEST_TIMEOUT } = require('../../system_tests/test_utils');
2121

@@ -84,7 +84,7 @@ const old_expected_system_json_has_config_directory = {
8484
config_directory: {
8585
'config_dir_version': '1.0.0',
8686
'upgrade_package_version': '5.18.0',
87-
'phase': 'CONFIG_DIR_UNLOCKED',
87+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
8888
'upgrade_history': {
8989
'successful_upgrades': [{
9090
'timestamp': 1724687496424,
@@ -158,7 +158,7 @@ const old_expected_system_json_empty_successful_upgrades = {
158158
},
159159
config_directory: {
160160
'config_dir_version': '1',
161-
'phase': 'CONFIG_DIR_UNLOCKED',
161+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
162162
'upgrade_history': {
163163
'successful_upgrades': []
164164
}
@@ -513,7 +513,7 @@ describe('nc upgrade manager - upgrade config directory', () => {
513513
const expected_data = {
514514
...system_data,
515515
config_directory: {
516-
phase: CONFIG_DIR_UNLOCKED,
516+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
517517
config_dir_version: this_upgrade.config_dir_to_version,
518518
upgrade_package_version: this_upgrade.package_to_version,
519519
upgrade_history: {
@@ -558,7 +558,7 @@ describe('nc upgrade manager - upgrade config directory', () => {
558558
const expected_data = {
559559
...system_data,
560560
config_directory: {
561-
phase: CONFIG_DIR_UNLOCKED,
561+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
562562
config_dir_version: this_upgrade.config_dir_to_version,
563563
upgrade_package_version: this_upgrade.package_to_version,
564564
upgrade_history: {
@@ -599,14 +599,14 @@ describe('nc upgrade manager - upgrade config directory', () => {
599599
package_from_version: '5.18.0',
600600
package_to_version: '5.18.1',
601601
};
602-
system_data.config_directory.phase = CONFIG_DIR_LOCKED;
602+
system_data.config_directory.phase = CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED;
603603
const new_error = new Error('this is a new last failure error');
604604
await config_fs.create_system_config_file(JSON.stringify(system_data));
605605
await nc_upgrade_manager._update_config_dir_upgrade_failed(system_data, this_upgrade, new_error);
606606
const expected_data = {
607607
...system_data,
608608
config_directory: {
609-
phase: CONFIG_DIR_LOCKED,
609+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED,
610610
config_dir_version: system_data.config_directory.config_dir_version,
611611
upgrade_package_version: system_data.config_directory.upgrade_package_version,
612612
upgrade_history: {
@@ -627,7 +627,7 @@ describe('nc upgrade manager - upgrade config directory', () => {
627627
'package_from_version': '5.17.0',
628628
'package_to_version': '5.18.0'
629629
}];
630-
system_data.config_directory.phase = CONFIG_DIR_LOCKED;
630+
system_data.config_directory.phase = CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED;
631631
system_data.config_directory.upgrade_history.last_failure = {
632632
'timestamp': 1714687496424,
633633
'running_host': hostname,
@@ -653,7 +653,7 @@ describe('nc upgrade manager - upgrade config directory', () => {
653653
const expected_data = {
654654
...system_data,
655655
config_directory: {
656-
phase: CONFIG_DIR_LOCKED,
656+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED,
657657
config_dir_version: system_data.config_directory.config_dir_version,
658658
upgrade_package_version: system_data.config_directory.upgrade_package_version,
659659
upgrade_history: {
@@ -680,7 +680,7 @@ function assert_upgrade_start_data(actual_upgrade_start, expected_system_data) {
680680
actual_upgrade_start.config_directory;
681681
const expected_in_progress_upgrade = expected_system_data.config_directory?.in_progress_upgrade;
682682

683-
expect(phase).toBe(CONFIG_DIR_LOCKED);
683+
expect(phase).toBe(CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED);
684684
expect(config_dir_version).toBe(expected_system_data.config_directory?.config_dir_version);
685685
expect(upgrade_package_version).toBe(expected_system_data.config_directory?.upgrade_package_version);
686686
expect(upgrade_history).toEqual(expected_system_data.config_directory?.upgrade_history);
@@ -727,7 +727,7 @@ function assert_config_dir_defaults(actual_config_dir_defaults, system_data) {
727727
OLD_DEFAULT_PACKAGE_VERSION;
728728
expect(config_dir_version).toBe(OLD_DEFAULT_CONFIG_DIR_VERSION);
729729
expect(upgrade_package_version).toBe(expected_package_from_version);
730-
expect(phase).toBe(CONFIG_DIR_UNLOCKED);
730+
expect(phase).toBe(CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED);
731731
expect(upgrade_history).toEqual({ successful_upgrades: [] });
732732
}
733733

src/test/unit_tests/test_nc_health.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const { get_process_fs_context } = require('../../util/native_fs_utils');
1919
const { ManageCLIError } = require('../../manage_nsfs/manage_nsfs_cli_errors');
2020
const { TYPES, DIAGNOSE_ACTIONS, ACTIONS } = require('../../manage_nsfs/manage_nsfs_constants');
2121
const { TMP_PATH, create_fs_user_by_platform, delete_fs_user_by_platform, exec_manage_cli } = require('../system_tests/test_utils');
22-
const { CONFIG_DIR_UNLOCKED, CONFIG_DIR_LOCKED } = require('../../upgrade/nc_upgrade_manager');
22+
const { CONFIG_DIR_PHASES } = require('../../sdk/config_fs');
2323

2424
const tmp_fs_path = path.join(TMP_PATH, 'test_nc_health');
2525
const DEFAULT_FS_CONFIG = get_process_fs_context();
@@ -39,7 +39,7 @@ const get_service_state_mock_default_response = [{ service_status: 'active', pid
3939
const get_endpoint_response_mock_default_response = [{ response: { response_code: 'RUNNING', total_fork_count: 0 } }];
4040
const get_system_config_mock_default_response = [{
4141
...valid_system_json, config_directory: {
42-
phase: CONFIG_DIR_UNLOCKED, config_dir_version: '1.0.0',
42+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED, config_dir_version: '1.0.0',
4343
package_version: pkg.version, upgrade_history: []
4444
} }];
4545
const default_mock_upgrade_status = { message: 'there is no in-progress upgrade' };
@@ -188,7 +188,7 @@ mocha.describe('nsfs nc health', function() {
188188
valid_system_json.config_directory = {
189189
'config_dir_version': config_fs.config_dir_version,
190190
'upgrade_package_version': pkg.version,
191-
'phase': CONFIG_DIR_UNLOCKED
191+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED
192192
};
193193
await Health.config_fs.create_system_config_file(JSON.stringify(valid_system_json));
194194
set_mock_functions(Health, {
@@ -608,7 +608,7 @@ mocha.describe('nsfs nc health', function() {
608608
valid_system_json.config_directory = {
609609
'config_dir_version': config_fs.config_dir_version,
610610
'upgrade_package_version': pkg.version,
611-
'phase': CONFIG_DIR_LOCKED,
611+
'phase': CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED,
612612
upgrade_history: {
613613
successful_upgrades: [],
614614
last_failure: { error: 'mock error'}
@@ -624,7 +624,7 @@ mocha.describe('nsfs nc health', function() {
624624
valid_system_json.config_directory = {
625625
config_dir_version: config_fs.config_dir_version,
626626
upgrade_package_version: pkg.version,
627-
phase: CONFIG_DIR_LOCKED,
627+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED,
628628
upgrade_history: {
629629
successful_upgrades: [],
630630
},

src/upgrade/nc_upgrade_manager.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@ const path = require('path');
77
const util = require('util');
88
const pkg = require('../../package.json');
99
const dbg = require('../util/debug_module')(__filename);
10+
const { CONFIG_DIR_PHASES } = require('../sdk/config_fs');
1011
const { should_upgrade, run_upgrade_scripts, version_compare } = require('./upgrade_utils');
1112

1213
const hostname = os.hostname();
13-
14-
const CONFIG_DIR_LOCKED = 'CONFIG_DIR_LOCKED';
15-
const CONFIG_DIR_UNLOCKED = 'CONFIG_DIR_UNLOCKED';
1614
// prior to 5.18.0 - there is no config dir version, the config dir version to be used on the first upgrade is 0.0.0 (5.17.0 -> 5.18.0)
1715
const OLD_DEFAULT_CONFIG_DIR_VERSION = '0.0.0';
1816
const OLD_DEFAULT_PACKAGE_VERSION = '5.17.0';
@@ -143,7 +141,7 @@ class NCUpgradeManager {
143141
return {
144142
config_dir_version: OLD_DEFAULT_CONFIG_DIR_VERSION,
145143
upgrade_package_version: hosts_old_package_version || OLD_DEFAULT_PACKAGE_VERSION,
146-
phase: CONFIG_DIR_UNLOCKED,
144+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
147145
upgrade_history: { successful_upgrades: [] }
148146
};
149147
}
@@ -227,7 +225,7 @@ class NCUpgradeManager {
227225
async _update_config_dir_upgrade_start(system_data, options) {
228226
const updated_config_directory = {
229227
...system_data.config_directory,
230-
phase: CONFIG_DIR_LOCKED,
228+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_LOCKED,
231229
config_dir_version: options.config_dir_from_version,
232230
upgrade_package_version: options.package_from_version,
233231
in_progress_upgrade: {
@@ -276,7 +274,7 @@ class NCUpgradeManager {
276274
const successful_upgrades = upgrade_history?.successful_upgrades || [];
277275

278276
const updated_config_directory = {
279-
phase: CONFIG_DIR_UNLOCKED,
277+
phase: CONFIG_DIR_PHASES.CONFIG_DIR_UNLOCKED,
280278
config_dir_version: this_upgrade.config_dir_to_version,
281279
upgrade_package_version: this_upgrade.package_to_version,
282280
upgrade_history: {
@@ -305,8 +303,6 @@ class NCUpgradeManager {
305303

306304

307305
exports.NCUpgradeManager = NCUpgradeManager;
308-
exports.CONFIG_DIR_UNLOCKED = CONFIG_DIR_UNLOCKED;
309-
exports.CONFIG_DIR_LOCKED = CONFIG_DIR_LOCKED;
310306
exports.OLD_DEFAULT_CONFIG_DIR_VERSION = OLD_DEFAULT_CONFIG_DIR_VERSION;
311307
exports.OLD_DEFAULT_PACKAGE_VERSION = OLD_DEFAULT_PACKAGE_VERSION;
312308
exports.DEFAULT_NC_UPGRADE_SCRIPTS_DIR = DEFAULT_NC_UPGRADE_SCRIPTS_DIR;

0 commit comments

Comments
 (0)