sbcli-dev 3.8.51__zip → 3.8.52__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.52}/PKG-INFO +1 -1
  2. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/env_var +1 -1
  3. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/sbcli_dev.egg-info/SOURCES.txt +1 -0
  5. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/constants.py +0 -1
  6. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/caching_node_controller.py +1 -3
  7. sbcli_dev-3.8.52/simplyblock_core/services/spdk_http_proxy_server.py +159 -0
  8. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/storage_node_ops.py +0 -2
  9. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/caching_node_ops.py +3 -3
  10. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/caching_node_ops_k8s.py +2 -1
  11. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/node_api_caching_docker.py +3 -3
  12. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/node_api_caching_ks.py +2 -1
  13. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/snode_ops.py +2 -2
  14. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -94
  15. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +2 -2
  16. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +2 -2
  17. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/README.md +0 -0
  18. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/pyproject.toml +0 -0
  19. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  20. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/sbcli_dev.egg-info/entry_points.txt +0 -0
  21. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/sbcli_dev.egg-info/requires.txt +0 -0
  22. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/sbcli_dev.egg-info/top_level.txt +0 -0
  23. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/setup.cfg +0 -0
  24. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/setup.py +0 -0
  25. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_cli/cli.py +0 -0
  26. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_cli/main.py +0 -0
  27. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/__init__.py +0 -0
  28. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/cluster_ops.py +0 -0
  29. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/cnode_client.py +0 -0
  30. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/compute_node_ops.py +0 -0
  31. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/__init__.py +0 -0
  32. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/cluster_events.py +0 -0
  33. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/device_controller.py +0 -0
  34. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/device_events.py +0 -0
  35. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/events_controller.py +0 -0
  36. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/health_controller.py +0 -0
  37. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/lvol_controller.py +0 -0
  38. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/lvol_events.py +0 -0
  39. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/mgmt_events.py +0 -0
  40. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/pool_controller.py +0 -0
  41. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/pool_events.py +0 -0
  42. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  43. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/snapshot_events.py +0 -0
  44. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/storage_events.py +0 -0
  45. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/tasks_controller.py +0 -0
  46. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/controllers/tasks_events.py +0 -0
  47. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/distr_controller.py +0 -0
  48. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/kv_store.py +0 -0
  49. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/mgmt_node_ops.py +0 -0
  50. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/__init__.py +0 -0
  51. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/base_model.py +0 -0
  52. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/caching_node.py +0 -0
  53. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/cluster.py +0 -0
  54. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/compute_node.py +0 -0
  55. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/deployer.py +0 -0
  56. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/events.py +0 -0
  57. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/global_settings.py +0 -0
  58. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/iface.py +0 -0
  59. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/job_schedule.py +0 -0
  60. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/lvol_model.py +0 -0
  61. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/mgmt_node.py +0 -0
  62. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/nvme_device.py +0 -0
  63. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/pool.py +0 -0
  64. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/port_stat.py +0 -0
  65. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/snapshot.py +0 -0
  66. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/stats.py +0 -0
  67. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/models/storage_node.py +0 -0
  68. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/pci_utils.py +0 -0
  69. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/rpc_client.py +0 -0
  70. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/__init__.py +0 -0
  71. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  72. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  73. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  74. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/config_docker.sh +0 -0
  75. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboard.yml +0 -0
  76. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  77. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  78. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  79. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  80. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  81. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  82. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/datasource.yml +0 -0
  83. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/db_config_double.sh +0 -0
  84. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/db_config_single.sh +0 -0
  85. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  86. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  87. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  88. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/haproxy.cfg +0 -0
  89. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/install_deps.sh +0 -0
  90. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/objstore.yml +0 -0
  91. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/prometheus.yml +0 -0
  92. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/run_ssh.sh +0 -0
  93. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/set_db_config.sh +0 -0
  94. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  95. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/__init__.py +0 -0
  96. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  97. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/caching_node_monitor.py +0 -0
  98. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/cap_monitor.py +0 -0
  99. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  100. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/device_monitor.py +0 -0
  101. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/distr_event_collector.py +0 -0
  102. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/health_check_service.py +0 -0
  103. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/install_service.sh +0 -0
  104. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/log_agg_service.py +0 -0
  105. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/lvol_monitor.py +0 -0
  106. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  107. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  108. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  109. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/new_device_discovery.py +0 -0
  110. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/port_stat_collector.py +0 -0
  111. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/remove_service.sh +0 -0
  112. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/service_template.service +0 -0
  113. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/storage_node_monitor.py +0 -0
  114. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  115. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  116. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  117. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  118. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  119. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/shell_utils.py +0 -0
  120. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/snode_client.py +0 -0
  121. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_core/utils.py +0 -0
  122. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/__init__.py +0 -0
  123. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/app.py +0 -0
  124. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/auth_middleware.py +0 -0
  125. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/__init__.py +0 -0
  126. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  127. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  128. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  129. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  130. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_device.py +0 -0
  131. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  132. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  133. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  134. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  135. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  136. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/caching_node_app.py +0 -0
  137. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/caching_node_app_k8s.py +0 -0
  138. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/node_utils.py +0 -0
  139. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/node_webapp.py +0 -0
  140. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/snode_app.py +0 -0
  141. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/snode_app_k8s.py +0 -0
  142. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/delete.py +0 -0
  143. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/deploy.py +0 -0
  144. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  145. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  146. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/is_up.py +0 -0
  147. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/list_deps.py +0 -0
  148. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/rpac.yaml +0 -0
  149. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/simplyblock_web/static/tst.py +0 -0
  150. {sbcli_dev-3.8.51 → sbcli_dev-3.8.52}/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.52
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.52
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.52
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
 
@@ -0,0 +1,159 @@
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
+ try:
12
+ from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
13
+ except ImportError:
14
+ from http.server import HTTPServer
15
+ from http.server import BaseHTTPRequestHandler
16
+
17
+ TIMEOUT = 30
18
+ TIMEOUT_LONG = 5*60 # 5 min
19
+ rpc_sock = '/var/tmp/spdk.sock'
20
+ logger_handler = logging.StreamHandler(stream=sys.stdout)
21
+ logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
22
+ logger = logging.getLogger()
23
+ logger.addHandler(logger_handler)
24
+ logger.setLevel(logging.DEBUG)
25
+
26
+
27
+ def get_env_var(name, default=None, is_required=False):
28
+ if not name:
29
+ logger.warning("Invalid env var name %s", name)
30
+ return False
31
+ if name not in os.environ and is_required:
32
+ logger.error("env value is required: %s" % name)
33
+ raise Exception("env value is required: %s" % name)
34
+ return os.environ.get(name, default)
35
+
36
+
37
+ def rpc_call(req):
38
+ req_data = json.loads(req.decode('ascii'))
39
+ print(req_data)
40
+ method = req_data['method']
41
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
42
+ if "create" in method or "delete" in method:
43
+ sock.settimeout(TIMEOUT_LONG)
44
+ else:
45
+ sock.settimeout(TIMEOUT)
46
+ sock.connect(rpc_sock)
47
+ sock.sendall(req)
48
+
49
+ if 'id' not in req_data:
50
+ sock.close()
51
+ return None
52
+
53
+ buf = ''
54
+ closed = False
55
+ response = None
56
+
57
+
58
+ while not closed:
59
+ newdata = sock.recv(1024)
60
+ if (newdata == b''):
61
+ closed = True
62
+ buf += newdata.decode('ascii')
63
+ try:
64
+ response = json.loads(buf)
65
+ except ValueError:
66
+ continue # incomplete response; keep buffering
67
+ break
68
+
69
+ sock.close()
70
+
71
+ if not response and len(buf) > 0:
72
+ raise
73
+
74
+ print(buf)
75
+
76
+ return buf
77
+
78
+
79
+ class ServerHandler(BaseHTTPRequestHandler):
80
+
81
+ key = ""
82
+
83
+ def do_HEAD(self):
84
+ self.send_response(200)
85
+ self.send_header('Content-type', 'text/html')
86
+ self.end_headers()
87
+
88
+ def do_AUTHHEAD(self):
89
+ self.send_response(401)
90
+ self.send_header('WWW-Authenticate', 'text/html')
91
+ self.send_header('Content-type', 'text/html')
92
+ self.end_headers()
93
+
94
+ def do_INTERNALERROR(self):
95
+ self.send_response(500)
96
+ self.send_header('Content-type', 'text/html')
97
+ self.end_headers()
98
+
99
+ def do_POST(self):
100
+ if self.headers['Authorization'] != 'Basic ' + self.key:
101
+ self.do_AUTHHEAD()
102
+ else:
103
+ if "Content-Length" in self.headers:
104
+ data_string = self.rfile.read(int(self.headers['Content-Length']))
105
+ elif "chunked" in self.headers.get("Transfer-Encoding", ""):
106
+ data_string = b''
107
+ while True:
108
+ line = self.rfile.readline().strip()
109
+ chunk_length = int(line, 16)
110
+
111
+ if chunk_length != 0:
112
+ chunk = self.rfile.read(chunk_length)
113
+ data_string += chunk
114
+
115
+ # Each chunk is followed by an additional empty newline
116
+ # that we have to consume.
117
+ self.rfile.readline()
118
+
119
+ # Finally, a chunk size of 0 is an end indication
120
+ if chunk_length == 0:
121
+ break
122
+
123
+ try:
124
+ response = rpc_call(data_string)
125
+ if response is not None:
126
+ self.do_HEAD()
127
+ self.wfile.write(bytes(response.encode(encoding='ascii')))
128
+ except ValueError:
129
+ self.do_INTERNALERROR()
130
+
131
+
132
+ def run_server(host, port, user, password, cert=None):
133
+ # encoding user and password
134
+ key = base64.b64encode((user+':'+password).encode(encoding='ascii')).decode('ascii')
135
+
136
+ try:
137
+ ServerHandler.key = key
138
+ httpd = HTTPServer((host, port), ServerHandler)
139
+ httpd.timeout = TIMEOUT
140
+ if cert is not None:
141
+ httpd.socket = ssl.wrap_socket(httpd.socket, certfile=cert, server_side=True)
142
+ print('Started RPC http proxy server')
143
+ httpd.serve_forever()
144
+ except KeyboardInterrupt:
145
+ print('Shutting down server')
146
+ httpd.socket.close()
147
+
148
+
149
+ server_ip = get_env_var("SERVER_IP", is_required=True)
150
+ rpc_port = get_env_var("RPC_PORT", is_required=True)
151
+ rpc_username = get_env_var("RPC_USERNAME", is_required=True)
152
+ rpc_password = get_env_var("RPC_PASSWORD", is_required=True)
153
+
154
+ try:
155
+ rpc_port = int(rpc_port)
156
+ except Exception:
157
+ rpc_port = 8080
158
+
159
+ run_server(server_ip, rpc_port, rpc_username, rpc_password)
@@ -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