sbcli-dev 3.8.36__zip → 3.8.38__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.
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/PKG-INFO +1 -1
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/env_var +1 -1
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_cli/cli.py +4 -1
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/cluster_ops.py +9 -9
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/constants.py +4 -2
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/lvol_controller.py +16 -1
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/tasks_controller.py +19 -17
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/nvme_device.py +1 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/storage_node.py +2 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/rpc_client.py +20 -2
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/storage_node_monitor.py +1 -1
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/storage_node_ops.py +126 -79
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/README.md +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/pyproject.toml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/setup.cfg +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/setup.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/compute_node_ops.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/device_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/health_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/snapshot_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/distr_controller.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/kv_store.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/caching_node.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/cluster.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/compute_node.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/global_settings.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/job_schedule.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/prometheus.yml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/distr_event_collector.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/log_agg_service.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/port_stat_collector.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_migration.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/snode_client.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/utils.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/app.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/caching_node_app.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/caching_node_app_k8s.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/node_webapp.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/snode_app.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/snode_app_k8s.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/utils.py +0 -0
|
@@ -56,6 +56,7 @@ class CLIWrapper:
|
|
|
56
56
|
sub_command.add_argument("--iobuf_small_bufsize", help='bdev_set_options param', dest='small_bufsize', type=int, default=0)
|
|
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
|
+
sub_command.add_argument("--enable-ha-jm", help='Enable HA JM for ditrib creation', action='store_true')
|
|
59
60
|
|
|
60
61
|
|
|
61
62
|
# delete storage node
|
|
@@ -717,6 +718,7 @@ class CLIWrapper:
|
|
|
717
718
|
max_prov = self.parse_size(args.max_prov)
|
|
718
719
|
number_of_devices = args.number_of_devices
|
|
719
720
|
enable_test_device = args.enable_test_device
|
|
721
|
+
enable_ha_jm = args.enable_ha_jm
|
|
720
722
|
number_of_distribs = args.number_of_distribs
|
|
721
723
|
if max_prov < 1 * 1024 * 1024 * 1024:
|
|
722
724
|
return f"Max provisioning memory:{args.max_prov} must be larger than 1G"
|
|
@@ -739,7 +741,8 @@ class CLIWrapper:
|
|
|
739
741
|
number_of_devices=number_of_devices,
|
|
740
742
|
enable_test_device=enable_test_device,
|
|
741
743
|
namespace=None,
|
|
742
|
-
number_of_distribs=number_of_distribs
|
|
744
|
+
number_of_distribs=number_of_distribs,
|
|
745
|
+
enable_ha_jm=enable_ha_jm
|
|
743
746
|
)
|
|
744
747
|
|
|
745
748
|
return out
|
|
@@ -369,7 +369,7 @@ def cluster_activate(cl_id):
|
|
|
369
369
|
logger.info(f"Node {snode.get_id()} already has lvstore {snode.lvstore}... skipping")
|
|
370
370
|
continue
|
|
371
371
|
ret = storage_node_ops.create_lvstore(snode, cluster.distr_ndcs, cluster.distr_npcs, cluster.distr_bs,
|
|
372
|
-
cluster.distr_chunk_bs, cluster.page_size_in_blocks, max_size)
|
|
372
|
+
cluster.distr_chunk_bs, cluster.page_size_in_blocks, max_size, snodes)
|
|
373
373
|
if not ret:
|
|
374
374
|
logger.error("Failed to activate cluster")
|
|
375
375
|
set_cluster_status(cl_id, Cluster.STATUS_UNREADY)
|
|
@@ -688,14 +688,14 @@ def update_cluster(cl_id):
|
|
|
688
688
|
except Exception as e:
|
|
689
689
|
print(e)
|
|
690
690
|
|
|
691
|
-
for node in db_controller.get_storage_nodes_by_cluster_id(cl_id):
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
691
|
+
# for node in db_controller.get_storage_nodes_by_cluster_id(cl_id):
|
|
692
|
+
# node_docker = docker.DockerClient(base_url=f"tcp://{node.mgmt_ip}:2375", version="auto")
|
|
693
|
+
# logger.info(f"Pulling image {constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE}")
|
|
694
|
+
# node_docker.images.pull(constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE)
|
|
695
|
+
# if node.status == StorageNode.STATUS_ONLINE:
|
|
696
|
+
# storage_node_ops.shutdown_storage_node(node.get_id(), force=True)
|
|
697
|
+
# time.sleep(3)
|
|
698
|
+
# storage_node_ops.restart_storage_node(node.get_id())
|
|
699
699
|
|
|
700
700
|
logger.info("Done")
|
|
701
701
|
return True
|
|
@@ -11,7 +11,7 @@ LOG_WEB_DEBUG = True
|
|
|
11
11
|
|
|
12
12
|
INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
13
13
|
|
|
14
|
-
NODE_MONITOR_INTERVAL_SEC =
|
|
14
|
+
NODE_MONITOR_INTERVAL_SEC = 10
|
|
15
15
|
DEVICE_MONITOR_INTERVAL_SEC = 5
|
|
16
16
|
STAT_COLLECTOR_INTERVAL_SEC = 60*5 # 5 minutes
|
|
17
17
|
LVOL_STAT_COLLECTOR_INTERVAL_SEC = 5
|
|
@@ -52,13 +52,15 @@ GRAYLOG_CHECK_INTERVAL_SEC = 60
|
|
|
52
52
|
|
|
53
53
|
FDB_CHECK_INTERVAL_SEC = 60
|
|
54
54
|
|
|
55
|
-
SIMPLY_BLOCK_DOCKER_IMAGE = "simplyblock/simplyblock:
|
|
55
|
+
SIMPLY_BLOCK_DOCKER_IMAGE = "simplyblock/simplyblock:dev"
|
|
56
56
|
SIMPLY_BLOCK_CLI_NAME = "sbcli-dev"
|
|
57
57
|
TASK_EXEC_INTERVAL_SEC = 30
|
|
58
58
|
TASK_EXEC_RETRY_COUNT = 8
|
|
59
59
|
|
|
60
60
|
SIMPLY_BLOCK_SPDK_CORE_IMAGE = "simplyblock/spdk-core:latest"
|
|
61
|
+
SIMPLY_BLOCK_SPDK_CORE_IMAGE_ARM64 = "simplyblock/spdk-core:latest-arm64"
|
|
61
62
|
SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:348-temp-migration-2-latest"
|
|
63
|
+
SIMPLY_BLOCK_SPDK_ULTRA_IMAGE_JM = "simplyblock/spdk:feature-journal-ha-latest"
|
|
62
64
|
|
|
63
65
|
GELF_PORT = 12201
|
|
64
66
|
|
|
@@ -169,6 +169,21 @@ def get_jm_names(snode):
|
|
|
169
169
|
return [snode.jm_device.jm_bdev] if snode.jm_device else []
|
|
170
170
|
|
|
171
171
|
|
|
172
|
+
def get_ha_jm_names(current_node, snode_list):
|
|
173
|
+
jm_list = []
|
|
174
|
+
if current_node.jm_device:
|
|
175
|
+
jm_list.append(current_node.jm_device.jm_bdev)
|
|
176
|
+
else:
|
|
177
|
+
jm_list.append("JM_LOCAL")
|
|
178
|
+
|
|
179
|
+
for node in snode_list:
|
|
180
|
+
if node.get_id() == current_node.get_id():
|
|
181
|
+
continue
|
|
182
|
+
name = f"remote_{node.jm_device.jm_bdev}n1"
|
|
183
|
+
jm_list.append(name)
|
|
184
|
+
return jm_list[:3]
|
|
185
|
+
|
|
186
|
+
|
|
172
187
|
def _get_next_3_nodes(cluster_id, lvol_size=0):
|
|
173
188
|
snodes = db_controller.get_storage_nodes_by_cluster_id(cluster_id)
|
|
174
189
|
online_nodes = []
|
|
@@ -564,7 +579,7 @@ def _create_bdev_stack(lvol, snode, ha_comm_addrs, ha_inode_self):
|
|
|
564
579
|
ret = None
|
|
565
580
|
|
|
566
581
|
if type == "bdev_distr":
|
|
567
|
-
params['jm_names'] = get_jm_names(snode)
|
|
582
|
+
# params['jm_names'] = get_jm_names(snode)
|
|
568
583
|
params['ha_comm_addrs'] = ha_comm_addrs
|
|
569
584
|
params['ha_inode_self'] = ha_inode_self
|
|
570
585
|
params['distrib_cpu_mask'] = snode.distrib_cpu_mask
|
|
@@ -54,20 +54,22 @@ def _add_task(function_name, cluster_id, node_id, device_id,
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
def add_device_mig_task(device_id):
|
|
57
|
-
device = db_controller.get_storage_devices(device_id)
|
|
58
|
-
for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
# device = db_controller.get_storage_devices(device_id)
|
|
58
|
+
# for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
|
|
59
|
+
# for lvol_id in node.lvols:
|
|
60
|
+
# _add_task(JobSchedule.FN_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
|
|
61
|
+
# max_retry=0, function_params={'lvol_id': lvol_id})
|
|
62
62
|
return True
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
def add_device_to_auto_restart(device):
|
|
66
|
-
return
|
|
66
|
+
return True
|
|
67
|
+
# return _add_task(JobSchedule.FN_DEV_RESTART, device.cluster_id, device.node_id, device.get_id())
|
|
67
68
|
|
|
68
69
|
|
|
69
70
|
def add_node_to_auto_restart(node):
|
|
70
|
-
return
|
|
71
|
+
return True
|
|
72
|
+
# return _add_task(JobSchedule.FN_NODE_RESTART, node.cluster_id, node.get_id(), "")
|
|
71
73
|
|
|
72
74
|
|
|
73
75
|
def list_tasks(cluster_id):
|
|
@@ -135,20 +137,20 @@ def get_active_node_mig_task(cluster_id, node_id):
|
|
|
135
137
|
|
|
136
138
|
|
|
137
139
|
def add_device_failed_mig_task(device_id):
|
|
138
|
-
device = db_controller.get_storage_devices(device_id)
|
|
139
|
-
for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
# device = db_controller.get_storage_devices(device_id)
|
|
141
|
+
# for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
|
|
142
|
+
# for lvol_id in node.lvols:
|
|
143
|
+
# _add_task(JobSchedule.FN_FAILED_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
|
|
144
|
+
# max_retry=0, function_params={'lvol_id': lvol_id})
|
|
143
145
|
return True
|
|
144
146
|
|
|
145
147
|
|
|
146
148
|
def add_new_device_mig_task(device_id):
|
|
147
|
-
device = db_controller.get_storage_devices(device_id)
|
|
148
|
-
for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
# device = db_controller.get_storage_devices(device_id)
|
|
150
|
+
# for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
|
|
151
|
+
# for lvol_id in node.lvols:
|
|
152
|
+
# _add_task(JobSchedule.FN_NEW_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
|
|
153
|
+
# max_retry=0, function_params={'lvol_id': lvol_id})
|
|
152
154
|
return True
|
|
153
155
|
|
|
154
156
|
|
|
@@ -113,6 +113,7 @@ class JMDevice(BaseModel):
|
|
|
113
113
|
"nvmf_nqn": {"type": str, 'default': ""},
|
|
114
114
|
"nvmf_ip": {"type": str, 'default': ""},
|
|
115
115
|
"nvmf_port": {"type": int, 'default': 4420},
|
|
116
|
+
"remote_bdev": {"type": str, 'default': ""},
|
|
116
117
|
|
|
117
118
|
"health_check": {"type": bool, "default": True},
|
|
118
119
|
"io_error": {"type": bool, 'default': False},
|
|
@@ -108,6 +108,8 @@ class StorageNode(BaseModel):
|
|
|
108
108
|
"num_partitions_per_dev": {"type": int, "default": 1},
|
|
109
109
|
"jm_percent": {"type": int, "default": 3},
|
|
110
110
|
"jm_device": {"type": JMDevice, "default": None},
|
|
111
|
+
"remote_jm_devices": {"type": List[JMDevice], 'default': []},
|
|
112
|
+
"enable_ha_jm": {"type": bool, "default": False},
|
|
111
113
|
|
|
112
114
|
"namespace": {"type": str, "default": ""},
|
|
113
115
|
|
|
@@ -363,7 +363,7 @@ class RPCClient:
|
|
|
363
363
|
|
|
364
364
|
def bdev_distrib_create(self, name, vuid, ndcs, npcs, num_blocks, block_size, jm_names,
|
|
365
365
|
chunk_size, ha_comm_addrs=None, ha_inode_self=None, pba_page_size=2097152,
|
|
366
|
-
distrib_cpu_mask=""):
|
|
366
|
+
distrib_cpu_mask="", ha_is_non_leader=True, jm_vuid=0):
|
|
367
367
|
""""
|
|
368
368
|
// Optional (not specified = no HA)
|
|
369
369
|
// Comma-separated communication addresses, for each node, e.g. "192.168.10.1:45001,192.168.10.1:32768".
|
|
@@ -379,13 +379,17 @@ class RPCClient:
|
|
|
379
379
|
"name": name,
|
|
380
380
|
"jm_names": ",".join(jm_names),
|
|
381
381
|
"vuid": vuid,
|
|
382
|
+
"jm_vuid": jm_vuid,
|
|
382
383
|
"ndcs": ndcs,
|
|
383
384
|
"npcs": npcs,
|
|
384
385
|
"num_blocks": num_blocks,
|
|
385
386
|
"block_size": block_size,
|
|
386
387
|
"chunk_size": chunk_size,
|
|
387
|
-
"pba_page_size": pba_page_size
|
|
388
|
+
"pba_page_size": pba_page_size,
|
|
389
|
+
"ha_is_non_leader": ha_is_non_leader,
|
|
388
390
|
}
|
|
391
|
+
if jm_vuid > 0:
|
|
392
|
+
params["jm_vuid"] = jm_vuid
|
|
389
393
|
if ha_comm_addrs:
|
|
390
394
|
params['ha_comm_addrs'] = ha_comm_addrs
|
|
391
395
|
params['ha_inode_self'] = ha_inode_self
|
|
@@ -470,6 +474,20 @@ class RPCClient:
|
|
|
470
474
|
}
|
|
471
475
|
return self._request("bdev_nvme_attach_controller", params)
|
|
472
476
|
|
|
477
|
+
def bdev_nvme_attach_controller_tcp_jm(self, name, nqn, ip, port):
|
|
478
|
+
params = {
|
|
479
|
+
"name": name,
|
|
480
|
+
"trtype": "tcp",
|
|
481
|
+
"traddr": ip,
|
|
482
|
+
"adrfam": "ipv4",
|
|
483
|
+
"trsvcid": str(port),
|
|
484
|
+
"subnqn": nqn,
|
|
485
|
+
"fast_io_fail_timeout_sec": 1,
|
|
486
|
+
"ctrlr_loss_timeout_sec": 1,
|
|
487
|
+
"reconnect_delay_sec": 1,
|
|
488
|
+
}
|
|
489
|
+
return self._request("bdev_nvme_attach_controller", params)
|
|
490
|
+
|
|
473
491
|
def bdev_nvme_attach_controller_tcp_caching(self, name, nqn, ip, port):
|
|
474
492
|
params = {
|
|
475
493
|
"name": name,
|
|
@@ -173,7 +173,7 @@ while True:
|
|
|
173
173
|
if snode.jm_device.status in [JMDevice.STATUS_ONLINE, JMDevice.STATUS_UNAVAILABLE]:
|
|
174
174
|
ret = health_controller.check_jm_device(snode.jm_device.get_id())
|
|
175
175
|
if ret:
|
|
176
|
-
logger.
|
|
176
|
+
logger.info(f"JM bdev is online: {snode.jm_device.get_id()}")
|
|
177
177
|
if snode.jm_device.status != JMDevice.STATUS_ONLINE:
|
|
178
178
|
device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
|
|
179
179
|
else:
|