sbcli-dev 3.8.35__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.
Files changed (149) hide show
  1. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/PKG-INFO +1 -1
  2. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/env_var +1 -1
  3. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/device_controller.py +21 -0
  5. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/health_controller.py +53 -0
  6. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/storage_node_monitor.py +24 -1
  7. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/README.md +0 -0
  8. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/pyproject.toml +0 -0
  9. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  10. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  11. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/entry_points.txt +0 -0
  12. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/requires.txt +0 -0
  13. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/sbcli_dev.egg-info/top_level.txt +0 -0
  14. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/setup.cfg +0 -0
  15. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/setup.py +0 -0
  16. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_cli/cli.py +0 -0
  17. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_cli/main.py +0 -0
  18. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/__init__.py +0 -0
  19. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/cluster_ops.py +0 -0
  20. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/cnode_client.py +0 -0
  21. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/compute_node_ops.py +0 -0
  22. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/constants.py +0 -0
  23. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/__init__.py +0 -0
  24. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  25. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/cluster_events.py +0 -0
  26. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/device_events.py +0 -0
  27. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/events_controller.py +0 -0
  28. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/lvol_controller.py +0 -0
  29. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/lvol_events.py +0 -0
  30. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/mgmt_events.py +0 -0
  31. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/pool_controller.py +0 -0
  32. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/pool_events.py +0 -0
  33. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  34. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/snapshot_events.py +0 -0
  35. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/storage_events.py +0 -0
  36. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/tasks_controller.py +0 -0
  37. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/controllers/tasks_events.py +0 -0
  38. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/distr_controller.py +0 -0
  39. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/kv_store.py +0 -0
  40. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/mgmt_node_ops.py +0 -0
  41. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/__init__.py +0 -0
  42. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/base_model.py +0 -0
  43. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/caching_node.py +0 -0
  44. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/cluster.py +0 -0
  45. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/compute_node.py +0 -0
  46. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/deployer.py +0 -0
  47. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/events.py +0 -0
  48. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/global_settings.py +0 -0
  49. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/iface.py +0 -0
  50. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/job_schedule.py +0 -0
  51. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/lvol_model.py +0 -0
  52. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/mgmt_node.py +0 -0
  53. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/nvme_device.py +0 -0
  54. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/pool.py +0 -0
  55. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/port_stat.py +0 -0
  56. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/snapshot.py +0 -0
  57. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/stats.py +0 -0
  58. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/models/storage_node.py +0 -0
  59. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/pci_utils.py +0 -0
  60. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/rpc_client.py +0 -0
  61. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/__init__.py +0 -0
  62. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  63. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  64. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  65. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/config_docker.sh +0 -0
  66. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboard.yml +0 -0
  67. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  68. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  69. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  70. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  71. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  72. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  73. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/datasource.yml +0 -0
  74. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/db_config_double.sh +0 -0
  75. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/db_config_single.sh +0 -0
  76. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  77. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  78. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  79. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/haproxy.cfg +0 -0
  80. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/install_deps.sh +0 -0
  81. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/objstore.yml +0 -0
  82. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/prometheus.yml +0 -0
  83. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/run_ssh.sh +0 -0
  84. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/set_db_config.sh +0 -0
  85. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  86. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/__init__.py +0 -0
  87. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  88. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/caching_node_monitor.py +0 -0
  89. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/cap_monitor.py +0 -0
  90. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  91. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/device_monitor.py +0 -0
  92. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/distr_event_collector.py +0 -0
  93. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/health_check_service.py +0 -0
  94. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/install_service.sh +0 -0
  95. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/log_agg_service.py +0 -0
  96. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/lvol_monitor.py +0 -0
  97. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  98. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  99. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  100. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/new_device_discovery.py +0 -0
  101. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/port_stat_collector.py +0 -0
  102. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/remove_service.sh +0 -0
  103. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/service_template.service +0 -0
  104. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  105. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  106. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  107. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  108. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  109. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/shell_utils.py +0 -0
  110. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/snode_client.py +0 -0
  111. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/storage_node_ops.py +0 -0
  112. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_core/utils.py +0 -0
  113. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/__init__.py +0 -0
  114. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/app.py +0 -0
  115. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/auth_middleware.py +0 -0
  116. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/__init__.py +0 -0
  117. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  118. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  119. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  120. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  121. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  122. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/snode_ops.py +0 -0
  123. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  124. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  125. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  126. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  127. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_device.py +0 -0
  128. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  129. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  130. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  131. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  132. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  133. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/caching_node_app.py +0 -0
  134. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/caching_node_app_k8s.py +0 -0
  135. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/node_utils.py +0 -0
  136. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/node_webapp.py +0 -0
  137. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/snode_app.py +0 -0
  138. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/snode_app_k8s.py +0 -0
  139. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/delete.py +0 -0
  140. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/deploy.py +0 -0
  141. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  142. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  143. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/is_up.py +0 -0
  144. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/list_deps.py +0 -0
  145. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/rpac.yaml +0 -0
  146. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/static/tst.py +0 -0
  147. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  148. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-3.8.35 → sbcli_dev-3.8.36}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 3.8.35
3
+ Version: 3.8.36
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -1,5 +1,5 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
2
- SIMPLY_BLOCK_VERSION=3.8.35
2
+ SIMPLY_BLOCK_VERSION=3.8.36
3
3
 
4
4
 
5
5
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 3.8.35
3
+ Version: 3.8.36
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -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
@@ -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