sbcli-dev 4.0.5__zip → 4.0.6__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-4.0.5 → sbcli_dev-4.0.6}/PKG-INFO +1 -1
  2. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/env_var +1 -1
  3. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/device_controller.py +6 -2
  5. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/storage_node_ops.py +25 -5
  6. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/README.md +0 -0
  7. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/pyproject.toml +0 -0
  8. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  9. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  10. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/sbcli_dev.egg-info/entry_points.txt +0 -0
  11. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/sbcli_dev.egg-info/requires.txt +0 -0
  12. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/sbcli_dev.egg-info/top_level.txt +0 -0
  13. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/setup.cfg +0 -0
  14. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/setup.py +0 -0
  15. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_cli/cli.py +0 -0
  16. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_cli/main.py +0 -0
  17. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/__init__.py +0 -0
  18. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/cluster_ops.py +0 -0
  19. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/cnode_client.py +0 -0
  20. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/compute_node_ops.py +0 -0
  21. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/constants.py +0 -0
  22. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/__init__.py +0 -0
  23. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  24. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/cluster_events.py +0 -0
  25. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/device_events.py +0 -0
  26. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/events_controller.py +0 -0
  27. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/health_controller.py +0 -0
  28. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/lvol_controller.py +0 -0
  29. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/lvol_events.py +0 -0
  30. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/mgmt_events.py +0 -0
  31. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/pool_controller.py +0 -0
  32. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/pool_events.py +0 -0
  33. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  34. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/snapshot_events.py +0 -0
  35. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/storage_events.py +0 -0
  36. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/tasks_controller.py +0 -0
  37. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/controllers/tasks_events.py +0 -0
  38. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/distr_controller.py +0 -0
  39. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/kv_store.py +0 -0
  40. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/mgmt_node_ops.py +0 -0
  41. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/__init__.py +0 -0
  42. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/base_model.py +0 -0
  43. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/caching_node.py +0 -0
  44. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/cluster.py +0 -0
  45. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/compute_node.py +0 -0
  46. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/deployer.py +0 -0
  47. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/events.py +0 -0
  48. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/global_settings.py +0 -0
  49. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/iface.py +0 -0
  50. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/job_schedule.py +0 -0
  51. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/lvol_model.py +0 -0
  52. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/mgmt_node.py +0 -0
  53. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/nvme_device.py +0 -0
  54. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/pool.py +0 -0
  55. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/port_stat.py +0 -0
  56. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/snapshot.py +0 -0
  57. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/stats.py +0 -0
  58. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/models/storage_node.py +0 -0
  59. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/pci_utils.py +0 -0
  60. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/rpc_client.py +0 -0
  61. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/__init__.py +0 -0
  62. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  63. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  64. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  65. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/config_docker.sh +0 -0
  66. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboard.yml +0 -0
  67. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  68. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  69. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  70. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  71. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  72. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  73. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/datasource.yml +0 -0
  74. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/db_config_double.sh +0 -0
  75. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/db_config_single.sh +0 -0
  76. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  77. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  78. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  79. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/haproxy.cfg +0 -0
  80. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/install_deps.sh +0 -0
  81. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/objstore.yml +0 -0
  82. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/prometheus.yml +0 -0
  83. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/run_ssh.sh +0 -0
  84. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/set_db_config.sh +0 -0
  85. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  86. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/__init__.py +0 -0
  87. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  88. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/caching_node_monitor.py +0 -0
  89. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/cap_monitor.py +0 -0
  90. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  91. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/device_monitor.py +0 -0
  92. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/health_check_service.py +0 -0
  93. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/install_service.sh +0 -0
  94. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/log_agg_service.py +0 -0
  95. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/lvol_monitor.py +0 -0
  96. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  97. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  98. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  99. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/new_device_discovery.py +0 -0
  100. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/port_stat_collector.py +0 -0
  101. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/remove_service.sh +0 -0
  102. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/service_template.service +0 -0
  103. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  104. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/storage_node_monitor.py +0 -0
  105. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  106. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  107. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  108. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  109. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  110. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/shell_utils.py +0 -0
  111. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/snode_client.py +0 -0
  112. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_core/utils.py +0 -0
  113. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/__init__.py +0 -0
  114. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/app.py +0 -0
  115. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/auth_middleware.py +0 -0
  116. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/__init__.py +0 -0
  117. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  118. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  119. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  120. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  121. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  122. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/snode_ops.py +0 -0
  123. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  124. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  125. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  126. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  127. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_device.py +0 -0
  128. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  129. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  130. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  131. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  132. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  133. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/caching_node_app.py +0 -0
  134. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/caching_node_app_k8s.py +0 -0
  135. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/node_utils.py +0 -0
  136. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/node_webapp.py +0 -0
  137. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/snode_app.py +0 -0
  138. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/snode_app_k8s.py +0 -0
  139. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/delete.py +0 -0
  140. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/deploy.py +0 -0
  141. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  142. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  143. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/is_up.py +0 -0
  144. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/list_deps.py +0 -0
  145. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/rpac.yaml +0 -0
  146. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/static/tst.py +0 -0
  147. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  148. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-4.0.5 → sbcli_dev-4.0.6}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 4.0.5
3
+ Version: 4.0.6
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=4.0.5
2
+ SIMPLY_BLOCK_VERSION=4.0.6
3
3
 
4
4
 
5
5
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main-dev
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 4.0.5
3
+ Version: 4.0.6
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -672,7 +672,7 @@ def add_device(device_id):
672
672
  if snode.jm_device and snode.jm_device.raid_bdev:
673
673
  # looking for jm partition
674
674
  rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password)
675
- jm_dev_part = f"{dev.nvme_bdev[:-1]}1"
675
+ jm_dev_part = f"{dev.nvme_bdev[:-2]}p1"
676
676
  ret = rpc_client.get_bdevs(jm_dev_part)
677
677
  if ret:
678
678
  logger.info(f"JM part found: {jm_dev_part}")
@@ -714,6 +714,10 @@ def set_jm_device_state(device_id, state):
714
714
  for node_index, node in enumerate(snodes):
715
715
  if node.get_id() == snode.get_id() or node.status != StorageNode.STATUS_ONLINE:
716
716
  continue
717
+ for jm_dev in node.remote_jm_devices:
718
+ if jm_dev.get_id() == device_id and jm_device.status != JMDevice.STATUS_ONLINE:
719
+ node.remote_jm_devices.remove(jm_dev)
720
+ break
717
721
  logger.info(f"Connecting to node: {node.get_id()}")
718
722
  node.remote_jm_devices = storage_node_ops._connect_to_remote_jm_devs(node)
719
723
  node.write_to_db(db_controller.kv_store)
@@ -796,7 +800,7 @@ def restart_jm_device(device_id, force=False):
796
800
  for dev in snode.nvme_devices:
797
801
  if dev.status != NVMeDevice.STATUS_ONLINE:
798
802
  continue
799
- dev_part = f"{dev.nvme_bdev[:-1]}1"
803
+ dev_part = f"{dev.nvme_bdev[:-2]}p1"
800
804
  if dev_part in bdevs_names:
801
805
  if dev_part not in jm_nvme_bdevs:
802
806
  jm_nvme_bdevs.append(dev_part)
@@ -798,16 +798,24 @@ def _connect_to_remote_jm_devs(this_node, jm_ids=[]):
798
798
  if jm_ids:
799
799
  for jm_id in jm_ids:
800
800
  jm_dev = db_controller.get_jm_device_by_id(jm_id)
801
- remote_devices.append(jm_dev)
801
+ if jm_dev:
802
+ remote_devices.append(jm_dev)
802
803
  elif len(this_node.remote_jm_devices) > 0:
803
804
  remote_devices = this_node.remote_jm_devices
804
805
  else:
805
806
  for node in db_controller.get_storage_nodes_by_cluster_id(this_node.cluster_id):
806
807
  if node.get_id() == this_node.get_id() or node.status != StorageNode.STATUS_ONLINE:
807
808
  continue
808
- if node.jm_device:
809
+ if node.jm_device and node.jm_device.status == JMDevice.STATUS_ONLINE:
809
810
  remote_devices.append(node.jm_device)
810
811
 
812
+ if len(remote_devices) < 2:
813
+ online_jms = get_next_ha_jms(this_node)
814
+ for jm_id in online_jms:
815
+ jm_dev = db_controller.get_jm_device_by_id(jm_id)
816
+ if jm_dev:
817
+ remote_devices.append(jm_dev)
818
+
811
819
  for jm_dev in remote_devices:
812
820
  name = f"remote_{jm_dev.jm_bdev}"
813
821
  bdev_name = f"{name}n1"
@@ -1354,6 +1362,10 @@ def remove_storage_node(node_id, force_remove=False, force_migrate=False):
1354
1362
  distr_controller.disconnect_device(dev)
1355
1363
  device_controller.device_set_failed(dev.get_id())
1356
1364
 
1365
+ if snode.jm_device:
1366
+ logger.info("Removing JM")
1367
+ device_controller.remove_jm_device(snode.jm_device.get_id(), force=True)
1368
+
1357
1369
  logger.info("Removing storage node")
1358
1370
 
1359
1371
  logger.debug("Leaving swarm...")
@@ -1687,6 +1699,7 @@ def restart_storage_node(
1687
1699
 
1688
1700
  if snode.enable_ha_jm:
1689
1701
  logger.info("Connecting to remote JMs")
1702
+ snode.remote_jm_devices = []
1690
1703
  snode.remote_jm_devices = _connect_to_remote_jm_devs(snode)
1691
1704
 
1692
1705
  logger.info("Setting node status to Online")
@@ -1714,6 +1727,9 @@ def restart_storage_node(
1714
1727
  continue
1715
1728
  tasks_controller.add_device_mig_task(dev.get_id())
1716
1729
 
1730
+ if cluster.status == cluster.STATUS_UNREADY:
1731
+ logger.info("Done")
1732
+ return "Success"
1717
1733
  # Create distribs, raid0, and lvstore and expose lvols to the fabrics
1718
1734
  if snode.lvstore_stack:
1719
1735
  temp_rpc_client = RPCClient(
@@ -2562,12 +2578,15 @@ def get_next_ha_jms(current_node):
2562
2578
  for node in db_controller.get_storage_nodes_by_cluster_id(current_node.cluster_id):
2563
2579
  if node.get_id() == current_node.get_id() or node.status != StorageNode.STATUS_ONLINE:
2564
2580
  continue
2565
- if node.jm_device:
2581
+ if node.jm_device and node.jm_device.status == JMDevice.STATUS_ONLINE:
2566
2582
  jm_count[node.jm_device.get_id()] = 1 + jm_count.get(node.jm_device.get_id(), 0)
2567
2583
  for rem_jm_device in node.remote_jm_devices:
2568
2584
  if rem_jm_device.get_id() != current_node.jm_device.get_id():
2569
- jm_count[rem_jm_device.get_id()] = 1 + jm_count.get(rem_jm_device.get_id(), 0)
2570
-
2585
+ try:
2586
+ if db_controller.get_jm_device_by_id(rem_jm_device.get_id()).status == JMDevice.STATUS_ONLINE:
2587
+ jm_count[rem_jm_device.get_id()] = 1 + jm_count.get(rem_jm_device.get_id(), 0)
2588
+ except :
2589
+ pass
2571
2590
  jm_count = dict(sorted(jm_count.items(), key=lambda x: x[1]))
2572
2591
  return list(jm_count.keys())[:2]
2573
2592
 
@@ -2597,6 +2616,7 @@ def create_lvstore(snode, ndcs, npcs, distr_bs, distr_chunk_bs, page_size_in_blo
2597
2616
  if snode.enable_ha_jm:
2598
2617
  jm_vuid = utils.get_random_vuid()
2599
2618
  online_jms = get_next_ha_jms(snode)
2619
+ logger.debug(f"online_jms: {str(online_jms)}")
2600
2620
  snode.remote_jm_devices = _connect_to_remote_jm_devs(snode, online_jms)
2601
2621
  snode.write_to_db()
2602
2622
 
File without changes
File without changes
File without changes
File without changes