sbcli-dev 3.8.51__zip → 3.8.53__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.51 → sbcli_dev-3.8.53}/PKG-INFO +1 -1
  2. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/env_var +1 -1
  3. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/sbcli_dev.egg-info/SOURCES.txt +1 -0
  5. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/constants.py +0 -1
  6. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/caching_node_controller.py +1 -3
  7. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/distr_controller.py +1 -2
  8. sbcli_dev-3.8.53/simplyblock_core/services/spdk_http_proxy_server.py +151 -0
  9. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/tasks_runner_restart.py +1 -1
  10. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/storage_node_ops.py +0 -2
  11. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/caching_node_ops.py +3 -3
  12. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/caching_node_ops_k8s.py +2 -1
  13. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/node_api_caching_docker.py +3 -3
  14. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/node_api_caching_ks.py +2 -1
  15. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/snode_ops.py +2 -2
  16. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -94
  17. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +2 -2
  18. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +2 -2
  19. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/README.md +0 -0
  20. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/pyproject.toml +0 -0
  21. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  22. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/sbcli_dev.egg-info/entry_points.txt +0 -0
  23. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/sbcli_dev.egg-info/requires.txt +0 -0
  24. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/sbcli_dev.egg-info/top_level.txt +0 -0
  25. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/setup.cfg +0 -0
  26. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/setup.py +0 -0
  27. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_cli/cli.py +0 -0
  28. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_cli/main.py +0 -0
  29. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/__init__.py +0 -0
  30. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/cluster_ops.py +0 -0
  31. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/cnode_client.py +0 -0
  32. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/compute_node_ops.py +0 -0
  33. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/__init__.py +0 -0
  34. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/cluster_events.py +0 -0
  35. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/device_controller.py +0 -0
  36. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/device_events.py +0 -0
  37. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/events_controller.py +0 -0
  38. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/health_controller.py +0 -0
  39. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/lvol_controller.py +0 -0
  40. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/lvol_events.py +0 -0
  41. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/mgmt_events.py +0 -0
  42. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/pool_controller.py +0 -0
  43. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/pool_events.py +0 -0
  44. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  45. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/snapshot_events.py +0 -0
  46. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/storage_events.py +0 -0
  47. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/tasks_controller.py +0 -0
  48. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/controllers/tasks_events.py +0 -0
  49. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/kv_store.py +0 -0
  50. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/mgmt_node_ops.py +0 -0
  51. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/__init__.py +0 -0
  52. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/base_model.py +0 -0
  53. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/caching_node.py +0 -0
  54. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/cluster.py +0 -0
  55. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/compute_node.py +0 -0
  56. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/deployer.py +0 -0
  57. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/events.py +0 -0
  58. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/global_settings.py +0 -0
  59. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/iface.py +0 -0
  60. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/job_schedule.py +0 -0
  61. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/lvol_model.py +0 -0
  62. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/mgmt_node.py +0 -0
  63. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/nvme_device.py +0 -0
  64. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/pool.py +0 -0
  65. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/port_stat.py +0 -0
  66. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/snapshot.py +0 -0
  67. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/stats.py +0 -0
  68. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/models/storage_node.py +0 -0
  69. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/pci_utils.py +0 -0
  70. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/rpc_client.py +0 -0
  71. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/__init__.py +0 -0
  72. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  73. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  74. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  75. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/config_docker.sh +0 -0
  76. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboard.yml +0 -0
  77. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  78. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  79. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  80. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  81. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  82. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  83. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/datasource.yml +0 -0
  84. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/db_config_double.sh +0 -0
  85. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/db_config_single.sh +0 -0
  86. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  87. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  88. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  89. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/haproxy.cfg +0 -0
  90. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/install_deps.sh +0 -0
  91. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/objstore.yml +0 -0
  92. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/prometheus.yml +0 -0
  93. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/run_ssh.sh +0 -0
  94. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/set_db_config.sh +0 -0
  95. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  96. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/__init__.py +0 -0
  97. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  98. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/caching_node_monitor.py +0 -0
  99. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/cap_monitor.py +0 -0
  100. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  101. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/device_monitor.py +0 -0
  102. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/distr_event_collector.py +0 -0
  103. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/health_check_service.py +0 -0
  104. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/install_service.sh +0 -0
  105. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/log_agg_service.py +0 -0
  106. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/lvol_monitor.py +0 -0
  107. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  108. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  109. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  110. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/new_device_discovery.py +0 -0
  111. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/port_stat_collector.py +0 -0
  112. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/remove_service.sh +0 -0
  113. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/service_template.service +0 -0
  114. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/storage_node_monitor.py +0 -0
  115. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  116. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  117. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  118. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  119. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/shell_utils.py +0 -0
  120. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/snode_client.py +0 -0
  121. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_core/utils.py +0 -0
  122. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/__init__.py +0 -0
  123. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/app.py +0 -0
  124. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/auth_middleware.py +0 -0
  125. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/__init__.py +0 -0
  126. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  127. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  128. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  129. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  130. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_device.py +0 -0
  131. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  132. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  133. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  134. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  135. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  136. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/caching_node_app.py +0 -0
  137. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/caching_node_app_k8s.py +0 -0
  138. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/node_utils.py +0 -0
  139. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/node_webapp.py +0 -0
  140. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/snode_app.py +0 -0
  141. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/snode_app_k8s.py +0 -0
  142. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/delete.py +0 -0
  143. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/deploy.py +0 -0
  144. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  145. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  146. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/is_up.py +0 -0
  147. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/list_deps.py +0 -0
  148. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/rpac.yaml +0 -0
  149. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/simplyblock_web/static/tst.py +0 -0
  150. {sbcli_dev-3.8.51 → sbcli_dev-3.8.53}/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.51
3
+ Version: 3.8.53
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.51
2
+ SIMPLY_BLOCK_VERSION=3.8.53
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.51
3
+ Version: 3.8.53
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -102,6 +102,7 @@ simplyblock_core/services/new_device_discovery.py
102
102
  simplyblock_core/services/port_stat_collector.py
103
103
  simplyblock_core/services/remove_service.sh
104
104
  simplyblock_core/services/service_template.service
105
+ simplyblock_core/services/spdk_http_proxy_server.py
105
106
  simplyblock_core/services/storage_node_monitor.py
106
107
  simplyblock_core/services/tasks_runner_failed_migration.py
107
108
  simplyblock_core/services/tasks_runner_migration.py
@@ -57,7 +57,6 @@ SIMPLY_BLOCK_CLI_NAME = "sbcli-dev"
57
57
  TASK_EXEC_INTERVAL_SEC = 30
58
58
  TASK_EXEC_RETRY_COUNT = 8
59
59
 
60
- SIMPLY_BLOCK_SPDK_CORE_IMAGE = "simplyblock/spdk-core:latest"
61
60
  SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:main-latest"
62
61
  SIMPLY_BLOCK_SPDK_ULTRA_IMAGE_JM = "simplyblock/spdk:feature-journal-ha-latest"
63
62
 
@@ -626,9 +626,7 @@ def deploy(ifname):
626
626
  ]
627
627
  )
628
628
  logger.info("Pulling SPDK images")
629
- spdk_core = constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE
630
-
631
- node_docker.images.pull(spdk_core)
629
+ node_docker.images.pull(constants.SIMPLY_BLOCK_DOCKER_IMAGE)
632
630
  return f"{dev_ip}:5000"
633
631
 
634
632
 
@@ -86,9 +86,9 @@ def get_distr_cluster_map(snodes, target_node):
86
86
  dev_w = int(dev.size/(1024*1024*1024)) or 1
87
87
  node_w += dev_w
88
88
  name = None
89
+ dev_status = dev.status
89
90
  if snode.get_id() == target_node.get_id():
90
91
  name = dev.alceml_bdev
91
- dev_status = dev.status
92
92
  local_node_index = index
93
93
  else:
94
94
  for dev2 in target_node.remote_devices:
@@ -98,7 +98,6 @@ def get_distr_cluster_map(snodes, target_node):
98
98
  break
99
99
  if not name:
100
100
  name = f"remote_{dev.alceml_bdev}n1"
101
- dev_status = NVMeDevice.STATUS_UNAVAILABLE
102
101
  dev_map[dev.cluster_device_order] = {
103
102
  "UUID": dev.get_id(),
104
103
  "bdev_name": name,
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import base64
4
+ import json
5
+ import logging
6
+ import os
7
+ import socket
8
+ import ssl
9
+ import sys
10
+
11
+ from http.server import ThreadingHTTPServer
12
+ from http.server import BaseHTTPRequestHandler
13
+
14
+
15
+ TIMEOUT = 5*60 # 5 min
16
+ rpc_sock = '/var/tmp/spdk.sock'
17
+ logger_handler = logging.StreamHandler(stream=sys.stdout)
18
+ logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
19
+ logger = logging.getLogger()
20
+ logger.addHandler(logger_handler)
21
+ logger.setLevel(logging.DEBUG)
22
+
23
+
24
+ def get_env_var(name, default=None, is_required=False):
25
+ if not name:
26
+ logger.warning("Invalid env var name %s", name)
27
+ return False
28
+ if name not in os.environ and is_required:
29
+ logger.error("env value is required: %s" % name)
30
+ raise Exception("env value is required: %s" % name)
31
+ return os.environ.get(name, default)
32
+
33
+
34
+ def rpc_call(req):
35
+ req_data = json.loads(req.decode('ascii'))
36
+ print(req_data)
37
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
38
+ sock.settimeout(TIMEOUT)
39
+ sock.connect(rpc_sock)
40
+ sock.sendall(req)
41
+
42
+ if 'id' not in req_data:
43
+ sock.close()
44
+ return None
45
+
46
+ buf = ''
47
+ closed = False
48
+ response = None
49
+
50
+ while not closed:
51
+ newdata = sock.recv(1024)
52
+ if (newdata == b''):
53
+ closed = True
54
+ buf += newdata.decode('ascii')
55
+ try:
56
+ response = json.loads(buf)
57
+ except ValueError:
58
+ continue # incomplete response; keep buffering
59
+ break
60
+
61
+ sock.close()
62
+
63
+ if not response and len(buf) > 0:
64
+ raise
65
+
66
+ print(buf)
67
+
68
+ return buf
69
+
70
+
71
+ class ServerHandler(BaseHTTPRequestHandler):
72
+
73
+ key = ""
74
+
75
+ def do_HEAD(self):
76
+ self.send_response(200)
77
+ self.send_header('Content-type', 'text/html')
78
+ self.end_headers()
79
+
80
+ def do_AUTHHEAD(self):
81
+ self.send_response(401)
82
+ self.send_header('WWW-Authenticate', 'text/html')
83
+ self.send_header('Content-type', 'text/html')
84
+ self.end_headers()
85
+
86
+ def do_INTERNALERROR(self):
87
+ self.send_response(500)
88
+ self.send_header('Content-type', 'text/html')
89
+ self.end_headers()
90
+
91
+ def do_POST(self):
92
+ if self.headers['Authorization'] != 'Basic ' + self.key:
93
+ self.do_AUTHHEAD()
94
+ else:
95
+ if "Content-Length" in self.headers:
96
+ data_string = self.rfile.read(int(self.headers['Content-Length']))
97
+ elif "chunked" in self.headers.get("Transfer-Encoding", ""):
98
+ data_string = b''
99
+ while True:
100
+ line = self.rfile.readline().strip()
101
+ chunk_length = int(line, 16)
102
+
103
+ if chunk_length != 0:
104
+ chunk = self.rfile.read(chunk_length)
105
+ data_string += chunk
106
+
107
+ # Each chunk is followed by an additional empty newline
108
+ # that we have to consume.
109
+ self.rfile.readline()
110
+
111
+ # Finally, a chunk size of 0 is an end indication
112
+ if chunk_length == 0:
113
+ break
114
+
115
+ try:
116
+ response = rpc_call(data_string)
117
+ if response is not None:
118
+ self.do_HEAD()
119
+ self.wfile.write(bytes(response.encode(encoding='ascii')))
120
+ except ValueError:
121
+ self.do_INTERNALERROR()
122
+
123
+
124
+ def run_server(host, port, user, password, cert=None):
125
+ # encoding user and password
126
+ key = base64.b64encode((user+':'+password).encode(encoding='ascii')).decode('ascii')
127
+
128
+ try:
129
+ ServerHandler.key = key
130
+ httpd = ThreadingHTTPServer((host, port), ServerHandler)
131
+ httpd.timeout = TIMEOUT
132
+ if cert is not None:
133
+ httpd.socket = ssl.wrap_socket(httpd.socket, certfile=cert, server_side=True)
134
+ print('Started RPC http proxy server')
135
+ httpd.serve_forever()
136
+ except KeyboardInterrupt:
137
+ print('Shutting down server')
138
+ httpd.socket.close()
139
+
140
+
141
+ server_ip = get_env_var("SERVER_IP", is_required=True)
142
+ rpc_port = get_env_var("RPC_PORT", is_required=True)
143
+ rpc_username = get_env_var("RPC_USERNAME", is_required=True)
144
+ rpc_password = get_env_var("RPC_PASSWORD", is_required=True)
145
+
146
+ try:
147
+ rpc_port = int(rpc_port)
148
+ except Exception:
149
+ rpc_port = 8080
150
+
151
+ run_server(server_ip, rpc_port, rpc_username, rpc_password)
@@ -186,7 +186,7 @@ def task_runner_node(task):
186
186
  logger.info(f"Node restart succeeded")
187
187
 
188
188
  time.sleep(5)
189
- if _get_node_unavailable_devices_count(node.get_id()) == 0 and node.status == StorageNode.STATUS_ONLINE:
189
+ if node.status == StorageNode.STATUS_ONLINE:
190
190
  logger.info(f"Node is online: {node.get_id()}")
191
191
  task.function_result = "done"
192
192
  task.status = JobSchedule.STATUS_DONE
@@ -2357,9 +2357,7 @@ def deploy(ifname):
2357
2357
  ]
2358
2358
  )
2359
2359
  logger.info("Pulling SPDK images")
2360
- logger.debug(constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE)
2361
2360
  logger.debug(constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE)
2362
- node_docker.images.pull(constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE)
2363
2361
  node_docker.images.pull(constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE)
2364
2362
  return f"{dev_ip}:5000"
2365
2363
 
@@ -176,7 +176,7 @@ def spdk_process_start():
176
176
  node.remove(force=True)
177
177
  time.sleep(2)
178
178
 
179
- spdk_image = constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE
179
+ spdk_image = constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE
180
180
 
181
181
  if 'spdk_image' in data and data['spdk_image']:
182
182
  spdk_image = data['spdk_image']
@@ -205,8 +205,8 @@ def spdk_process_start():
205
205
  rpc_password = data['rpc_password']
206
206
 
207
207
  container2 = node_docker.containers.run(
208
- spdk_image,
209
- "python /root/scripts/spdk_http_proxy_server.py",
208
+ constants.SIMPLY_BLOCK_DOCKER_IMAGE,
209
+ "python simplyblock_core/services/spdk_http_proxy_server.py",
210
210
  name="spdk_proxy",
211
211
  detach=True,
212
212
  network_mode="host",
@@ -112,7 +112,7 @@ def spdk_process_start():
112
112
 
113
113
  spdk_mem_gega = int(spdk_mem / 1024)
114
114
 
115
- spdk_image = constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE
115
+ spdk_image = constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE
116
116
 
117
117
  if 'spdk_image' in data and data['spdk_image']:
118
118
  spdk_image = data['spdk_image']
@@ -138,6 +138,7 @@ def spdk_process_start():
138
138
  'RPC_PASSWORD': data['rpc_password'],
139
139
  'HOSTNAME': node_name,
140
140
  'NAMESPACE': namespace,
141
+ 'SIMPLYBLOCK_DOCKER_IMAGE': constants.SIMPLY_BLOCK_DOCKER_IMAGE,
141
142
  }
142
143
  dep = yaml.safe_load(template.render(values))
143
144
  logger.debug(dep)
@@ -64,7 +64,7 @@ def spdk_process_start():
64
64
  node.remove(force=True)
65
65
  time.sleep(2)
66
66
 
67
- spdk_image = constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE
67
+ spdk_image = constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE
68
68
  if 'spdk_image' in data and data['spdk_image']:
69
69
  spdk_image = data['spdk_image']
70
70
  node_docker.images.pull(spdk_image)
@@ -92,8 +92,8 @@ def spdk_process_start():
92
92
  rpc_password = data['rpc_password']
93
93
 
94
94
  container2 = node_docker.containers.run(
95
- constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE,
96
- "python /root/scripts/spdk_http_proxy_server.py",
95
+ constants.SIMPLY_BLOCK_DOCKER_IMAGE,
96
+ "python simplyblock_core/services/spdk_http_proxy_server.py",
97
97
  name="spdk_proxy",
98
98
  detach=True,
99
99
  network_mode="host",
@@ -63,7 +63,7 @@ def spdk_process_start():
63
63
  else:
64
64
  spdk_mem = 64096
65
65
 
66
- spdk_image = constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE
66
+ spdk_image = constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE
67
67
  if 'spdk_image' in data and data['spdk_image']:
68
68
  spdk_image = data['spdk_image']
69
69
  # node_docker.images.pull(spdk_image)
@@ -82,6 +82,7 @@ def spdk_process_start():
82
82
  'RPC_PORT': data['rpc_port'],
83
83
  'RPC_USERNAME': data['rpc_username'],
84
84
  'RPC_PASSWORD': data['rpc_password'],
85
+ 'SIMPLYBLOCK_DOCKER_IMAGE': constants.SIMPLY_BLOCK_DOCKER_IMAGE,
85
86
  }
86
87
  dep = yaml.safe_load(template.render(values))
87
88
  resp = k8s_apps_v1.create_namespaced_deployment(body=dep, namespace=namespace)
@@ -143,8 +143,8 @@ def spdk_process_start():
143
143
  # restart_policy={"Name": "on-failure", "MaximumRetryCount": 99}
144
144
  )
145
145
  container2 = node_docker.containers.run(
146
- constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE,
147
- "python /root/scripts/spdk_http_proxy_server.py",
146
+ constants.SIMPLY_BLOCK_DOCKER_IMAGE,
147
+ "python simplyblock_core/services/spdk_http_proxy_server.py",
148
148
  name="spdk_proxy",
149
149
  detach=True,
150
150
  network_mode="host",
@@ -100,100 +100,6 @@ def scan_devices():
100
100
  }
101
101
  return utils.get_response(out)
102
102
 
103
- #
104
- # @bp.route('/spdk_process_start', methods=['POST'])
105
- # def spdk_process_start():
106
- # try:
107
- # data = request.get_json()
108
- # except:
109
- # data = {}
110
- #
111
- # set_debug = None
112
- # if 'spdk_debug' in data and data['spdk_debug']:
113
- # set_debug = data['spdk_debug']
114
- #
115
- # spdk_cpu_mask = None
116
- # if 'spdk_cpu_mask' in data:
117
- # spdk_cpu_mask = data['spdk_cpu_mask']
118
- #
119
- # spdk_mem = None
120
- # if 'spdk_mem' in data:
121
- # spdk_mem = data['spdk_mem']
122
- #
123
- # if spdk_mem:
124
- # spdk_mem = int(utils.parse_size(spdk_mem) / (1000 * 1000))
125
- # else:
126
- # spdk_mem = 4000
127
- #
128
- # node_docker = get_docker_client()
129
- # nodes = node_docker.containers.list(all=True)
130
- # for node in nodes:
131
- # if node.attrs["Name"] in ["/spdk", "/spdk_proxy"]:
132
- # logger.info(f"{node.attrs['Name']} container found, removing...")
133
- # node.stop()
134
- # node.remove(force=True)
135
- # time.sleep(2)
136
- #
137
- # spdk_debug = ""
138
- # if set_debug:
139
- # spdk_debug = "1"
140
- #
141
- # spdk_image = constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE
142
- # if 'spdk_image' in data and data['spdk_image']:
143
- # spdk_image = data['spdk_image']
144
- # # node_docker.images.pull(spdk_image)
145
- #
146
- # if "cluster_ip" in data and data['cluster_ip']:
147
- # cluster_ip = data['cluster_ip']
148
- # log_config = LogConfig(type=LogConfig.types.GELF, config={"gelf-address": f"udp://{cluster_ip}:12201"})
149
- # else:
150
- # log_config = LogConfig(type=LogConfig.types.JOURNALD)
151
- #
152
- # container = node_docker.containers.run(
153
- # spdk_image,
154
- # f"/root/scripts/run_distr.sh {spdk_cpu_mask} {spdk_mem} {spdk_debug}",
155
- # name="spdk",
156
- # detach=True,
157
- # privileged=True,
158
- # network_mode="host",
159
- # log_config=log_config,
160
- # volumes=[
161
- # '/etc/simplyblock:/etc/simplyblock',
162
- # '/var/tmp:/var/tmp',
163
- # '/dev:/dev',
164
- # '/lib/modules/:/lib/modules/',
165
- # '/var/lib/systemd/coredump/:/var/lib/systemd/coredump/',
166
- # '/sys:/sys'],
167
- # # restart_policy={"Name": "on-failure", "MaximumRetryCount": 99}
168
- # )
169
- # container2 = node_docker.containers.run(
170
- # constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE,
171
- # "python /root/scripts/spdk_http_proxy.py",
172
- # name="spdk_proxy",
173
- # detach=True,
174
- # network_mode="host",
175
- # log_config=log_config,
176
- # volumes=[
177
- # '/var/tmp:/var/tmp',
178
- # '/etc/foundationdb:/etc/foundationdb'],
179
- # restart_policy={"Name": "always"}
180
- # )
181
- # retries = 10
182
- # while retries > 0:
183
- # info = node_docker.containers.get(container.attrs['Id'])
184
- # status = info.attrs['State']["Status"]
185
- # is_running = info.attrs['State']["Running"]
186
- # if not is_running:
187
- # logger.info("Container is not running, waiting...")
188
- # time.sleep(3)
189
- # retries -= 1
190
- # else:
191
- # logger.info(f"Container status: {status}, Is Running: {is_running}")
192
- # return utils.get_response(True)
193
- #
194
- # return utils.get_response(
195
- # False, f"Container create max retries reached, Container status: {status}, Is Running: {is_running}")
196
- #
197
103
 
198
104
  def get_cluster_id():
199
105
  out, _, _ = node_utils.run_command(f"cat {cluster_id_file}")
@@ -92,9 +92,9 @@ spec:
92
92
  memory: 4096Mi
93
93
 
94
94
  - name: spdk-proxy-container
95
- image: {{ SPDK_IMAGE }}
95
+ image: {{ SIMPLYBLOCK_DOCKER_IMAGE }}
96
96
  imagePullPolicy: "Always"
97
- command: ["python", "/root/scripts/spdk_http_proxy_server.py"]
97
+ command: ["python", "simplyblock_core/services/spdk_http_proxy_server.py"]
98
98
  volumeMounts:
99
99
  - name: socket-dir
100
100
  mountPath: /var/tmp
@@ -95,9 +95,9 @@ spec:
95
95
  memory: 4096Mi
96
96
 
97
97
  - name: spdk-proxy-container
98
- image: {{ SPDK_IMAGE }}
98
+ image: {{ SIMPLYBLOCK_DOCKER_IMAGE }}
99
99
  imagePullPolicy: "Always"
100
- command: ["python", "/root/scripts/spdk_http_proxy_server.py"]
100
+ command: ["python", "simplyblock_core/services/spdk_http_proxy_server.py"]
101
101
  volumeMounts:
102
102
  - name: socket-dir
103
103
  mountPath: /var/tmp
File without changes
File without changes
File without changes
File without changes