sbcli-dev 3.8.58__zip → 3.8.59__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 (150) hide show
  1. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/PKG-INFO +1 -1
  2. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/env_var +1 -1
  3. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/device_controller.py +94 -5
  5. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/README.md +0 -0
  6. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/pyproject.toml +0 -0
  7. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  8. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  9. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/sbcli_dev.egg-info/entry_points.txt +0 -0
  10. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/sbcli_dev.egg-info/requires.txt +0 -0
  11. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/sbcli_dev.egg-info/top_level.txt +0 -0
  12. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/setup.cfg +0 -0
  13. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/setup.py +0 -0
  14. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_cli/cli.py +0 -0
  15. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_cli/main.py +0 -0
  16. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/__init__.py +0 -0
  17. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/cluster_ops.py +0 -0
  18. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/cnode_client.py +0 -0
  19. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/compute_node_ops.py +0 -0
  20. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/constants.py +0 -0
  21. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/__init__.py +0 -0
  22. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  23. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/cluster_events.py +0 -0
  24. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/device_events.py +0 -0
  25. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/events_controller.py +0 -0
  26. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/health_controller.py +0 -0
  27. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/lvol_controller.py +0 -0
  28. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/lvol_events.py +0 -0
  29. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/mgmt_events.py +0 -0
  30. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/pool_controller.py +0 -0
  31. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/pool_events.py +0 -0
  32. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  33. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/snapshot_events.py +0 -0
  34. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/storage_events.py +0 -0
  35. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/tasks_controller.py +0 -0
  36. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/controllers/tasks_events.py +0 -0
  37. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/distr_controller.py +0 -0
  38. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/kv_store.py +0 -0
  39. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/mgmt_node_ops.py +0 -0
  40. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/__init__.py +0 -0
  41. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/base_model.py +0 -0
  42. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/caching_node.py +0 -0
  43. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/cluster.py +0 -0
  44. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/compute_node.py +0 -0
  45. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/deployer.py +0 -0
  46. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/events.py +0 -0
  47. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/global_settings.py +0 -0
  48. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/iface.py +0 -0
  49. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/job_schedule.py +0 -0
  50. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/lvol_model.py +0 -0
  51. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/mgmt_node.py +0 -0
  52. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/nvme_device.py +0 -0
  53. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/pool.py +0 -0
  54. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/port_stat.py +0 -0
  55. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/snapshot.py +0 -0
  56. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/stats.py +0 -0
  57. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/models/storage_node.py +0 -0
  58. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/pci_utils.py +0 -0
  59. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/rpc_client.py +0 -0
  60. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/__init__.py +0 -0
  61. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  62. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  63. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  64. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/config_docker.sh +0 -0
  65. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboard.yml +0 -0
  66. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  67. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  68. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  69. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  70. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  71. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  72. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/datasource.yml +0 -0
  73. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/db_config_double.sh +0 -0
  74. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/db_config_single.sh +0 -0
  75. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  76. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  77. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  78. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/haproxy.cfg +0 -0
  79. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/install_deps.sh +0 -0
  80. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/objstore.yml +0 -0
  81. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/prometheus.yml +0 -0
  82. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/run_ssh.sh +0 -0
  83. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/set_db_config.sh +0 -0
  84. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  85. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/__init__.py +0 -0
  86. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  87. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/caching_node_monitor.py +0 -0
  88. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/cap_monitor.py +0 -0
  89. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  90. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/device_monitor.py +0 -0
  91. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/distr_event_collector.py +0 -0
  92. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/health_check_service.py +0 -0
  93. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/install_service.sh +0 -0
  94. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/log_agg_service.py +0 -0
  95. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/lvol_monitor.py +0 -0
  96. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  97. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  98. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  99. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/new_device_discovery.py +0 -0
  100. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/port_stat_collector.py +0 -0
  101. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/remove_service.sh +0 -0
  102. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/service_template.service +0 -0
  103. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  104. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/storage_node_monitor.py +0 -0
  105. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  106. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  107. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  108. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  109. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  110. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/shell_utils.py +0 -0
  111. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/snode_client.py +0 -0
  112. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/storage_node_ops.py +0 -0
  113. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_core/utils.py +0 -0
  114. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/__init__.py +0 -0
  115. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/app.py +0 -0
  116. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/auth_middleware.py +0 -0
  117. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/__init__.py +0 -0
  118. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  119. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  120. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  121. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  122. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  123. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/snode_ops.py +0 -0
  124. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  125. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  126. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  127. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  128. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_device.py +0 -0
  129. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  130. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  131. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  132. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  133. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  134. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/caching_node_app.py +0 -0
  135. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/caching_node_app_k8s.py +0 -0
  136. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/node_utils.py +0 -0
  137. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/node_webapp.py +0 -0
  138. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/snode_app.py +0 -0
  139. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/snode_app_k8s.py +0 -0
  140. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/delete.py +0 -0
  141. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/deploy.py +0 -0
  142. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  143. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  144. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/is_up.py +0 -0
  145. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/list_deps.py +0 -0
  146. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/rpac.yaml +0 -0
  147. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/static/tst.py +0 -0
  148. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  150. {sbcli_dev-3.8.58 → sbcli_dev-3.8.59}/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.58
3
+ Version: 3.8.59
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.58
2
+ SIMPLY_BLOCK_VERSION=3.8.59
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.58
3
+ Version: 3.8.59
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -4,7 +4,8 @@ import logging
4
4
  from simplyblock_core import distr_controller, utils, storage_node_ops
5
5
  from simplyblock_core.controllers import device_events, lvol_controller, tasks_controller
6
6
  from simplyblock_core.kv_store import DBController
7
- from simplyblock_core.models.nvme_device import NVMeDevice
7
+ from simplyblock_core.models.nvme_device import NVMeDevice, JMDevice
8
+ from simplyblock_core.models.storage_node import StorageNode
8
9
  from simplyblock_core.rpc_client import RPCClient
9
10
 
10
11
 
@@ -248,6 +249,53 @@ def restart_device(device_id, force=False):
248
249
  logger.info("Setting device online")
249
250
  device_set_online(device_id)
250
251
  device_events.device_restarted(device_obj)
252
+
253
+ # add to jm raid
254
+ if snode.jm_device and snode.jm_device.raid_bdev:
255
+ nvme_controller = device_obj.nvme_controller
256
+ jm_part = None
257
+ for part in snode.jm_device.jm_nvme_bdev_list:
258
+ if part.startswith(nvme_controller):
259
+ jm_part = part
260
+ break
261
+ if snode.jm_device.status == NVMeDevice.STATUS_ONLINE:
262
+ set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_UNAVAILABLE)
263
+ # delete jm stack
264
+ if snode.enable_ha_jm:
265
+ ret = rpc_client.subsystem_delete(snode.jm_device.nvmf_nqn)
266
+
267
+ if snode.jm_device.pt_bdev:
268
+ ret = rpc_client.bdev_PT_NoExcl_delete(snode.jm_device.pt_bdev)
269
+
270
+ ret = rpc_client.bdev_jm_delete(snode.jm_device.jm_bdev)
271
+ if snode.jm_device.testing_bdev:
272
+ ret = rpc_client.bdev_passtest_delete(snode.jm_device.testing_bdev)
273
+ ret = rpc_client.bdev_alceml_delete(snode.jm_device.alceml_bdev)
274
+ if len(snode.jm_device.jm_nvme_bdev_list) == 2:
275
+ ret = rpc_client.bdev_raid_delete(snode.jm_device.raid_bdev)
276
+
277
+ # create jm
278
+ jm_nvme_bdevs = snode.jm_device.jm_nvme_bdev_list
279
+ if jm_part not in jm_nvme_bdevs:
280
+ jm_nvme_bdevs.append(jm_part)
281
+ new_jm = storage_node_ops._create_jm_stack_on_raid(rpc_client, jm_nvme_bdevs, snode, after_restart=True)
282
+ if new_jm:
283
+ snode = db_controller.get_storage_node_by_id(snode.get_id())
284
+ snode.jm_device = new_jm
285
+ snode.write_to_db(db_controller.kv_store)
286
+ set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
287
+
288
+ # make other nodes connect to new jm
289
+ if snode.enable_ha_jm:
290
+ logger.info("Make other nodes connect to the new devices")
291
+ snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
292
+ for node_index, node in enumerate(snodes):
293
+ if node.get_id() == snode.get_id() or node.status != StorageNode.STATUS_ONLINE:
294
+ continue
295
+ node.remote_jm_devices = storage_node_ops._connect_to_remote_jm_devs(node)
296
+ node.write_to_db(db_controller.kv_store)
297
+ logger.info(f"connected to devices count: {len(node.remote_devices)}")
298
+
251
299
  return "Done"
252
300
 
253
301
 
@@ -377,10 +425,51 @@ def device_remove(device_id, force=True):
377
425
  break
378
426
 
379
427
  if dev_to_remove:
380
- ret = rpc_client.bdev_raid_remove_base_bdev(snode.jm_device.raid_bdev, dev_to_remove)
381
- if ret:
382
- snode.jm_device.jm_nvme_bdev_list.remove(dev_to_remove)
383
- snode.write_to_db(db_controller.kv_store)
428
+ if len(snode.jm_device.jm_nvme_bdev_list) <= 2:
429
+
430
+ set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_UNAVAILABLE)
431
+
432
+ # delete jm stack
433
+ if snode.enable_ha_jm:
434
+ ret = rpc_client.subsystem_delete(snode.jm_device.nvmf_nqn)
435
+
436
+ if snode.jm_device.pt_bdev:
437
+ ret = rpc_client.bdev_PT_NoExcl_delete(snode.jm_device.pt_bdev)
438
+
439
+ ret = rpc_client.bdev_jm_delete(snode.jm_device.jm_bdev)
440
+ if snode.jm_device.testing_bdev:
441
+ ret = rpc_client.bdev_passtest_delete(snode.jm_device.testing_bdev)
442
+ ret = rpc_client.bdev_alceml_delete(snode.jm_device.alceml_bdev)
443
+ if len(snode.jm_device.jm_nvme_bdev_list) == 2:
444
+ ret = rpc_client.bdev_raid_delete(snode.jm_device.raid_bdev)
445
+
446
+
447
+ # create jm
448
+ jm_nvme_bdevs = snode.jm_device.jm_nvme_bdev_list
449
+ jm_nvme_bdevs.remove(dev_to_remove)
450
+ if len(jm_nvme_bdevs) > 0:
451
+ new_jm = storage_node_ops._create_jm_stack_on_raid(rpc_client, jm_nvme_bdevs, snode, after_restart=True)
452
+ snode.jm_device = new_jm
453
+ snode.write_to_db(db_controller.kv_store)
454
+ set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
455
+
456
+ # make other nodes connect to new jm
457
+ if snode.enable_ha_jm:
458
+ logger.info("Make other nodes connect to the new devices")
459
+ snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
460
+ for node_index, node in enumerate(snodes):
461
+ if node.get_id() == snode.get_id() or node.status != StorageNode.STATUS_ONLINE:
462
+ continue
463
+ node.remote_jm_devices = storage_node_ops._connect_to_remote_jm_devs(node)
464
+ node.write_to_db(db_controller.kv_store)
465
+ logger.info(f"connected to devices count: {len(node.remote_devices)}")
466
+ time.sleep(3)
467
+
468
+ elif len(snode.jm_device.jm_nvme_bdev_list) > 2:
469
+ ret = rpc_client.bdev_raid_remove_base_bdev(snode.jm_device.raid_bdev, dev_to_remove)
470
+ if ret:
471
+ snode.jm_device.jm_nvme_bdev_list.remove(dev_to_remove)
472
+ snode.write_to_db(db_controller.kv_store)
384
473
 
385
474
  return True
386
475
 
File without changes
File without changes
File without changes
File without changes