sbcli-pre 25.5.4__tar.gz → 25.5.5__tar.gz

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 (173) hide show
  1. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/PKG-INFO +1 -1
  2. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/sbcli_pre.egg-info/PKG-INFO +1 -1
  3. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/cluster_ops.py +25 -0
  4. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/env_var +2 -2
  5. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/storage_node.py +9 -2
  6. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/health_check_service.py +1 -1
  7. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/storage_node_ops.py +32 -14
  8. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/README.md +0 -0
  9. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/pyproject.toml +0 -0
  10. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/requirements.txt +0 -0
  11. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/sbcli_pre.egg-info/SOURCES.txt +0 -0
  12. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/sbcli_pre.egg-info/dependency_links.txt +0 -0
  13. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/sbcli_pre.egg-info/entry_points.txt +0 -0
  14. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/sbcli_pre.egg-info/requires.txt +0 -0
  15. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/sbcli_pre.egg-info/top_level.txt +0 -0
  16. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/setup.cfg +0 -0
  17. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/setup.py +0 -0
  18. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_cli/__init__.py +0 -0
  19. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_cli/cli.py +0 -0
  20. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_cli/clibase.py +0 -0
  21. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_cli/main.py +0 -0
  22. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/__init__.py +0 -0
  23. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/cnode_client.py +0 -0
  24. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/constants.py +0 -0
  25. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/__init__.py +0 -0
  26. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  27. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/cluster_events.py +0 -0
  28. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/device_controller.py +0 -0
  29. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/device_events.py +0 -0
  30. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/events_controller.py +0 -0
  31. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/health_controller.py +0 -0
  32. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/lvol_controller.py +0 -0
  33. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/lvol_events.py +0 -0
  34. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/mgmt_events.py +0 -0
  35. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/pool_controller.py +0 -0
  36. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/pool_events.py +0 -0
  37. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  38. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/snapshot_events.py +0 -0
  39. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/storage_events.py +0 -0
  40. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/tasks_controller.py +0 -0
  41. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/tasks_events.py +0 -0
  42. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
  43. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/db_controller.py +0 -0
  44. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/distr_controller.py +0 -0
  45. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/mgmt_node_ops.py +0 -0
  46. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/__init__.py +0 -0
  47. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/base_model.py +0 -0
  48. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/caching_node.py +0 -0
  49. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/cluster.py +0 -0
  50. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/deployer.py +0 -0
  51. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/events.py +0 -0
  52. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/hublvol.py +0 -0
  53. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/iface.py +0 -0
  54. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/job_schedule.py +0 -0
  55. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/lvol_model.py +0 -0
  56. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/mgmt_node.py +0 -0
  57. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/nvme_device.py +0 -0
  58. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/pool.py +0 -0
  59. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/port_stat.py +0 -0
  60. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/snapshot.py +0 -0
  61. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/models/stats.py +0 -0
  62. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/pci_utils.py +0 -0
  63. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/rpc_client.py +0 -0
  64. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/__init__.py +0 -0
  65. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  66. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  67. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  68. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/config_docker.sh +0 -0
  69. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboard.yml +0 -0
  70. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  71. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  72. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  73. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  74. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  75. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  76. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/datasource.yml +0 -0
  77. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/db_config_double.sh +0 -0
  78. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/db_config_single.sh +0 -0
  79. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  80. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  81. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  82. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  83. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/foundation.yml +0 -0
  84. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/haproxy.cfg +0 -0
  85. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/helpers/__init__.py +0 -0
  86. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/helpers/deploy_cluster.sh +0 -0
  87. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/helpers/destroy_cluster.sh +0 -0
  88. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +0 -0
  89. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/install_deps.sh +0 -0
  90. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/objstore.yml +0 -0
  91. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  92. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
  93. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/run_ssh.sh +0 -0
  94. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/set_db_config.sh +0 -0
  95. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  96. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/__init__.py +0 -0
  97. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  98. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/caching_node_monitor.py +0 -0
  99. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/cap_monitor.py +0 -0
  100. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  101. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/device_monitor.py +0 -0
  102. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/install_service.sh +0 -0
  103. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/lvol_monitor.py +0 -0
  104. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  105. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  106. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  107. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/new_device_discovery.py +0 -0
  108. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/remove_service.sh +0 -0
  109. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/service_template.service +0 -0
  110. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/spdk/__init__.py +0 -0
  111. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/spdk/client.py +0 -0
  112. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  113. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/storage_node_monitor.py +0 -0
  114. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/tasks_cluster_status.py +0 -0
  115. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  116. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  117. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  118. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  119. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  120. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/shell_utils.py +0 -0
  121. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/snode_client.py +0 -0
  122. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/test/test_models.py +0 -0
  123. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/test/test_utils.py +0 -0
  124. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/utils.py +0 -0
  125. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  126. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/README.md +0 -0
  127. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/__init__.py +0 -0
  128. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/app.py +0 -0
  129. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/auth_middleware.py +0 -0
  130. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/__init__.py +0 -0
  131. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  132. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  133. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  134. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  135. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  136. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/snode_ops.py +0 -0
  137. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  138. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
  139. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  140. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  141. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  142. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_device.py +0 -0
  143. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  144. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_metrics.py +0 -0
  145. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  146. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  147. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  148. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  149. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/node_configure.py +0 -0
  150. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/node_utils.py +0 -0
  151. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/node_utils_k8s.py +0 -0
  152. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/node_webapp.py +0 -0
  153. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
  154. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/delete.py +0 -0
  155. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/deploy.py +0 -0
  156. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  157. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  158. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/is_up.py +0 -0
  159. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/list_deps.py +0 -0
  160. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/rpac.yaml +0 -0
  161. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/swagger.yaml +0 -0
  162. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/static/tst.py +0 -0
  163. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  164. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  165. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/api/test_lvol.py +0 -0
  166. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/api/test_pool.py +0 -0
  167. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/api/test_snapshot.py +0 -0
  168. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/api/test_storage_node.py +0 -0
  169. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/conftest.py +0 -0
  170. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/pytest.ini +0 -0
  171. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/requirements.txt +0 -0
  172. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/test/util.py +0 -0
  173. {sbcli-pre-25.5.4 → sbcli-pre-25.5.5}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-pre
3
- Version: 25.5.4
3
+ Version: 25.5.5
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-pre
3
- Version: 25.5.4
3
+ Version: 25.5.5
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -683,6 +683,31 @@ def cluster_activate(cl_id, force=False, force_lvstore_create=False):
683
683
  set_cluster_status(cl_id, ols_status)
684
684
  return False
685
685
 
686
+ snodes = db_controller.get_storage_nodes_by_cluster_id(cl_id)
687
+ for snode in snodes:
688
+ if snode.status != StorageNode.STATUS_ONLINE:
689
+ continue
690
+
691
+ if not snode.is_secondary_node:
692
+ continue
693
+
694
+ logger.info(f"recreating secondary node {snode.get_id()}")
695
+ ret = storage_node_ops.recreate_lvstore_on_sec(snode)
696
+
697
+ snode = db_controller.get_storage_node_by_id(snode.get_id())
698
+ if ret:
699
+ snode.lvstore_status = "ready"
700
+ snode.write_to_db()
701
+
702
+ else:
703
+ snode.lvstore_status = "failed"
704
+ snode.write_to_db()
705
+ logger.error(f"Failed to restore lvstore on node {snode.get_id()}")
706
+ if not force:
707
+ logger.error("Failed to activate cluster")
708
+ set_cluster_status(cl_id, ols_status)
709
+ return False
710
+
686
711
 
687
712
  if not cluster.cluster_max_size:
688
713
  cluster = db_controller.get_cluster_by_id(cl_id)
@@ -1,6 +1,6 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-pre
2
- SIMPLY_BLOCK_VERSION=25.5.4
2
+ SIMPLY_BLOCK_VERSION=25.5.5
3
3
 
4
4
 
5
- SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main
5
+ SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:R25.5-PRE
6
6
  SIMPLY_BLOCK_SPDK_ULTRA_IMAGE=simplyblock/spdk:main-latest
@@ -146,7 +146,7 @@ class StorageNode(BaseNodeObject):
146
146
  #
147
147
  # raise
148
148
 
149
- def create_hublvol(self, cluster_nqn):
149
+ def create_hublvol(self):
150
150
  """Create a hublvol for this node's lvstore
151
151
  """
152
152
  logger.info(f'Creating hublvol on {self.get_id()}')
@@ -159,7 +159,7 @@ class StorageNode(BaseNodeObject):
159
159
  raise RPCException('Failed to create hublvol')
160
160
  self.hublvol = HubLVol({
161
161
  'uuid': hublvol_uuid,
162
- 'nqn': f'{cluster_nqn}:lvol:{hublvol_uuid}',
162
+ 'nqn': f'{self.host_nqn}:lvol:{hublvol_uuid}',
163
163
  'bdev_name': f'{self.lvstore}/hublvol',
164
164
  'model_number': str(uuid4()),
165
165
  'nguid': utils.generate_hex_string(16),
@@ -212,6 +212,13 @@ class StorageNode(BaseNodeObject):
212
212
  return True
213
213
  except RPCException:
214
214
  pass
215
+ else:
216
+ try:
217
+ self.create_hublvol()
218
+ return True
219
+ except RPCException as e:
220
+ logger.error("Error establishing hublvol: %s", e.message)
221
+ # return False
215
222
 
216
223
  return self.hublvol
217
224
 
@@ -197,7 +197,7 @@ while True:
197
197
  connected_jms.append(remote_device.get_id())
198
198
 
199
199
  for jm_id in snode.jm_ids:
200
- if jm_id not in connected_jms:
200
+ if jm_id and jm_id not in connected_jms:
201
201
  for nd in db.get_storage_nodes():
202
202
  if nd.jm_device and nd.jm_device.get_id() == jm_id:
203
203
  if nd.status == StorageNode.STATUS_ONLINE:
@@ -1761,6 +1761,15 @@ def restart_storage_node(
1761
1761
  if devs:
1762
1762
  dev = db_controller.get_jm_device_by_id(devs[0])
1763
1763
  snode.remote_jm_devices.append(dev)
1764
+ if not snode.jm_ids:
1765
+ snode.jm_ids = []
1766
+ for rem_jm in snode.remote_jm_devices:
1767
+ if rem_jm.get_id():
1768
+ snode.jm_ids.append(rem_jm.get_id())
1769
+
1770
+ snode.jm_ids = snode.jm_ids[:constants.HA_JM_COUNT-1]
1771
+ snode.write_to_db(db_controller.kv_store)
1772
+
1764
1773
  snode.remote_jm_devices = _connect_to_remote_jm_devs(snode)
1765
1774
  snode.health_check = True
1766
1775
  snode.lvstore_status = ""
@@ -3088,30 +3097,37 @@ def add_lvol_thread(lvol, snode, lvol_ana_state="optimized"):
3088
3097
  def get_sorted_ha_jms(current_node):
3089
3098
  db_controller = DBController()
3090
3099
  jm_count = {}
3091
- mgmt_ips = []
3100
+ jm_dev_to_mgmt_ip = {}
3101
+
3092
3102
  for node in db_controller.get_storage_nodes_by_cluster_id(current_node.cluster_id):
3093
- if (node.get_id() == current_node.get_id() or node.status != StorageNode.STATUS_ONLINE): # pass
3094
- continue
3095
- if node.mgmt_ip == current_node.mgmt_ip:
3096
- continue
3097
- if node.mgmt_ip in mgmt_ips:
3103
+ if node.get_id() == current_node.get_id(): # pass
3098
3104
  continue
3099
3105
 
3100
- if node.jm_device and node.jm_device.status == JMDevice.STATUS_ONLINE:
3101
- jm_count[node.jm_device.get_id()] = 1
3102
- mgmt_ips.append(node.mgmt_ip)
3106
+ if node.jm_device and node.jm_device.status == JMDevice.STATUS_ONLINE and node.jm_device.get_id():
3107
+ jm_count[node.jm_device.get_id()] = 0
3108
+ jm_dev_to_mgmt_ip[node.jm_device.get_id()] = node.mgmt_ip
3103
3109
 
3104
3110
  for node in db_controller.get_storage_nodes_by_cluster_id(current_node.cluster_id):
3105
- if (node.get_id() == current_node.get_id() or node.status != StorageNode.STATUS_ONLINE): # pass
3111
+ if node.get_id() == current_node.get_id(): # pass
3106
3112
  continue
3107
- if node.mgmt_ip == current_node.mgmt_ip or not node.jm_ids:
3113
+ if not node.jm_ids:
3108
3114
  continue
3109
3115
  for rem_jm_id in node.jm_ids:
3110
3116
  if rem_jm_id in jm_count:
3111
3117
  jm_count[rem_jm_id] += 1
3112
3118
 
3119
+ mgmt_ips = []
3113
3120
  jm_count = dict(sorted(jm_count.items(), key=lambda x: x[1]))
3114
- return list(jm_count.keys())[:3]
3121
+ out = []
3122
+ for jm_id in jm_count.keys():
3123
+ if jm_id:
3124
+ if jm_dev_to_mgmt_ip[jm_id] in mgmt_ips:
3125
+ continue
3126
+ if jm_dev_to_mgmt_ip[jm_id] == current_node.mgmt_ip:
3127
+ continue
3128
+ mgmt_ips.append(jm_dev_to_mgmt_ip[jm_id])
3129
+ out.append(jm_count)
3130
+ return out[:constants.HA_JM_COUNT-1]
3115
3131
 
3116
3132
 
3117
3133
  def get_node_jm_names(current_node, remote_node=None):
@@ -3126,6 +3142,9 @@ def get_node_jm_names(current_node, remote_node=None):
3126
3142
 
3127
3143
  if current_node.enable_ha_jm:
3128
3144
  for jm_id in current_node.jm_ids:
3145
+ if not jm_id:
3146
+ continue
3147
+
3129
3148
  if remote_node:
3130
3149
  if remote_node.jm_device.get_id() == jm_id:
3131
3150
  jm_list.append(remote_node.jm_device.jm_bdev)
@@ -3298,9 +3317,8 @@ def create_lvstore(snode, ndcs, npcs, distr_bs, distr_chunk_bs, page_size_in_blo
3298
3317
  sec_rpc_client.bdev_examine(snode.raid)
3299
3318
  sec_rpc_client.bdev_wait_for_examine()
3300
3319
 
3301
- cluster_nqn = db_controller.get_cluster_by_id(snode.cluster_id).nqn
3302
3320
  try:
3303
- snode.create_hublvol(cluster_nqn)
3321
+ snode.create_hublvol()
3304
3322
 
3305
3323
  except RPCException as e:
3306
3324
  logger.error("Error establishing hublvol: %s", e.message)
File without changes
File without changes
File without changes
File without changes
File without changes