sbcli-dev 17.3.7__tar.gz → 17.3.8__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 (160) hide show
  1. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/PKG-INFO +1 -1
  2. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/sbcli_dev.egg-info/PKG-INFO +1 -1
  3. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/health_controller.py +159 -7
  4. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/env_var +1 -1
  5. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/hublvol.py +3 -0
  6. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/health_check_service.py +14 -5
  7. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/README.md +0 -0
  8. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/pyproject.toml +0 -0
  9. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/requirements.txt +0 -0
  10. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  11. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  12. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/sbcli_dev.egg-info/entry_points.txt +0 -0
  13. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/sbcli_dev.egg-info/requires.txt +0 -0
  14. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/sbcli_dev.egg-info/top_level.txt +0 -0
  15. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/setup.cfg +0 -0
  16. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/setup.py +0 -0
  17. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_cli/__init__.py +0 -0
  18. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_cli/cli.py +0 -0
  19. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_cli/clibase.py +0 -0
  20. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_cli/main.py +0 -0
  21. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/__init__.py +0 -0
  22. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/cluster_ops.py +0 -0
  23. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/cnode_client.py +0 -0
  24. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/constants.py +0 -0
  25. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/__init__.py +0 -0
  26. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  27. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/cluster_events.py +0 -0
  28. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/device_controller.py +0 -0
  29. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/device_events.py +0 -0
  30. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/events_controller.py +0 -0
  31. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/lvol_controller.py +0 -0
  32. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/lvol_events.py +0 -0
  33. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/mgmt_events.py +0 -0
  34. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/pool_controller.py +0 -0
  35. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/pool_events.py +0 -0
  36. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  37. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/snapshot_events.py +0 -0
  38. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/storage_events.py +0 -0
  39. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/tasks_controller.py +0 -0
  40. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/tasks_events.py +0 -0
  41. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
  42. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/db_controller.py +0 -0
  43. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/distr_controller.py +0 -0
  44. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/mgmt_node_ops.py +0 -0
  45. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/__init__.py +0 -0
  46. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/base_model.py +0 -0
  47. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/caching_node.py +0 -0
  48. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/cluster.py +0 -0
  49. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/deployer.py +0 -0
  50. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/events.py +0 -0
  51. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/iface.py +0 -0
  52. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/job_schedule.py +0 -0
  53. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/lvol_model.py +0 -0
  54. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/mgmt_node.py +0 -0
  55. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/nvme_device.py +0 -0
  56. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/pool.py +0 -0
  57. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/port_stat.py +0 -0
  58. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/snapshot.py +0 -0
  59. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/stats.py +0 -0
  60. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/models/storage_node.py +0 -0
  61. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/pci_utils.py +0 -0
  62. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/rpc_client.py +0 -0
  63. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/__init__.py +0 -0
  64. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  65. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  66. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  67. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/config_docker.sh +0 -0
  68. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboard.yml +0 -0
  69. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  70. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  71. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  72. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  73. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  74. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  75. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/datasource.yml +0 -0
  76. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/db_config_double.sh +0 -0
  77. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/db_config_single.sh +0 -0
  78. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  79. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  80. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  81. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  82. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/foundation.yml +0 -0
  83. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/haproxy.cfg +0 -0
  84. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/install_deps.sh +0 -0
  85. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/objstore.yml +0 -0
  86. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  87. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
  88. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/run_ssh.sh +0 -0
  89. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/set_db_config.sh +0 -0
  90. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  91. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/__init__.py +0 -0
  92. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  93. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/caching_node_monitor.py +0 -0
  94. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/cap_monitor.py +0 -0
  95. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  96. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/device_monitor.py +0 -0
  97. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/install_service.sh +0 -0
  98. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/lvol_monitor.py +0 -0
  99. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  100. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  101. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  102. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/new_device_discovery.py +0 -0
  103. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/remove_service.sh +0 -0
  104. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/service_template.service +0 -0
  105. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/spdk/__init__.py +0 -0
  106. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/spdk/client.py +0 -0
  107. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  108. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/spdk_stats_collector.py +0 -0
  109. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/storage_node_monitor.py +0 -0
  110. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  111. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  112. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  113. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  114. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  115. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/shell_utils.py +0 -0
  116. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/snode_client.py +0 -0
  117. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/storage_node_ops.py +0 -0
  118. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/test/test_utils.py +0 -0
  119. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/utils.py +0 -0
  120. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  121. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/README.md +0 -0
  122. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/__init__.py +0 -0
  123. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/app.py +0 -0
  124. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/auth_middleware.py +0 -0
  125. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/__init__.py +0 -0
  126. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  127. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  128. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  129. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  130. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  131. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/snode_ops.py +0 -0
  132. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  133. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
  134. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  135. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  136. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  137. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_device.py +0 -0
  138. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  139. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_metrics.py +0 -0
  140. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  141. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  142. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  143. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  144. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/node_utils.py +0 -0
  145. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/node_utils_k8s.py +0 -0
  146. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/node_webapp.py +0 -0
  147. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/requirements.txt +0 -0
  148. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
  149. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/delete.py +0 -0
  150. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/deploy.py +0 -0
  151. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  152. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  153. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/is_up.py +0 -0
  154. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/list_deps.py +0 -0
  155. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/rpac.yaml +0 -0
  156. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/swagger.yaml +0 -0
  157. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/static/tst.py +0 -0
  158. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  159. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  160. {sbcli_dev-17.3.7 → sbcli_dev-17.3.8}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 17.3.7
3
+ Version: 17.3.8
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.4
2
2
  Name: sbcli-dev
3
- Version: 17.3.7
3
+ Version: 17.3.8
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -118,6 +118,159 @@ def _check_node_ping(ip):
118
118
  else:
119
119
  return False
120
120
 
121
+ def _check_node_hublvol(node: StorageNode, node_bdev_names=None, node_lvols_nqns=None):
122
+ logger.info(f"Checking Hublvol: {node.hublvol.name} on node {node.get_id()}")
123
+ db_controller = DBController()
124
+
125
+ passed = True
126
+ try:
127
+ rpc_client = RPCClient(
128
+ node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=5, retry=1)
129
+
130
+ # if not node_bdev_names:
131
+ # ret = rpc_client.get_bdevs()
132
+ # if ret:
133
+ # node_bdev_names = [b['name'] for b in ret]
134
+ # else:
135
+ # node_bdev_names = []
136
+
137
+ if not node_lvols_nqns:
138
+ node_lvols_nqns = {}
139
+ ret = rpc_client.subsystem_list()
140
+ for sub in ret:
141
+ node_lvols_nqns[sub['nqn']] = sub
142
+
143
+ if node.hublvol.uuid in node_bdev_names:
144
+ logger.info(f"Checking bdev: {node.hublvol.uuid} ... ok")
145
+ else:
146
+ logger.error(f"Checking bdev: {node.hublvol.uuid} ... failed")
147
+ passed = False
148
+
149
+ if node.hublvol.nqn in node_lvols_nqns:
150
+ logger.info(f"Checking subsystem ... ok")
151
+ if node_lvols_nqns[node.hublvol.nqn]["listen_addresses"]:
152
+ logger.info(f"Checking listener ... ok")
153
+ else:
154
+ logger.info(f"Checking listener ... not found")
155
+ passed = False
156
+
157
+ if node_lvols_nqns[node.hublvol.nqn]["namespaces"]:
158
+ logger.info(f"Checking namespaces ... ok")
159
+ else:
160
+ logger.info(f"Checking namespaces ... not found")
161
+ passed = False
162
+ else:
163
+ logger.info(f"Checking subsystem ... not found")
164
+ passed = False
165
+ cl = db_controller.get_cluster_by_id(node.cluster_id)
166
+
167
+ ret = rpc_client.bdev_lvol_get_lvstores(node.lvstore)
168
+ if ret:
169
+ logger.info(f"Checking lvstore: {node.lvstore} ... ok")
170
+ lvs_info = ret[0]
171
+ logger.info(f"lVol store Info:")
172
+ lvs_info_dict = []
173
+ expected = {}
174
+ expected["lvs leadership"] = True
175
+ expected["lvs_primary"] = True
176
+ expected["lvs_read_only"] = False
177
+ expected["name"] = node.lvstore
178
+ expected["base_bdev"] = node.raid
179
+ expected["block_size"] = cl.blk_size
180
+ expected["cluster_size"] = cl.page_size_in_blocks
181
+
182
+ for k, v in lvs_info.items():
183
+ if k in expected:
184
+ value = expected[k] == v
185
+ lvs_info_dict.append({"Key": k, "Value": v, "expected": value})
186
+ if value is bool and v is False:
187
+ passed = False
188
+ else:
189
+ lvs_info_dict.append({"Key": k, "Value": v, "expected": " "})
190
+ for line in utils.print_table(lvs_info_dict).splitlines():
191
+ logger.info(line)
192
+
193
+ except Exception as e:
194
+ logger.debug(e)
195
+ return passed
196
+
197
+
198
+
199
+ def _check_sec_node_hublvol(node: StorageNode, node_bdev=None, node_lvols_nqns=None):
200
+ logger.info(f"Checking secondary Hublvol: {node.hublvol.name} on node {node.get_id()}")
201
+ db_controller = DBController()
202
+
203
+ passed = True
204
+ try:
205
+ rpc_client = RPCClient(
206
+ node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=5, retry=1)
207
+
208
+ if not node_bdev:
209
+ node_bdev = {}
210
+ ret = rpc_client.get_bdevs()
211
+ if ret:
212
+ for b in ret:
213
+ node_bdev[b['name']] = b
214
+ for al in b['aliases']:
215
+ node_bdev[al]= b
216
+ else:
217
+ node_bdev = []
218
+
219
+ if not node_lvols_nqns:
220
+ node_lvols_nqns = {}
221
+ ret = rpc_client.subsystem_list()
222
+ for sub in ret:
223
+ node_lvols_nqns[sub['nqn']] = sub
224
+
225
+ primary_node = db_controller.get_storage_node_by_id(node.lvstore_stack_secondary_1)
226
+
227
+ ret = rpc_client.bdev_nvme_controller_list(primary_node.hublvol.name)
228
+ if ret:
229
+ logger.info(f"Checking controller: {primary_node.hublvol.name} ... ok")
230
+ else:
231
+ logger.info(f"Checking controller: {primary_node.hublvol.name} ... failed")
232
+ passed = False
233
+
234
+ if primary_node.hublvol.get_remote_bdev_name() in node_bdev:
235
+ logger.info(f"Checking bdev: {primary_node.hublvol.get_remote_bdev_name()} ... ok")
236
+ else:
237
+ logger.error(f"Checking bdev: {primary_node.hublvol.get_remote_bdev_name()} ... failed")
238
+ passed = False
239
+ cl = db_controller.get_cluster_by_id(node.cluster_id)
240
+ ret = rpc_client.bdev_lvol_get_lvstores(primary_node.lvstore)
241
+ if ret:
242
+ logger.info(f"Checking lvstore: {primary_node.lvstore} ... ok")
243
+ lvs_info = ret[0]
244
+ logger.info(f"lVol store Info:")
245
+ lvs_info_dict = []
246
+ expected = {}
247
+ expected["name"] = primary_node.lvstore
248
+ expected["lvs leadership"] = False
249
+ expected["lvs_secondary"] = True
250
+ expected["lvs_read_only"] = False
251
+ expected["lvs_redirect"] = True
252
+ expected["remote_bdev"] = primary_node.hublvol.get_remote_bdev_name()
253
+ expected["connect_state"] = True
254
+ expected["base_bdev"] = primary_node.raid
255
+ expected["block_size"] = cl.blk_size
256
+ expected["cluster_size"] = cl.page_size_in_blocks
257
+
258
+ for k, v in lvs_info.items():
259
+
260
+ if k in expected:
261
+ value = expected[k] == v
262
+ lvs_info_dict.append({"Key": k, "Value": v, "expected": value})
263
+ if value is bool and value is False:
264
+ passed = False
265
+
266
+ else:
267
+ lvs_info_dict.append({"Key": k, "Value": v, "expected": " "})
268
+ for line in utils.print_table(lvs_info_dict).splitlines():
269
+ logger.info(line)
270
+ except Exception as e:
271
+ logger.error(e)
272
+ return passed
273
+
121
274
 
122
275
  def _check_node_lvstore(
123
276
  lvstore_stack, node, auto_fix=False, node_bdev_names=None, stack_src_node=None):
@@ -330,17 +483,16 @@ def check_node(node_id, with_devices=True):
330
483
  if snode.lvstore_stack:
331
484
  lvstore_stack = snode.lvstore_stack
332
485
  lvstore_check &= _check_node_lvstore(lvstore_stack, snode)
333
-
486
+ print("*" * 100)
334
487
  if snode.secondary_node_id:
335
488
  second_node_1 = db_controller.get_storage_node_by_id(snode.secondary_node_id)
336
489
  if second_node_1.status == StorageNode.STATUS_ONLINE:
337
490
  lvstore_check &= _check_node_lvstore(lvstore_stack, second_node_1, stack_src_node=snode)
338
-
339
- # if snode.lvstore_stack_secondary_1:
340
- # for node in db_controller.get_storage_nodes():
341
- # if node.secondary_node_id == snode.get_id() and node.status == StorageNode.STATUS_ONLINE:
342
- # logger.info(f"Checking stack from node : {node.get_id()}")
343
- # lvstore_check &= _check_node_lvstore(node.lvstore_stack, snode)
491
+ print("*" * 100)
492
+ lvstore_check &= _check_node_hublvol(snode)
493
+ if second_node_1.status == StorageNode.STATUS_ONLINE:
494
+ print("*" * 100)
495
+ lvstore_check &= _check_sec_node_hublvol(second_node_1)
344
496
 
345
497
  return is_node_online and node_devices_check and node_remote_devices_check and lvstore_check
346
498
 
@@ -1,5 +1,5 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
2
- SIMPLY_BLOCK_VERSION=17.3.7
2
+ SIMPLY_BLOCK_VERSION=17.3.8
3
3
 
4
4
  SIMPLY_BLOCK_DOCKER_IMAGE=public.ecr.aws/simply-block/simplyblock:main
5
5
  SIMPLY_BLOCK_SPDK_ULTRA_IMAGE=public.ecr.aws/simply-block/ultra:main-latest
@@ -10,3 +10,6 @@ class HubLVol(BaseModel):
10
10
  nqn: str = ""
11
11
  name: str = ""
12
12
  nvmf_port: int = 9099
13
+
14
+ def get_remote_bdev_name(self):
15
+ return f"{self.name}n1"
@@ -96,15 +96,20 @@ while True:
96
96
 
97
97
  node_bdevs = rpc_client.get_bdevs()
98
98
  if node_bdevs:
99
- node_bdev_names = [b['name'] for b in node_bdevs]
99
+ # node_bdev_names = [b['name'] for b in node_bdevs]
100
+ node_bdev_names = {}
101
+ for b in node_bdevs:
102
+ node_bdev_names[b['name']] = b
103
+ for al in b['aliases']:
104
+ node_bdev_names[al] = b
100
105
  else:
101
106
  node_bdev_names = []
102
107
 
103
108
  sub_list = rpc_client.subsystem_list()
104
109
  if sub_list:
105
- subsystem_list = [item['nqn'] for item in sub_list]
110
+ subsystem_list = {item['nqn']: item for item in sub_list }
106
111
  else:
107
- subsystem_list =[]
112
+ subsystem_list = {}
108
113
 
109
114
  for device in snode.nvme_devices:
110
115
  passed = True
@@ -230,11 +235,15 @@ while True:
230
235
  lvstore_check &= health_controller._check_node_lvstore(
231
236
  lvstore_stack, snode, auto_fix=True, node_bdev_names=node_bdev_names)
232
237
 
238
+ lvstore_check &= health_controller._check_node_hublvol(
239
+ snode, node_bdev_names=node_bdev_names, node_lvols_nqns=subsystem_list)
240
+
233
241
  if snode.secondary_node_id:
234
242
  second_node_1 = db_controller.get_storage_node_by_id(snode.secondary_node_id)
235
243
  if second_node_1 and second_node_1.status == StorageNode.STATUS_ONLINE:
236
- lvstore_check &= health_controller._check_node_lvstore(lvstore_stack, second_node_1,
237
- auto_fix=True, stack_src_node=snode)
244
+ lvstore_check &= health_controller._check_node_lvstore(
245
+ lvstore_stack, second_node_1, auto_fix=True, stack_src_node=snode)
246
+ lvstore_check &= health_controller._check_sec_node_hublvol(second_node_1)
238
247
 
239
248
  lvol_port_check = False
240
249
  # if node_api_check:
File without changes
File without changes
File without changes
File without changes
File without changes