sbcli-pre 25.5.4__tar.gz → 25.5.6__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.6}/PKG-INFO +1 -1
  2. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/sbcli_pre.egg-info/PKG-INFO +1 -1
  3. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/cluster_ops.py +25 -0
  4. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/env_var +2 -2
  5. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/storage_node.py +9 -2
  6. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/rpc_client.py +1 -1
  7. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/health_check_service.py +1 -1
  8. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/tasks_cluster_status.py +1 -1
  9. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/storage_node_ops.py +35 -15
  10. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/README.md +0 -0
  11. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/pyproject.toml +0 -0
  12. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/requirements.txt +0 -0
  13. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/sbcli_pre.egg-info/SOURCES.txt +0 -0
  14. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/sbcli_pre.egg-info/dependency_links.txt +0 -0
  15. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/sbcli_pre.egg-info/entry_points.txt +0 -0
  16. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/sbcli_pre.egg-info/requires.txt +0 -0
  17. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/sbcli_pre.egg-info/top_level.txt +0 -0
  18. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/setup.cfg +0 -0
  19. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/setup.py +0 -0
  20. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_cli/__init__.py +0 -0
  21. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_cli/cli.py +0 -0
  22. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_cli/clibase.py +0 -0
  23. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_cli/main.py +0 -0
  24. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/__init__.py +0 -0
  25. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/cnode_client.py +0 -0
  26. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/constants.py +0 -0
  27. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/__init__.py +0 -0
  28. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  29. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/cluster_events.py +0 -0
  30. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/device_controller.py +0 -0
  31. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/device_events.py +0 -0
  32. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/events_controller.py +0 -0
  33. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/health_controller.py +0 -0
  34. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/lvol_controller.py +0 -0
  35. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/lvol_events.py +0 -0
  36. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/mgmt_events.py +0 -0
  37. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/pool_controller.py +0 -0
  38. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/pool_events.py +0 -0
  39. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  40. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/snapshot_events.py +0 -0
  41. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/storage_events.py +0 -0
  42. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/tasks_controller.py +0 -0
  43. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/tasks_events.py +0 -0
  44. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
  45. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/db_controller.py +0 -0
  46. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/distr_controller.py +0 -0
  47. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/mgmt_node_ops.py +0 -0
  48. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/__init__.py +0 -0
  49. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/base_model.py +0 -0
  50. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/caching_node.py +0 -0
  51. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/cluster.py +0 -0
  52. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/deployer.py +0 -0
  53. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/events.py +0 -0
  54. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/hublvol.py +0 -0
  55. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/iface.py +0 -0
  56. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/job_schedule.py +0 -0
  57. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/lvol_model.py +0 -0
  58. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/mgmt_node.py +0 -0
  59. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/nvme_device.py +0 -0
  60. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/pool.py +0 -0
  61. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/port_stat.py +0 -0
  62. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/snapshot.py +0 -0
  63. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/models/stats.py +0 -0
  64. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/pci_utils.py +0 -0
  65. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/__init__.py +0 -0
  66. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  67. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  68. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  69. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/config_docker.sh +0 -0
  70. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboard.yml +0 -0
  71. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  72. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  73. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  74. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  75. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  76. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  77. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/datasource.yml +0 -0
  78. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/db_config_double.sh +0 -0
  79. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/db_config_single.sh +0 -0
  80. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  81. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  82. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  83. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  84. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/foundation.yml +0 -0
  85. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/haproxy.cfg +0 -0
  86. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/helpers/__init__.py +0 -0
  87. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/helpers/deploy_cluster.sh +0 -0
  88. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/helpers/destroy_cluster.sh +0 -0
  89. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +0 -0
  90. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/install_deps.sh +0 -0
  91. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/objstore.yml +0 -0
  92. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  93. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
  94. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/run_ssh.sh +0 -0
  95. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/set_db_config.sh +0 -0
  96. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  97. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/__init__.py +0 -0
  98. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  99. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/caching_node_monitor.py +0 -0
  100. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/cap_monitor.py +0 -0
  101. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  102. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/device_monitor.py +0 -0
  103. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/install_service.sh +0 -0
  104. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/lvol_monitor.py +0 -0
  105. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  106. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  107. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  108. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/new_device_discovery.py +0 -0
  109. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/remove_service.sh +0 -0
  110. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/service_template.service +0 -0
  111. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/spdk/__init__.py +0 -0
  112. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/spdk/client.py +0 -0
  113. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  114. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/storage_node_monitor.py +0 -0
  115. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  116. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  117. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  118. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  119. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  120. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/shell_utils.py +0 -0
  121. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/snode_client.py +0 -0
  122. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/test/test_models.py +0 -0
  123. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/test/test_utils.py +0 -0
  124. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/utils.py +0 -0
  125. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  126. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/README.md +0 -0
  127. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/__init__.py +0 -0
  128. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/app.py +0 -0
  129. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/auth_middleware.py +0 -0
  130. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/__init__.py +0 -0
  131. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  132. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  133. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  134. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  135. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  136. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/snode_ops.py +0 -0
  137. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  138. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
  139. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  140. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  141. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  142. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_device.py +0 -0
  143. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  144. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_metrics.py +0 -0
  145. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  146. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  147. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  148. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  149. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/node_configure.py +0 -0
  150. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/node_utils.py +0 -0
  151. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/node_utils_k8s.py +0 -0
  152. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/node_webapp.py +0 -0
  153. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
  154. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/delete.py +0 -0
  155. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/deploy.py +0 -0
  156. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  157. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  158. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/is_up.py +0 -0
  159. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/list_deps.py +0 -0
  160. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/rpac.yaml +0 -0
  161. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/swagger.yaml +0 -0
  162. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/static/tst.py +0 -0
  163. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  164. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  165. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/api/test_lvol.py +0 -0
  166. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/api/test_pool.py +0 -0
  167. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/api/test_snapshot.py +0 -0
  168. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/api/test_storage_node.py +0 -0
  169. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/conftest.py +0 -0
  170. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/pytest.ini +0 -0
  171. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/requirements.txt +0 -0
  172. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/simplyblock_web/test/util.py +0 -0
  173. {sbcli-pre-25.5.4 → sbcli-pre-25.5.6}/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.6
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.6
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.6
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
 
@@ -140,7 +140,7 @@ class RPCClient:
140
140
  params = {
141
141
  "trtype": trtype,
142
142
  "max_io_qpairs_per_ctrlr": 128,
143
- "max_queue_depth": 64,
143
+ "max_queue_depth": 256,
144
144
  "abort_timeout_sec": 5,
145
145
  "ack_timeout": 2048,
146
146
  "zcopy": True,
@@ -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:
@@ -10,7 +10,7 @@ cluster_commands = [
10
10
  "sbcli-dev cluster show",
11
11
  "sbcli-dev cluster get-capacity",
12
12
  "sbcli-dev cluster get-io-stats",
13
- "sbcli-dev cluster get-logs",
13
+ "sbcli-dev cluster get-logs --limit 0",
14
14
  "sbcli-dev lvol list --cluster-id",
15
15
  ]
16
16
 
@@ -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 = ""
@@ -2979,13 +2988,15 @@ def recreate_lvstore(snode):
2979
2988
  sec_node_api.firewall_set_port(snode.lvol_subsys_port, "tcp", "block", sec_node.rpc_port)
2980
2989
  tcp_ports_events.port_deny(sec_node, snode.lvol_subsys_port)
2981
2990
 
2982
- # time.sleep(1)
2991
+ # time.sleep(0.2)
2983
2992
  ### 4- set leadership to false
2984
2993
  sec_rpc_client.bdev_lvol_set_leader(snode.lvstore, leader=False, bs_nonleadership=True)
2985
2994
  sec_rpc_client.bdev_distrib_force_to_non_leader(snode.jm_vuid)
2986
2995
  time.sleep(1)
2987
2996
 
2988
2997
  ### 5- examine
2998
+ time.sleep(0.2)
2999
+ rpc_client.bdev_distrib_force_to_non_leader(snode.jm_vuid)
2989
3000
  ret = rpc_client.bdev_examine(snode.raid)
2990
3001
  # time.sleep(1)
2991
3002
 
@@ -3088,30 +3099,37 @@ def add_lvol_thread(lvol, snode, lvol_ana_state="optimized"):
3088
3099
  def get_sorted_ha_jms(current_node):
3089
3100
  db_controller = DBController()
3090
3101
  jm_count = {}
3091
- mgmt_ips = []
3102
+ jm_dev_to_mgmt_ip = {}
3103
+
3092
3104
  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:
3105
+ if node.get_id() == current_node.get_id(): # pass
3098
3106
  continue
3099
3107
 
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)
3108
+ if node.jm_device and node.jm_device.status == JMDevice.STATUS_ONLINE and node.jm_device.get_id():
3109
+ jm_count[node.jm_device.get_id()] = 0
3110
+ jm_dev_to_mgmt_ip[node.jm_device.get_id()] = node.mgmt_ip
3103
3111
 
3104
3112
  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
3113
+ if node.get_id() == current_node.get_id(): # pass
3106
3114
  continue
3107
- if node.mgmt_ip == current_node.mgmt_ip or not node.jm_ids:
3115
+ if not node.jm_ids:
3108
3116
  continue
3109
3117
  for rem_jm_id in node.jm_ids:
3110
3118
  if rem_jm_id in jm_count:
3111
3119
  jm_count[rem_jm_id] += 1
3112
3120
 
3121
+ mgmt_ips = []
3113
3122
  jm_count = dict(sorted(jm_count.items(), key=lambda x: x[1]))
3114
- return list(jm_count.keys())[:3]
3123
+ out = []
3124
+ for jm_id in jm_count.keys():
3125
+ if jm_id:
3126
+ if jm_dev_to_mgmt_ip[jm_id] in mgmt_ips:
3127
+ continue
3128
+ if jm_dev_to_mgmt_ip[jm_id] == current_node.mgmt_ip:
3129
+ continue
3130
+ mgmt_ips.append(jm_dev_to_mgmt_ip[jm_id])
3131
+ out.append(jm_id)
3132
+ return out[:constants.HA_JM_COUNT-1]
3115
3133
 
3116
3134
 
3117
3135
  def get_node_jm_names(current_node, remote_node=None):
@@ -3126,6 +3144,9 @@ def get_node_jm_names(current_node, remote_node=None):
3126
3144
 
3127
3145
  if current_node.enable_ha_jm:
3128
3146
  for jm_id in current_node.jm_ids:
3147
+ if not jm_id:
3148
+ continue
3149
+
3129
3150
  if remote_node:
3130
3151
  if remote_node.jm_device.get_id() == jm_id:
3131
3152
  jm_list.append(remote_node.jm_device.jm_bdev)
@@ -3298,9 +3319,8 @@ def create_lvstore(snode, ndcs, npcs, distr_bs, distr_chunk_bs, page_size_in_blo
3298
3319
  sec_rpc_client.bdev_examine(snode.raid)
3299
3320
  sec_rpc_client.bdev_wait_for_examine()
3300
3321
 
3301
- cluster_nqn = db_controller.get_cluster_by_id(snode.cluster_id).nqn
3302
3322
  try:
3303
- snode.create_hublvol(cluster_nqn)
3323
+ snode.create_hublvol()
3304
3324
 
3305
3325
  except RPCException as e:
3306
3326
  logger.error("Error establishing hublvol: %s", e.message)
File without changes
File without changes
File without changes
File without changes
File without changes