sbcli-dev 4.0.64__zip → 4.0.66__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sbcli-dev might be problematic. Click here for more details.
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/PKG-INFO +1 -1
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/env_var +1 -1
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_cli/cli.py +4 -2
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/constants.py +2 -2
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/device_controller.py +1 -1
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/health_controller.py +11 -9
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/distr_controller.py +2 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/job_schedule.py +1 -1
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/storage_node.py +1 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/rpc_client.py +6 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_failed_migration.py +6 -5
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_migration.py +5 -5
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_new_dev_migration.py +5 -5
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/storage_node_ops.py +70 -38
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/snode_ops_k8s.py +10 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_storage_node.py +4 -1
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +5 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/README.md +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/pyproject.toml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/setup.cfg +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/setup.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/cluster_ops.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/compute_node_ops.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/lvol_controller.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/snapshot_controller.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/kv_store.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/caching_node.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/cluster.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/compute_node.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/global_settings.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/nvme_device.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/prometheus.yml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/log_agg_service.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/port_stat_collector.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/storage_node_monitor.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/snode_client.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/utils.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/app.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/caching_node_app.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/caching_node_app_k8s.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/node_webapp.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/snode_app.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/snode_app_k8s.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/utils.py +0 -0
|
@@ -57,6 +57,7 @@ class CLIWrapper:
|
|
|
57
57
|
sub_command.add_argument("--iobuf_large_bufsize", help='bdev_set_options param', dest='large_bufsize', type=int, default=0)
|
|
58
58
|
sub_command.add_argument("--enable-test-device", help='Enable creation of test device', action='store_true')
|
|
59
59
|
sub_command.add_argument("--disable-ha-jm", help='Disable HA JM for distrib creation', action='store_false', dest='enable_ha_jm', default=True)
|
|
60
|
+
sub_command.add_argument("--namespace", help='k8s namespace to deploy on',)
|
|
60
61
|
|
|
61
62
|
|
|
62
63
|
# delete storage node
|
|
@@ -693,7 +694,7 @@ class CLIWrapper:
|
|
|
693
694
|
if args.debug:
|
|
694
695
|
self.logger.setLevel(logging.DEBUG)
|
|
695
696
|
else:
|
|
696
|
-
self.logger.setLevel(
|
|
697
|
+
self.logger.setLevel(logging.INFO)
|
|
697
698
|
logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
|
|
698
699
|
|
|
699
700
|
args_dict = args.__dict__
|
|
@@ -739,6 +740,7 @@ class CLIWrapper:
|
|
|
739
740
|
enable_test_device = args.enable_test_device
|
|
740
741
|
enable_ha_jm = args.enable_ha_jm
|
|
741
742
|
number_of_distribs = args.number_of_distribs
|
|
743
|
+
namespace = args.namespace
|
|
742
744
|
|
|
743
745
|
out = storage_ops.add_node(
|
|
744
746
|
cluster_id=cluster_id,
|
|
@@ -757,7 +759,7 @@ class CLIWrapper:
|
|
|
757
759
|
jm_percent=jm_percent,
|
|
758
760
|
number_of_devices=number_of_devices,
|
|
759
761
|
enable_test_device=enable_test_device,
|
|
760
|
-
namespace=
|
|
762
|
+
namespace=namespace,
|
|
761
763
|
number_of_distribs=number_of_distribs,
|
|
762
764
|
enable_ha_jm=enable_ha_jm
|
|
763
765
|
)
|
|
@@ -6,8 +6,8 @@ KVD_DB_FILE_PATH = '/etc/foundationdb/fdb.cluster'
|
|
|
6
6
|
KVD_DB_TIMEOUT_MS = 10000
|
|
7
7
|
SPK_DIR = '/home/ec2-user/spdk'
|
|
8
8
|
RPC_HTTP_PROXY_PORT = 8080
|
|
9
|
-
LOG_LEVEL = logging.
|
|
10
|
-
LOG_WEB_DEBUG =
|
|
9
|
+
LOG_LEVEL = logging.DEBUG
|
|
10
|
+
LOG_WEB_DEBUG = True
|
|
11
11
|
|
|
12
12
|
INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
13
13
|
|
|
@@ -818,7 +818,7 @@ def restart_jm_device(device_id, force=False, format_alceml=False):
|
|
|
818
818
|
bdevs_names = [d['name'] for d in rpc_client.get_bdevs()]
|
|
819
819
|
jm_nvme_bdevs = []
|
|
820
820
|
for dev in snode.nvme_devices:
|
|
821
|
-
if dev.status
|
|
821
|
+
if dev.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_NEW]:
|
|
822
822
|
continue
|
|
823
823
|
dev_part = f"{dev.nvme_bdev[:-2]}p1"
|
|
824
824
|
if dev_part in bdevs_names:
|
|
@@ -40,15 +40,15 @@ def check_cluster(cluster_id):
|
|
|
40
40
|
"Status": "ok" if ret else "failed"
|
|
41
41
|
})
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
for lvol in db_controller.get_lvols(cluster_id):
|
|
44
|
+
ret = check_lvol(lvol.get_id())
|
|
45
|
+
result &= ret
|
|
46
|
+
print("*" * 100)
|
|
47
|
+
data.append({
|
|
48
|
+
"Kind": "LVol",
|
|
49
|
+
"UUID": lvol.get_id(),
|
|
50
|
+
"Status": "ok" if ret else "failed"
|
|
51
|
+
})
|
|
52
52
|
print(utils.print_table(data))
|
|
53
53
|
return result
|
|
54
54
|
|
|
@@ -163,6 +163,8 @@ def check_node(node_id, with_devices=True):
|
|
|
163
163
|
if dev.status in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE]:
|
|
164
164
|
ret = check_device(dev.get_id())
|
|
165
165
|
node_devices_check &= ret
|
|
166
|
+
else:
|
|
167
|
+
logger.info(f"Device skipped: {dev.get_id()} status: {dev.status}")
|
|
166
168
|
print("*" * 100)
|
|
167
169
|
|
|
168
170
|
logger.info(f"Node remote device: {len(snode.remote_devices)}")
|
|
@@ -35,6 +35,8 @@ def send_node_status_event(node, node_status, target_node=None):
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
def send_dev_status_event(device, dev_status, target_node=None):
|
|
38
|
+
if dev_status == NVMeDevice.STATUS_NEW:
|
|
39
|
+
return
|
|
38
40
|
db_controller = DBController()
|
|
39
41
|
storage_ID = device.cluster_device_order
|
|
40
42
|
node_status_event = {
|
|
@@ -79,6 +79,7 @@ class StorageNode(BaseModel):
|
|
|
79
79
|
"lvstore": {"type": str, 'default': ""},
|
|
80
80
|
"raid": {"type": str, 'default': ""},
|
|
81
81
|
"lvstore_stack": {"type": List[dict], 'default': []},
|
|
82
|
+
"jm_vuid": {"type": int, "default": 0},
|
|
82
83
|
|
|
83
84
|
# spdk params
|
|
84
85
|
"spdk_cpu_mask": {"type": str, "default": ""},
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_failed_migration.py
RENAMED
|
@@ -32,14 +32,14 @@ def task_runner(task):
|
|
|
32
32
|
task.write_to_db(db_controller.kv_store)
|
|
33
33
|
return True
|
|
34
34
|
|
|
35
|
-
if task.status
|
|
35
|
+
if task.status in [JobSchedule.STATUS_NEW ,JobSchedule.STATUS_SUSPENDED]:
|
|
36
36
|
task.status = JobSchedule.STATUS_RUNNING
|
|
37
37
|
task.write_to_db(db_controller.kv_store)
|
|
38
38
|
tasks_events.task_updated(task)
|
|
39
39
|
|
|
40
40
|
if snode.status != StorageNode.STATUS_ONLINE:
|
|
41
41
|
task.function_result = "node is not online, retrying"
|
|
42
|
-
task.status = JobSchedule.
|
|
42
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
43
43
|
task.retry += 1
|
|
44
44
|
task.write_to_db(db_controller.kv_store)
|
|
45
45
|
return False
|
|
@@ -62,6 +62,7 @@ def task_runner(task):
|
|
|
62
62
|
logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
|
|
63
63
|
task.function_result = "Failed to start device migration task"
|
|
64
64
|
task.retry += 1
|
|
65
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
65
66
|
task.write_to_db(db_controller.kv_store)
|
|
66
67
|
return False
|
|
67
68
|
|
|
@@ -83,7 +84,7 @@ def task_runner(task):
|
|
|
83
84
|
task.status = JobSchedule.STATUS_DONE
|
|
84
85
|
else:
|
|
85
86
|
task.function_result = "Failed to complete migration, retrying"
|
|
86
|
-
task.status = JobSchedule.
|
|
87
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
87
88
|
task.retry += 1
|
|
88
89
|
del task.function_params["migration"]
|
|
89
90
|
task.write_to_db(db_controller.kv_store)
|
|
@@ -91,7 +92,7 @@ def task_runner(task):
|
|
|
91
92
|
|
|
92
93
|
elif migration_status == "failed":
|
|
93
94
|
task.function_result = "Failed to complete migration, retrying"
|
|
94
|
-
task.status = JobSchedule.
|
|
95
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
95
96
|
task.retry += 1
|
|
96
97
|
del task.function_params["migration"]
|
|
97
98
|
task.write_to_db(db_controller.kv_store)
|
|
@@ -131,7 +132,7 @@ while True:
|
|
|
131
132
|
for task in tasks:
|
|
132
133
|
delay_seconds = 5
|
|
133
134
|
if task.function_name == JobSchedule.FN_FAILED_DEV_MIG:
|
|
134
|
-
if task.status
|
|
135
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
135
136
|
active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
|
|
136
137
|
if active_task:
|
|
137
138
|
logger.info("task found on same node, retry")
|
|
@@ -29,7 +29,7 @@ def task_runner(task):
|
|
|
29
29
|
task.write_to_db(db_controller.kv_store)
|
|
30
30
|
return True
|
|
31
31
|
|
|
32
|
-
if task.status
|
|
32
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
33
33
|
task.status = JobSchedule.STATUS_RUNNING
|
|
34
34
|
task.write_to_db(db_controller.kv_store)
|
|
35
35
|
tasks_events.task_updated(task)
|
|
@@ -37,7 +37,7 @@ def task_runner(task):
|
|
|
37
37
|
|
|
38
38
|
if snode.status != StorageNode.STATUS_ONLINE:
|
|
39
39
|
task.function_result = "node is not online, retrying"
|
|
40
|
-
task.status = JobSchedule.
|
|
40
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
41
41
|
task.retry += 1
|
|
42
42
|
task.write_to_db(db_controller.kv_store)
|
|
43
43
|
return False
|
|
@@ -56,7 +56,7 @@ def task_runner(task):
|
|
|
56
56
|
|
|
57
57
|
if not all_devs_online:
|
|
58
58
|
task.function_result = "Some devs are offline, retrying"
|
|
59
|
-
task.status = JobSchedule.
|
|
59
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
60
60
|
task.retry += 1
|
|
61
61
|
task.write_to_db(db_controller.kv_store)
|
|
62
62
|
return False
|
|
@@ -90,7 +90,7 @@ def task_runner(task):
|
|
|
90
90
|
if st['error'] == 1:
|
|
91
91
|
task.function_result = "mig completed with errors, retrying"
|
|
92
92
|
task.retry += 1
|
|
93
|
-
task.status = JobSchedule.
|
|
93
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
94
94
|
del task.function_params['migration']
|
|
95
95
|
else:
|
|
96
96
|
task.status = JobSchedule.STATUS_DONE
|
|
@@ -122,7 +122,7 @@ while True:
|
|
|
122
122
|
for task in tasks:
|
|
123
123
|
delay_seconds = 5
|
|
124
124
|
if task.function_name == JobSchedule.FN_DEV_MIG:
|
|
125
|
-
if task.status
|
|
125
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
126
126
|
active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
|
|
127
127
|
if active_task:
|
|
128
128
|
logger.info("task found on same node, retry")
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_new_dev_migration.py
RENAMED
|
@@ -32,7 +32,7 @@ def task_runner(task):
|
|
|
32
32
|
task.write_to_db(db_controller.kv_store)
|
|
33
33
|
return True
|
|
34
34
|
|
|
35
|
-
if task.status
|
|
35
|
+
if task.status in [JobSchedule.STATUS_NEW ,JobSchedule.STATUS_SUSPENDED]:
|
|
36
36
|
task.status = JobSchedule.STATUS_RUNNING
|
|
37
37
|
task.write_to_db(db_controller.kv_store)
|
|
38
38
|
tasks_events.task_updated(task)
|
|
@@ -40,7 +40,7 @@ def task_runner(task):
|
|
|
40
40
|
if snode.status != StorageNode.STATUS_ONLINE:
|
|
41
41
|
task.function_result = "node is not online, retrying"
|
|
42
42
|
task.retry += 1
|
|
43
|
-
task.status = JobSchedule.
|
|
43
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
44
44
|
task.write_to_db(db_controller.kv_store)
|
|
45
45
|
return False
|
|
46
46
|
|
|
@@ -56,7 +56,7 @@ def task_runner(task):
|
|
|
56
56
|
if not all_devs_online:
|
|
57
57
|
task.function_result = "Some devs are offline, retrying"
|
|
58
58
|
task.retry += 1
|
|
59
|
-
task.status = JobSchedule.
|
|
59
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
60
60
|
task.write_to_db(db_controller.kv_store)
|
|
61
61
|
return False
|
|
62
62
|
|
|
@@ -94,7 +94,7 @@ def task_runner(task):
|
|
|
94
94
|
if res_data['error'] == 1:
|
|
95
95
|
task.function_result = "mig completed with errors, retrying"
|
|
96
96
|
task.retry += 1
|
|
97
|
-
task.status = JobSchedule.
|
|
97
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
98
98
|
del task.function_params['migration']
|
|
99
99
|
else:
|
|
100
100
|
task.function_result = "Done"
|
|
@@ -143,7 +143,7 @@ while True:
|
|
|
143
143
|
for task in tasks:
|
|
144
144
|
delay_seconds = 5
|
|
145
145
|
if task.function_name == JobSchedule.FN_NEW_DEV_MIG:
|
|
146
|
-
if task.status
|
|
146
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
147
147
|
active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
|
|
148
148
|
if active_task:
|
|
149
149
|
logger.info("task found on same node, retry")
|
|
@@ -539,7 +539,7 @@ def _create_device_partitions(rpc_client, nvme, snode, num_partitions_per_dev, j
|
|
|
539
539
|
return True
|
|
540
540
|
|
|
541
541
|
|
|
542
|
-
def _prepare_cluster_devices_partitions(snode, devices):
|
|
542
|
+
def _prepare_cluster_devices_partitions(snode, devices, without_jm=False):
|
|
543
543
|
db_controller = DBController()
|
|
544
544
|
rpc_client = RPCClient(
|
|
545
545
|
snode.mgmt_ip, snode.rpc_port,
|
|
@@ -594,17 +594,20 @@ def _prepare_cluster_devices_partitions(snode, devices):
|
|
|
594
594
|
if not jm_device:
|
|
595
595
|
logger.error(f"Failed to create JM device")
|
|
596
596
|
return False
|
|
597
|
+
if without_jm:
|
|
598
|
+
jm_device.status = JMDevice.STATUS_REMOVED
|
|
597
599
|
snode.jm_device = jm_device
|
|
598
600
|
|
|
599
601
|
return True
|
|
600
602
|
|
|
601
603
|
|
|
602
|
-
def _prepare_cluster_devices_jm_on_dev(snode, devices):
|
|
604
|
+
def _prepare_cluster_devices_jm_on_dev(snode, devices, without_jm=False):
|
|
603
605
|
db_controller = DBController()
|
|
604
606
|
|
|
605
|
-
jm_device = devices[0]
|
|
606
607
|
# Set device cluster order
|
|
607
608
|
dev_order = get_next_cluster_device_order(db_controller, snode.cluster_id)
|
|
609
|
+
|
|
610
|
+
jm_device = devices[0]
|
|
608
611
|
for index, nvme in enumerate(devices):
|
|
609
612
|
if nvme.size < jm_device.size:
|
|
610
613
|
jm_device = nvme
|
|
@@ -624,6 +627,8 @@ def _prepare_cluster_devices_jm_on_dev(snode, devices):
|
|
|
624
627
|
if not jm_device:
|
|
625
628
|
logger.error(f"Failed to create JM device")
|
|
626
629
|
return False
|
|
630
|
+
if without_jm:
|
|
631
|
+
jm_device.status = JMDevice.STATUS_REMOVED
|
|
627
632
|
snode.jm_device = jm_device
|
|
628
633
|
else:
|
|
629
634
|
new_device = _create_storage_device_stack(rpc_client, nvme, snode, after_restart=False)
|
|
@@ -651,7 +656,8 @@ def _prepare_cluster_devices_on_restart(snode):
|
|
|
651
656
|
|
|
652
657
|
for index, nvme in enumerate(snode.nvme_devices):
|
|
653
658
|
|
|
654
|
-
if nvme.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE,
|
|
659
|
+
if nvme.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE,
|
|
660
|
+
NVMeDevice.STATUS_READONLY, NVMeDevice.STATUS_NEW]:
|
|
655
661
|
logger.debug(f"Device is skipped: {nvme.get_id()}, status: {nvme.status}")
|
|
656
662
|
continue
|
|
657
663
|
|
|
@@ -659,11 +665,14 @@ def _prepare_cluster_devices_on_restart(snode):
|
|
|
659
665
|
if not dev:
|
|
660
666
|
logger.error(f"Failed to create dev stack {nvme.get_id()}")
|
|
661
667
|
return False
|
|
662
|
-
nvme.status
|
|
663
|
-
|
|
668
|
+
if nvme.status == NVMeDevice.STATUS_ONLINE:
|
|
669
|
+
device_events.device_restarted(dev)
|
|
664
670
|
|
|
665
671
|
# prepare JM device
|
|
666
672
|
jm_device = snode.jm_device
|
|
673
|
+
if jm_device is None or jm_device.status == JMDevice.STATUS_REMOVED:
|
|
674
|
+
return True
|
|
675
|
+
|
|
667
676
|
if jm_device.jm_nvme_bdev_list:
|
|
668
677
|
all_bdevs_found = True
|
|
669
678
|
for bdev_name in jm_device.jm_nvme_bdev_list:
|
|
@@ -1480,6 +1489,8 @@ def restart_storage_node(
|
|
|
1480
1489
|
'net_type': device['net_type']}))
|
|
1481
1490
|
snode.data_nics = data_nics
|
|
1482
1491
|
snode.hostname = node_info['hostname']
|
|
1492
|
+
else:
|
|
1493
|
+
node_ip = None
|
|
1483
1494
|
|
|
1484
1495
|
logger.info(f"Restarting Storage node: {snode.mgmt_ip}")
|
|
1485
1496
|
snode_api = SNodeClient(snode.api_endpoint, timeout=5*60, retry=3)
|
|
@@ -1675,6 +1686,7 @@ def restart_storage_node(
|
|
|
1675
1686
|
known_devices_sn = []
|
|
1676
1687
|
devices_sn = [d.serial_number for d in nvme_devs]
|
|
1677
1688
|
for db_dev in snode.nvme_devices:
|
|
1689
|
+
# if db_dev.status != NVMeDevice.STATUS_NEW:
|
|
1678
1690
|
known_devices_sn.append(db_dev.serial_number)
|
|
1679
1691
|
if db_dev.status == NVMeDevice.STATUS_FAILED_AND_MIGRATED:
|
|
1680
1692
|
continue
|
|
@@ -1703,9 +1715,9 @@ def restart_storage_node(
|
|
|
1703
1715
|
if node_ip:
|
|
1704
1716
|
# prepare devices on new node
|
|
1705
1717
|
if snode.num_partitions_per_dev == 0 or snode.jm_percent == 0:
|
|
1706
|
-
ret = _prepare_cluster_devices_jm_on_dev(snode, nvme_devs)
|
|
1718
|
+
ret = _prepare_cluster_devices_jm_on_dev(snode, nvme_devs, without_jm=False)
|
|
1707
1719
|
else:
|
|
1708
|
-
ret = _prepare_cluster_devices_partitions(snode, nvme_devs)
|
|
1720
|
+
ret = _prepare_cluster_devices_partitions(snode, nvme_devs, without_jm=False)
|
|
1709
1721
|
if not ret:
|
|
1710
1722
|
logger.error("Failed to prepare cluster devices")
|
|
1711
1723
|
# return False
|
|
@@ -2059,6 +2071,9 @@ def resume_storage_node(node_id):
|
|
|
2059
2071
|
logger.info("Connecting to remote devices")
|
|
2060
2072
|
snode = db_controller.get_storage_node_by_id(node_id)
|
|
2061
2073
|
snode.remote_devices = _connect_to_remote_devs(snode)
|
|
2074
|
+
if snode.enable_ha_jm:
|
|
2075
|
+
snode.remote_jm_devices = _connect_to_remote_jm_devs(snode)
|
|
2076
|
+
|
|
2062
2077
|
snode.write_to_db(db_controller.kv_store)
|
|
2063
2078
|
|
|
2064
2079
|
rpc_client = RPCClient(
|
|
@@ -2655,7 +2670,7 @@ def get_next_ha_jms(current_node):
|
|
|
2655
2670
|
|
|
2656
2671
|
def get_node_jm_names(current_node):
|
|
2657
2672
|
jm_list = []
|
|
2658
|
-
if current_node.jm_device:
|
|
2673
|
+
if current_node.jm_device and current_node.jm_device.status == JMDevice.STATUS_ONLINE:
|
|
2659
2674
|
jm_list.append(current_node.jm_device.jm_bdev)
|
|
2660
2675
|
else:
|
|
2661
2676
|
jm_list.append("JM_LOCAL")
|
|
@@ -2680,6 +2695,7 @@ def create_lvstore(snode, ndcs, npcs, distr_bs, distr_chunk_bs, page_size_in_blo
|
|
|
2680
2695
|
online_jms = get_next_ha_jms(snode)
|
|
2681
2696
|
logger.debug(f"online_jms: {str(online_jms)}")
|
|
2682
2697
|
snode.remote_jm_devices = _connect_to_remote_jm_devs(snode, online_jms)
|
|
2698
|
+
snode.jm_vuid = jm_vuid
|
|
2683
2699
|
snode.write_to_db()
|
|
2684
2700
|
|
|
2685
2701
|
for _ in range(snode.number_of_distribs):
|
|
@@ -2784,6 +2800,11 @@ def _create_bdev_stack(snode, lvstore_stack=None):
|
|
|
2784
2800
|
ret = rpc_client.bdev_PT_NoExcl_create(**params)
|
|
2785
2801
|
|
|
2786
2802
|
elif type == "bdev_raid":
|
|
2803
|
+
# sync jm
|
|
2804
|
+
if snode.jm_vuid:
|
|
2805
|
+
ret = rpc_client.jc_explicit_synchronization(snode.jm_vuid)
|
|
2806
|
+
logger.info(f"JM Sync res: {ret}")
|
|
2807
|
+
time.sleep(10)
|
|
2787
2808
|
distribs_list = bdev["distribs_list"]
|
|
2788
2809
|
strip_size_kb = params["strip_size_kb"]
|
|
2789
2810
|
ret = rpc_client.bdev_raid_create(name, distribs_list, strip_size_kb=strip_size_kb)
|
|
@@ -2874,13 +2895,25 @@ def make_sec_new_primary(node_id):
|
|
|
2874
2895
|
logger.error(f"snode not found: {node_id}")
|
|
2875
2896
|
return False
|
|
2876
2897
|
|
|
2898
|
+
dev_order = get_next_cluster_device_order(db_controller, snode.cluster_id)
|
|
2877
2899
|
for dev in snode.nvme_devices:
|
|
2878
|
-
if dev.status == NVMeDevice.
|
|
2879
|
-
|
|
2900
|
+
if dev.status == NVMeDevice.STATUS_NEW:
|
|
2901
|
+
dev.cluster_device_order = dev_order
|
|
2902
|
+
dev_order += 1
|
|
2903
|
+
snode.write_to_db()
|
|
2880
2904
|
|
|
2881
2905
|
for dev in snode.nvme_devices:
|
|
2882
2906
|
if dev.status == NVMeDevice.STATUS_NEW:
|
|
2883
|
-
device_controller.
|
|
2907
|
+
device_controller.device_set_state(dev.get_id(), NVMeDevice.STATUS_ONLINE)
|
|
2908
|
+
tasks_controller.add_new_device_mig_task(dev.get_id())
|
|
2909
|
+
|
|
2910
|
+
for node in db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id):
|
|
2911
|
+
if node.status == StorageNode.STATUS_ONLINE:
|
|
2912
|
+
send_cluster_map(node.get_id())
|
|
2913
|
+
|
|
2914
|
+
for dev in snode.nvme_devices:
|
|
2915
|
+
if dev.status == NVMeDevice.STATUS_REMOVED:
|
|
2916
|
+
device_controller.device_set_failed(dev.get_id())
|
|
2884
2917
|
|
|
2885
2918
|
snode = db_controller.get_storage_node_by_id(node_id)
|
|
2886
2919
|
snode.primary_ip = snode.mgmt_ip
|
|
@@ -2889,29 +2922,28 @@ def make_sec_new_primary(node_id):
|
|
|
2889
2922
|
|
|
2890
2923
|
|
|
2891
2924
|
def dump_lvstore(node_id):
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
# return file_content
|
|
2925
|
+
db_controller = DBController()
|
|
2926
|
+
|
|
2927
|
+
snode = db_controller.get_storage_node_by_id(node_id)
|
|
2928
|
+
if not snode:
|
|
2929
|
+
logger.error(f"Can not find storage node: {node_id}")
|
|
2930
|
+
return False
|
|
2931
|
+
|
|
2932
|
+
if not snode.lvstore:
|
|
2933
|
+
logger.error("Storage node does not have lvstore")
|
|
2934
|
+
return False
|
|
2935
|
+
|
|
2936
|
+
rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=180)
|
|
2937
|
+
logger.info(f"Dumping lvstore data on node: {snode.get_id()}")
|
|
2938
|
+
file_name = f"LVS_dump_{snode.hostname}_{snode.lvstore}_{str(datetime.datetime.now().isoformat())}.txt"
|
|
2939
|
+
file_path = f"/etc/simplyblock/{file_name}"
|
|
2940
|
+
ret = rpc_client.bdev_lvs_dump(snode.lvstore, file_path)
|
|
2941
|
+
if not ret:
|
|
2942
|
+
logger.error("faild to dump lvstore data")
|
|
2943
|
+
return False
|
|
2944
|
+
|
|
2945
|
+
logger.info(f"LVS dump file path: {file_name}")
|
|
2946
|
+
snode_api = SNodeClient(f"{snode.mgmt_ip}:5000")
|
|
2947
|
+
file_content, _ = snode_api.get_file_content(file_name)
|
|
2948
|
+
|
|
2949
|
+
return file_content
|
|
@@ -446,3 +446,13 @@ def spdk_process_is_up():
|
|
|
446
446
|
else:
|
|
447
447
|
return utils.get_response(False, f"SPDK container is not running")
|
|
448
448
|
|
|
449
|
+
|
|
450
|
+
@bp.route('/get_file_content/<string:file_name>', methods=['GET'])
|
|
451
|
+
def get_file_content(file_name):
|
|
452
|
+
out, err, _ = node_utils.run_command(f"cat /etc/simplyblock/{file_name}")
|
|
453
|
+
if out:
|
|
454
|
+
return utils.get_response(out)
|
|
455
|
+
elif err:
|
|
456
|
+
err = err.decode("utf-8")
|
|
457
|
+
logger.debug(err)
|
|
458
|
+
return utils.get_response(None, err)
|
|
@@ -198,7 +198,10 @@ def storage_node_add():
|
|
|
198
198
|
max_snap = int(req_data.get('max_snap', 500))
|
|
199
199
|
max_prov = req_data['max_prov']
|
|
200
200
|
number_of_distribs = int(req_data.get('number_of_distribs', 4))
|
|
201
|
-
|
|
201
|
+
if req_data.get('disable_ha_jm', "") == "true":
|
|
202
|
+
disable_ha_jm = True
|
|
203
|
+
else:
|
|
204
|
+
disable_ha_jm = False
|
|
202
205
|
enable_test_device = bool(req_data.get('enable_test_device', False))
|
|
203
206
|
|
|
204
207
|
spdk_image = None
|
|
@@ -33,6 +33,9 @@ spec:
|
|
|
33
33
|
- name: foundationdb
|
|
34
34
|
hostPath:
|
|
35
35
|
path: /etc/foundationdb
|
|
36
|
+
- name: etc-simplyblock
|
|
37
|
+
hostPath:
|
|
38
|
+
path: /etc/simplyblock
|
|
36
39
|
- name: host-modules
|
|
37
40
|
hostPath:
|
|
38
41
|
path: /lib/modules
|
|
@@ -94,6 +97,8 @@ spec:
|
|
|
94
97
|
mountPath: /dev
|
|
95
98
|
- name: script-volume
|
|
96
99
|
mountPath: /script
|
|
100
|
+
- name: etc-simplyblock
|
|
101
|
+
mountPath: /etc/simplyblock
|
|
97
102
|
resources:
|
|
98
103
|
limits:
|
|
99
104
|
hugepages-2Mi: {{ MEM_GEGA }}Gi
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/caching_node_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/clean_local_storage_deploy.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/node-exporter.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/cached_lvol_stat_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/capacity_and_stats_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/main_distr_event_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|