sbcli-dev 3.8.34__zip → 3.8.36__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.34 → sbcli_dev-3.8.36}/PKG-INFO +1 -1
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/env_var +1 -1
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/device_controller.py +21 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/health_controller.py +53 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/distr_event_collector.py +18 -19
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/storage_node_monitor.py +24 -1
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/README.md +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/pyproject.toml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/setup.cfg +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/setup.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_cli/cli.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/cluster_ops.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/compute_node_ops.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/constants.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/lvol_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/snapshot_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/distr_controller.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/kv_store.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/caching_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/cluster.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/compute_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/global_settings.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/job_schedule.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/nvme_device.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/models/storage_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/rpc_client.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/prometheus.yml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/log_agg_service.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/port_stat_collector.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_migration.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/snode_client.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/storage_node_ops.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/utils.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/app.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/caching_node_app.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/caching_node_app_k8s.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/node_webapp.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/snode_app.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/snode_app_k8s.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_web/utils.py +0 -0
|
@@ -689,3 +689,24 @@ def add_device(device_id):
|
|
|
689
689
|
|
|
690
690
|
def device_set_failed_and_migrated(device_id):
|
|
691
691
|
return device_set_state(device_id, NVMeDevice.STATUS_FAILED_AND_MIGRATED)
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
def set_jm_device_state(device_id, state):
|
|
695
|
+
db_controller = DBController()
|
|
696
|
+
jm_device = None
|
|
697
|
+
snode = None
|
|
698
|
+
for node in db_controller.get_storage_nodes():
|
|
699
|
+
if node.jm_device.get_id() == device_id:
|
|
700
|
+
jm_device = node.jm_device
|
|
701
|
+
snode = node
|
|
702
|
+
break
|
|
703
|
+
if not jm_device:
|
|
704
|
+
logger.error("device not found")
|
|
705
|
+
return False
|
|
706
|
+
|
|
707
|
+
if jm_device.status == state:
|
|
708
|
+
return True
|
|
709
|
+
|
|
710
|
+
jm_device.status = state
|
|
711
|
+
snode.write_to_db(db_controller.kv_store)
|
|
712
|
+
return True
|
|
@@ -178,6 +178,13 @@ def check_node(node_id, with_devices=True):
|
|
|
178
178
|
else:
|
|
179
179
|
logger.info(f"Checking bdev: {remote_device.remote_bdev} ... not found")
|
|
180
180
|
# node_remote_devices_check &= bool(ret)
|
|
181
|
+
if snode.jm_device:
|
|
182
|
+
jm_device = snode.jm_device
|
|
183
|
+
ret = check_jm_device(jm_device.get_id())
|
|
184
|
+
if ret:
|
|
185
|
+
logger.info(f"Checking jm bdev: {jm_device.jm_bdev} ... ok")
|
|
186
|
+
else:
|
|
187
|
+
logger.info(f"Checking jm bdev: {jm_device.jm_bdev} ... not found")
|
|
181
188
|
lvstore_check = True
|
|
182
189
|
if snode.lvstore and snode.lvstore_stack:
|
|
183
190
|
distribs_list = []
|
|
@@ -226,6 +233,11 @@ def check_device(device_id):
|
|
|
226
233
|
db_controller = DBController()
|
|
227
234
|
device = db_controller.get_storage_device_by_id(device_id)
|
|
228
235
|
if not device:
|
|
236
|
+
# is jm device ?
|
|
237
|
+
for node in db_controller.get_storage_nodes():
|
|
238
|
+
if node.jm_device and node.jm_device.get_id() == device_id:
|
|
239
|
+
return check_jm_device(node.jm_device.get_id())
|
|
240
|
+
|
|
229
241
|
logger.error("device not found")
|
|
230
242
|
return False
|
|
231
243
|
|
|
@@ -394,3 +406,44 @@ def check_snap(snap_id):
|
|
|
394
406
|
|
|
395
407
|
ret = rpc_client.get_bdevs(snap.snap_bdev)
|
|
396
408
|
return ret
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
def check_jm_device(device_id):
|
|
412
|
+
db_controller = DBController()
|
|
413
|
+
jm_device = None
|
|
414
|
+
snode = None
|
|
415
|
+
for node in db_controller.get_storage_nodes():
|
|
416
|
+
if node.jm_device.get_id() == device_id:
|
|
417
|
+
jm_device = node.jm_device
|
|
418
|
+
snode = node
|
|
419
|
+
break
|
|
420
|
+
if not jm_device:
|
|
421
|
+
logger.error("device not found")
|
|
422
|
+
return False
|
|
423
|
+
|
|
424
|
+
if snode.status in [StorageNode.STATUS_OFFLINE, StorageNode.STATUS_REMOVED]:
|
|
425
|
+
logger.info(f"Skipping ,node status is {snode.status}")
|
|
426
|
+
return True
|
|
427
|
+
|
|
428
|
+
if jm_device.status in [NVMeDevice.STATUS_REMOVED, NVMeDevice.STATUS_FAILED]:
|
|
429
|
+
logger.info(f"Skipping ,device status is {jm_device.status}")
|
|
430
|
+
return True
|
|
431
|
+
|
|
432
|
+
passed = True
|
|
433
|
+
try:
|
|
434
|
+
rpc_client = RPCClient(
|
|
435
|
+
snode.mgmt_ip, snode.rpc_port,
|
|
436
|
+
snode.rpc_username, snode.rpc_password)
|
|
437
|
+
|
|
438
|
+
ret = rpc_client.get_bdevs(jm_device.jm_bdev)
|
|
439
|
+
if ret:
|
|
440
|
+
logger.debug(f"Checking bdev: {jm_device.jm_bdev} ... ok")
|
|
441
|
+
else:
|
|
442
|
+
logger.debug(f"Checking bdev: {jm_device.jm_bdev} ... not found")
|
|
443
|
+
passed = False
|
|
444
|
+
|
|
445
|
+
except Exception as e:
|
|
446
|
+
logger.error(f"Failed to connect to node's SPDK: {e}")
|
|
447
|
+
passed = False
|
|
448
|
+
|
|
449
|
+
return passed
|
|
@@ -73,28 +73,27 @@ def process_device_event(event):
|
|
|
73
73
|
|
|
74
74
|
def process_lvol_event(event):
|
|
75
75
|
if event.message in ["error_open", 'error_read', "error_write", "error_unmap"]:
|
|
76
|
-
vuid = event.object_dict['vuid']
|
|
77
|
-
|
|
76
|
+
# vuid = event.object_dict['vuid']
|
|
77
|
+
node_id = event.node_id
|
|
78
|
+
lvols = []
|
|
78
79
|
for lv in db_controller.get_lvols(): # pass
|
|
79
|
-
if lv.
|
|
80
|
-
|
|
81
|
-
break
|
|
80
|
+
if lv.node_id == node_id:
|
|
81
|
+
lvols.append(lv)
|
|
82
82
|
|
|
83
|
-
if not
|
|
84
|
-
logger.error(f"
|
|
85
|
-
event.status = '
|
|
83
|
+
if not lvols:
|
|
84
|
+
logger.error(f"LVols on node {node_id} not found")
|
|
85
|
+
event.status = 'lvols_not_found'
|
|
86
86
|
else:
|
|
87
|
-
lvol
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
event.status = 'skipped'
|
|
87
|
+
for lvol in lvols:
|
|
88
|
+
if lvol.status == LVol.STATUS_ONLINE:
|
|
89
|
+
logger.info("Setting LVol to offline")
|
|
90
|
+
lvol.io_error = True
|
|
91
|
+
old_status = lvol.status
|
|
92
|
+
lvol.status = LVol.STATUS_OFFLINE
|
|
93
|
+
lvol.write_to_db(db_controller.kv_store)
|
|
94
|
+
lvol_events.lvol_status_change(lvol, lvol.status, old_status, caused_by="monitor")
|
|
95
|
+
lvol_events.lvol_io_error_change(lvol, True, False, caused_by="monitor")
|
|
96
|
+
event.status = 'processed'
|
|
98
97
|
else:
|
|
99
98
|
logger.error(f"Unknown LVol event message: {event.message}")
|
|
100
99
|
event.status = "event_unknown"
|
|
@@ -5,7 +5,7 @@ import time
|
|
|
5
5
|
from simplyblock_core import constants, kv_store, cluster_ops, storage_node_ops, utils
|
|
6
6
|
from simplyblock_core.controllers import health_controller, device_controller, tasks_controller
|
|
7
7
|
from simplyblock_core.models.cluster import Cluster
|
|
8
|
-
from simplyblock_core.models.nvme_device import NVMeDevice
|
|
8
|
+
from simplyblock_core.models.nvme_device import NVMeDevice, JMDevice
|
|
9
9
|
from simplyblock_core.models.storage_node import StorageNode
|
|
10
10
|
|
|
11
11
|
|
|
@@ -113,6 +113,16 @@ def set_node_offline(node):
|
|
|
113
113
|
tasks_controller.add_node_to_auto_restart(node)
|
|
114
114
|
|
|
115
115
|
|
|
116
|
+
def set_jm_device_status(node):
|
|
117
|
+
if node.status != StorageNode.STATUS_UNREACHABLE:
|
|
118
|
+
for dev in node.nvme_devices:
|
|
119
|
+
device_controller.device_set_unavailable(dev.get_id())
|
|
120
|
+
|
|
121
|
+
storage_node_ops.set_node_status(snode.get_id(), StorageNode.STATUS_UNREACHABLE)
|
|
122
|
+
# add node to auto restart
|
|
123
|
+
tasks_controller.add_node_to_auto_restart(node)
|
|
124
|
+
|
|
125
|
+
|
|
116
126
|
logger.info("Starting node monitor")
|
|
117
127
|
while True:
|
|
118
128
|
clusters = db_controller.get_clusters()
|
|
@@ -158,6 +168,19 @@ while True:
|
|
|
158
168
|
else:
|
|
159
169
|
set_node_offline(snode)
|
|
160
170
|
|
|
171
|
+
# check JM device
|
|
172
|
+
if snode.jm_device:
|
|
173
|
+
if snode.jm_device.status in [JMDevice.STATUS_ONLINE, JMDevice.STATUS_UNAVAILABLE]:
|
|
174
|
+
ret = health_controller.check_jm_device(snode.jm_device.get_id())
|
|
175
|
+
if ret:
|
|
176
|
+
logger.error(f"JM bdev is online: {snode.jm_device.get_id()}")
|
|
177
|
+
if snode.jm_device.status != JMDevice.STATUS_ONLINE:
|
|
178
|
+
device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
|
|
179
|
+
else:
|
|
180
|
+
logger.error(f"JM bdev is offline: {snode.jm_device.get_id()}")
|
|
181
|
+
if snode.jm_device.status != JMDevice.STATUS_UNAVAILABLE:
|
|
182
|
+
device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_UNAVAILABLE)
|
|
183
|
+
|
|
161
184
|
update_cluster_status(cluster_id)
|
|
162
185
|
|
|
163
186
|
logger.info(f"Sleeping for {constants.NODE_MONITOR_INTERVAL_SEC} seconds")
|
|
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-3.8.34 → sbcli_dev-3.8.36}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/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-3.8.34 → sbcli_dev-3.8.36}/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-3.8.34 → sbcli_dev-3.8.36}/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-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/cached_lvol_stat_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/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-3.8.34 → sbcli_dev-3.8.36}/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
|
{sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_failed_migration.py
RENAMED
|
File without changes
|
|
File without changes
|
{sbcli_dev-3.8.34 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_new_dev_migration.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
|