sbcli-dev 17.0.2__tar.gz → 17.0.4__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 (162) hide show
  1. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/PKG-INFO +1 -1
  2. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/pyproject.toml +1 -1
  3. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/setup.py +1 -0
  5. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/cli.py +3 -28
  6. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/clibase.py +23 -14
  7. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/cluster_ops.py +10 -10
  8. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/env_var +1 -1
  9. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/caching_node.py +2 -2
  10. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/nvme_device.py +7 -8
  11. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/storage_node.py +2 -2
  12. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/rpc_client.py +0 -7
  13. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/lvol_monitor.py +7 -7
  14. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/storage_node_ops.py +0 -117
  15. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/utils.py +0 -34
  16. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/swagger.yaml +256 -4162
  17. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/README.md +0 -0
  18. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/requirements.txt +0 -0
  19. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  20. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  21. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/entry_points.txt +0 -0
  22. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/requires.txt +0 -0
  23. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/top_level.txt +0 -0
  24. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/setup.cfg +0 -0
  25. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/__init__.py +0 -0
  26. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/main.py +0 -0
  27. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/__init__.py +0 -0
  28. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/cnode_client.py +0 -0
  29. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/constants.py +0 -0
  30. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/__init__.py +0 -0
  31. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  32. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/cluster_events.py +0 -0
  33. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/device_controller.py +0 -0
  34. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/device_events.py +0 -0
  35. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/events_controller.py +0 -0
  36. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/health_controller.py +0 -0
  37. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/lvol_controller.py +0 -0
  38. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/lvol_events.py +0 -0
  39. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/mgmt_events.py +0 -0
  40. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/pool_controller.py +0 -0
  41. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/pool_events.py +0 -0
  42. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  43. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/snapshot_events.py +0 -0
  44. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/storage_events.py +0 -0
  45. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/tasks_controller.py +0 -0
  46. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/tasks_events.py +0 -0
  47. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
  48. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/db_controller.py +0 -0
  49. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/distr_controller.py +0 -0
  50. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/mgmt_node_ops.py +0 -0
  51. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/__init__.py +0 -0
  52. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/base_model.py +0 -0
  53. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/cluster.py +0 -0
  54. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/deployer.py +0 -0
  55. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/events.py +0 -0
  56. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/iface.py +0 -0
  57. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/job_schedule.py +0 -0
  58. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/lvol_model.py +0 -0
  59. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/mgmt_node.py +0 -0
  60. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/pool.py +0 -0
  61. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/port_stat.py +0 -0
  62. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/snapshot.py +0 -0
  63. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/stats.py +0 -0
  64. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/pci_utils.py +0 -0
  65. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/__init__.py +0 -0
  66. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  67. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  68. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  69. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/config_docker.sh +0 -0
  70. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboard.yml +0 -0
  71. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  72. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  73. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  74. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  75. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  76. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  77. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/datasource.yml +0 -0
  78. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/db_config_double.sh +0 -0
  79. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/db_config_single.sh +0 -0
  80. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  81. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  82. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  83. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  84. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/foundation.yml +0 -0
  85. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/haproxy.cfg +0 -0
  86. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/install_deps.sh +0 -0
  87. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/objstore.yml +0 -0
  88. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  89. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/prometheus.yml +0 -0
  90. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/run_ssh.sh +0 -0
  91. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/set_db_config.sh +0 -0
  92. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  93. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/__init__.py +0 -0
  94. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  95. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/caching_node_monitor.py +0 -0
  96. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/cap_monitor.py +0 -0
  97. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  98. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/device_monitor.py +0 -0
  99. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/health_check_service.py +0 -0
  100. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/install_service.sh +0 -0
  101. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  102. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  103. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  104. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/new_device_discovery.py +0 -0
  105. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/remove_service.sh +0 -0
  106. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/service_template.service +0 -0
  107. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk/__init__.py +0 -0
  108. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk/client.py +0 -0
  109. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  110. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk_stats_collector.py +0 -0
  111. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/storage_node_monitor.py +0 -0
  112. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  113. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  114. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  115. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  116. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  117. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/shell_utils.py +0 -0
  118. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/snode_client.py +0 -0
  119. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/test/test_utils.py +0 -0
  120. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  121. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/README.md +0 -0
  122. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/__init__.py +0 -0
  123. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/app.py +0 -0
  124. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/auth_middleware.py +0 -0
  125. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/__init__.py +0 -0
  126. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  127. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  128. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  129. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  130. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  131. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/snode_ops.py +0 -0
  132. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  133. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
  134. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  135. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  136. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  137. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_device.py +0 -0
  138. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  139. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  140. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  141. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  142. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  143. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/caching_node_app.py +0 -0
  144. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/caching_node_app_k8s.py +0 -0
  145. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/node_utils.py +0 -0
  146. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/node_utils_k8s.py +0 -0
  147. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/node_webapp.py +0 -0
  148. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/requirements.txt +0 -0
  149. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/snode_app.py +0 -0
  150. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/snode_app_k8s.py +0 -0
  151. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
  152. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/delete.py +0 -0
  153. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/deploy.py +0 -0
  154. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  155. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  156. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/is_up.py +0 -0
  157. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/list_deps.py +0 -0
  158. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/rpac.yaml +0 -0
  159. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/tst.py +0 -0
  160. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  161. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  162. {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 17.0.2
3
+ Version: 17.0.4
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -1,3 +1,3 @@
1
1
  [build-system]
2
2
  requires = ['setuptools>=42']
3
- build-backend = 'setuptools.build_meta'
3
+ build-backend = 'setuptools.build_meta'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 17.0.2
3
+ Version: 17.0.4
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -87,6 +87,7 @@ data_files.append(('', ["requirements.txt"]))
87
87
  setup(
88
88
  name=COMMAND_NAME,
89
89
  version=VERSION,
90
+ requires_python='>= 3.9',
90
91
  packages=find_packages(exclude=["e2e*"]),
91
92
  url='https://www.simplyblock.io/',
92
93
  author='Hamdy',
@@ -347,8 +347,6 @@ class CLIWrapper(CLIWrapperBase):
347
347
  argument = subcommand.add_argument('--log-del-interval', help='Logging retention period, default: 3d', type=str, default='3d', dest='log_del_interval', required=False)
348
348
  argument = subcommand.add_argument('--metrics-retention-period', help='Retention period for I/O statistics (Prometheus), default: 7d', type=str, default='7d', dest='metrics_retention_period', required=False)
349
349
  argument = subcommand.add_argument('--contact-point', help='Email or slack webhook url to be used for alerting', type=str, default='', dest='contact_point', required=False)
350
- if self.developer_mode:
351
- argument = subcommand.add_argument('--grafana-endpoint', help='Endpoint url for Grafana', type=str, default='', dest='grafana_endpoint', required=False)
352
350
  if self.developer_mode:
353
351
  argument = subcommand.add_argument('--distr-bs', help='(Dev) distrb bdev block size, default: 4096', type=int, default=4096, dest='distr_bs', required=False)
354
352
  argument = subcommand.add_argument('--chunk-size-in-bytes', help='(Dev) distrb bdev chunk block size, default: 4096', type=int, default=4096, dest='distr_chunk_bs', required=False)
@@ -405,25 +403,10 @@ class CLIWrapper(CLIWrapperBase):
405
403
  argument = subcommand.add_argument('--host-id', help='Primary storage node id or hostname', type=str, dest='host_id', required=False)
406
404
  if self.developer_mode:
407
405
  argument = subcommand.add_argument('--encrypt', help='Use inline data encryption and decryption on the logical volume', dest='encrypt', required=False, action='store_true')
408
- if self.developer_mode:
409
- argument = subcommand.add_argument('--crypto-key1', help='Hex value of key1 to be used for logical volume encryption', type=str, dest='crypto_key1', required=False)
410
- if self.developer_mode:
411
- argument = subcommand.add_argument('--crypto-key2', help='Hex value of key2 to be used for logical volume encryption', type=str, dest='crypto_key2', required=False)
412
- if self.developer_mode:
413
- argument = subcommand.add_argument('--max-rw-iops', help='Maximum Read Write IO Per Second', type=int, dest='max_rw_iops', required=False)
414
- if self.developer_mode:
415
- argument = subcommand.add_argument('--max-rw-mbytes', help='Maximum Read Write Megabytes Per Second', type=int, dest='max_rw_mbytes', required=False)
416
- if self.developer_mode:
417
- argument = subcommand.add_argument('--max-r-mbytes', help='Maximum Read Megabytes Per Second', type=int, dest='max_r_mbytes', required=False)
418
- if self.developer_mode:
419
- argument = subcommand.add_argument('--max-w-mbytes', help='Maximum Write Megabytes Per Second', type=int, dest='max_w_mbytes', required=False)
420
406
  if self.developer_mode:
421
407
  argument = subcommand.add_argument('--distr-vuid', help='(Dev) set vuid manually, default: random (1-99999)', type=int, dest='distr_vuid', required=False)
422
408
  if self.developer_mode:
423
409
  argument = subcommand.add_argument('--lvol-ha-type', help='Logical volume HA type (single, ha), default is cluster HA type', type=str, default='ha', dest='lvol_ha_type', required=False, choices=['single','default','ha',])
424
- argument = subcommand.add_argument('--lvol-priority-class', help='Logical volume priority class', type=int, default=0, dest='lvol_priority_class', required=False)
425
- if self.developer_mode:
426
- argument = subcommand.add_argument('--fstype', help='Filesystem type for testing (ext4, xfs)', type=str, default='xfs', dest='fstype', required=False, choices=['ext4','xfs',])
427
410
 
428
411
  def init_cluster__create(self, subparser):
429
412
  subcommand = self.add_sub_command(subparser, 'create', 'Creates a new cluster')
@@ -465,8 +448,8 @@ class CLIWrapper(CLIWrapperBase):
465
448
  argument = subcommand.add_argument('--cap-crit', help='Capacity critical level in percent, default: 99', type=int, default=99, dest='cap_crit', required=False)
466
449
  argument = subcommand.add_argument('--prov-cap-warn', help='Capacity warning level in percent, default: 250', type=int, default=250, dest='prov_cap_warn', required=False)
467
450
  argument = subcommand.add_argument('--prov-cap-crit', help='Capacity critical level in percent, default: 500', type=int, default=500, dest='prov_cap_crit', required=False)
468
- argument = subcommand.add_argument('--data-chunks-per-stripe', help='Erasure coding schema parameter k (distributed raid), default: 1', type=int, default=0, dest='distr_ndcs', required=False)
469
- argument = subcommand.add_argument('--parity-chunks-per-stripe', help='Erasure coding schema parameter n (distributed raid), default: 1', type=int, default=0, dest='distr_npcs', required=False)
451
+ argument = subcommand.add_argument('--data-chunks-per-stripe', help='Erasure coding schema parameter k (distributed raid), default: 1', type=int, default=1, dest='distr_ndcs', required=False)
452
+ argument = subcommand.add_argument('--parity-chunks-per-stripe', help='Erasure coding schema parameter n (distributed raid), default: 1', type=int, default=1, dest='distr_npcs', required=False)
470
453
  if self.developer_mode:
471
454
  argument = subcommand.add_argument('--distr-bs', help='(Dev) distrb bdev block size, default: 4096', type=int, default=4096, dest='distr_bs', required=False)
472
455
  if self.developer_mode:
@@ -1018,7 +1001,6 @@ class CLIWrapper(CLIWrapperBase):
1018
1001
  args.blk_size = 512
1019
1002
  args.page_size = 2097152
1020
1003
  args.CLI_PASS = None
1021
- args.grafana_endpoint = ''
1022
1004
  args.distr_bs = 4096
1023
1005
  args.max_queue_size = 128
1024
1006
  args.inflight_io_threshold = 4
@@ -1039,16 +1021,9 @@ class CLIWrapper(CLIWrapperBase):
1039
1021
  args.pool_max = '25G'
1040
1022
  args.snapshot = False
1041
1023
  args.max_size = '1000G'
1042
- args.encrypt = False
1043
- args.crypto_key1 = None
1044
- args.crypto_key2 = None
1045
- args.max_rw_iops = None
1046
- args.max_rw_mbytes = None
1047
- args.max_r_mbytes = None
1048
- args.max_w_mbytes = None
1024
+ args.encrypt = None
1049
1025
  args.distr_vuid = None
1050
1026
  args.lvol_ha_type = 'ha'
1051
- args.fstype = 'xfs'
1052
1027
  ret = self.cluster__deploy(sub_command, args)
1053
1028
  elif sub_command in ['create']:
1054
1029
  if not self.developer_mode:
@@ -648,7 +648,27 @@ class CLIWrapperBase:
648
648
 
649
649
 
650
650
  def cluster_deploy(self,args):
651
-
651
+ grafana_endpoint = ""
652
+ secondary_nodes = False
653
+ namespace = None
654
+ lvol_name = "lvol01"
655
+ lvol_size = self.parse_size("10G")
656
+ pool_max = self.parse_size("25G")
657
+ max_size = self.parse_size("1000G")
658
+ pool_name = "pool01"
659
+ with_snapshot = False
660
+ host_id = None
661
+ crypto = False
662
+ crypto_key1 = None
663
+ crypto_key2 = None
664
+ max_rw_iops = None
665
+ max_rw_mbytes = None
666
+ max_r_mbytes = None
667
+ max_w_mbytes = None
668
+ lvol_priority_class = 0
669
+ id_device_by_nqn = False
670
+ fstype = "xfs"
671
+
652
672
  storage_nodes = args.storage_nodes
653
673
  test = args.test
654
674
  ha_type = args.ha_type
@@ -669,7 +689,6 @@ class CLIWrapperBase:
669
689
  log_del_interval = args.log_del_interval
670
690
  metrics_retention_period = args.metrics_retention_period
671
691
  contact_point = args.contact_point
672
- grafana_endpoint = args.grafana_endpoint
673
692
  enable_node_affinity = args.enable_node_affinity
674
693
  qpair_count = args.qpair_count
675
694
  max_queue_size = args.max_queue_size
@@ -712,17 +731,7 @@ class CLIWrapperBase:
712
731
  pool_max = utils.parse_size(args.pool_max)
713
732
  host_id = args.host_id
714
733
  comp = None
715
- crypto = args.encrypt
716
734
  distr_vuid = args.distr_vuid
717
- with_snapshot = args.snapshot
718
- lvol_priority_class = args.lvol_priority_class
719
- max_rw_iops = args.max_rw_iops
720
- max_rw_mbytes = args.max_rw_mbytes
721
- max_r_mbytes = args.max_r_mbytes
722
- max_w_mbytes = args.max_w_mbytes
723
- crypto_key1 = args.crypto_key1
724
- crypto_key2 = args.crypto_key2
725
- fstype = args.fstype
726
735
 
727
736
  return cluster_ops.deploy_cluster(
728
737
  storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,ifname,
@@ -732,8 +741,8 @@ class CLIWrapperBase:
732
741
  qpair_count, max_queue_size, inflight_io_threshold, strict_node_anti_affinity,data_nics,
733
742
  spdk_image,spdk_debug,small_bufsize,large_bufsize,num_partitions_per_dev,jm_percent,spdk_cpu_mask,max_lvol,
734
743
  max_snap,max_prov,number_of_devices,enable_test_device,enable_ha_jm,ha_jm_count,number_of_distribs,namespace,secondary_nodes,partition_size,
735
- lvol_name, lvol_size, lvol_ha_type, pool_name, pool_max, host_id, comp, crypto, distr_vuid, max_rw_iops, max_rw_mbytes, max_r_mbytes, max_w_mbytes,
736
- with_snapshot, max_size, crypto_key1, crypto_key2, lvol_priority_class, fstype)
744
+ lvol_name, lvol_size, lvol_ha_type, pool_name, pool_max, host_id, comp, crypto, distr_vuid, max_rw_iops, max_rw_mbytes, max_r_mbytes, max_w_mbytes,
745
+ with_snapshot, max_size, crypto_key1, crypto_key2, lvol_priority_class, id_device_by_nqn, fstype)
737
746
 
738
747
  def cluster_create(self, args):
739
748
  page_size_in_blocks = args.page_size
@@ -203,8 +203,8 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
203
203
  if prov_cap_crit and prov_cap_crit > 0:
204
204
  c.prov_cap_crit = prov_cap_crit
205
205
  if distr_ndcs == 0 and distr_npcs == 0:
206
- c.distr_ndcs = 1
207
- c.distr_npcs = 1
206
+ logger.error("both distr_ndcs and distr_npcs cannot be 0")
207
+ return False
208
208
  else:
209
209
  c.distr_ndcs = distr_ndcs
210
210
  c.distr_npcs = distr_npcs
@@ -380,7 +380,7 @@ def deploy_cluster(storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,i
380
380
  ha_jm_count, number_of_distribs,namespace,secondary_nodes,partition_size,
381
381
  lvol_name, lvol_size, lvol_ha_type, pool_name, pool_max, host_id, comp, crypto, distr_vuid, max_rw_iops,
382
382
  max_rw_mbytes, max_r_mbytes, max_w_mbytes, with_snapshot, max_size, crypto_key1, crypto_key2,
383
- lvol_priority_class, fstype):
383
+ lvol_priority_class, id_device_by_nqn, fstype):
384
384
  logger.info("run deploy-cleaner")
385
385
 
386
386
  storage_node_ops.deploy_cleaner()
@@ -401,7 +401,7 @@ def deploy_cluster(storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,i
401
401
  dev_ip=f"{node_ip}:5000"
402
402
  add_node_status=storage_node_ops.add_node(cluster_uuid,dev_ip,ifname,data_nics,max_lvol,max_snap,max_prov,spdk_image,spdk_debug,
403
403
  small_bufsize,large_bufsize,spdk_cpu_mask,num_partitions_per_dev,jm_percent,number_of_devices,
404
- enable_test_device,namespace,number_of_distribs,enable_ha_jm,False,False,partition_size,ha_jm_count)
404
+ enable_test_device,namespace,number_of_distribs,enable_ha_jm,False,id_device_by_nqn,partition_size,ha_jm_count)
405
405
 
406
406
 
407
407
  if not add_node_status:
@@ -417,7 +417,7 @@ def deploy_cluster(storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,i
417
417
  dev_ip=f"{node_ip}:5000"
418
418
  add_node_status=storage_node_ops.add_node(cluster_uuid,dev_ip,ifname,data_nics,max_lvol,max_snap,max_prov,spdk_image,spdk_debug,
419
419
  small_bufsize,large_bufsize,spdk_cpu_mask,num_partitions_per_dev,jm_percent,number_of_devices,
420
- enable_test_device,namespace,number_of_distribs,enable_ha_jm,True,False,partition_size,ha_jm_count)
420
+ enable_test_device,namespace,number_of_distribs,enable_ha_jm,True,id_device_by_nqn,partition_size,ha_jm_count)
421
421
 
422
422
  if not add_node_status:
423
423
  logger.error("Could not add storage node successfully")
@@ -537,11 +537,11 @@ def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn
537
537
  _create_update_user(cluster.uuid, cluster.grafana_endpoint, cluster.grafana_secret, cluster.secret)
538
538
 
539
539
  if distr_ndcs == 0 and distr_npcs == 0:
540
- cluster.distr_ndcs = 2
541
- cluster.distr_npcs = 1
542
- else:
543
- cluster.distr_ndcs = distr_ndcs
544
- cluster.distr_npcs = distr_npcs
540
+ logger.error("both distr_ndcs and distr_npcs cannot be 0")
541
+ return False
542
+
543
+ cluster.distr_ndcs = distr_ndcs
544
+ cluster.distr_npcs = distr_npcs
545
545
  cluster.distr_bs = distr_bs
546
546
  cluster.distr_chunk_bs = distr_chunk_bs
547
547
  cluster.ha_type = ha_type
@@ -1,5 +1,5 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
2
- SIMPLY_BLOCK_VERSION=17.0.2
2
+ SIMPLY_BLOCK_VERSION=17.0.4
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
@@ -41,12 +41,12 @@ class CachingNode(BaseNodeObject):
41
41
  multipathing: bool = True
42
42
  node_lvs: str = "lvs"
43
43
  nvme_devices: List[NVMeDevice] = []
44
- partitions_count: int = 0
44
+ partitions_count: int = 0 # Unused
45
45
  remote_devices: List[NVMeDevice] = []
46
46
  rpc_password: str = ""
47
47
  rpc_port: int = -1
48
48
  rpc_username: str = ""
49
- sequential_number: int = 0
49
+ sequential_number: int = 0 # Unused
50
50
  services: List[str] = []
51
51
  subsystem: str = ""
52
52
  system_uuid: str = ""
@@ -46,19 +46,19 @@ class NVMeDevice(BaseModel):
46
46
  nvmf_ip: str = ""
47
47
  nvmf_nqn: str = ""
48
48
  nvmf_port: int = 0
49
- overload_percentage: int = 0
50
- partition_jm_bdev: str = ""
51
- partition_jm_size: int = 0
52
- partition_main_bdev: str = ""
53
- partition_main_size: int = 0
54
- partitions_count: int = 0
49
+ overload_percentage: int = 0 # Unused
50
+ partition_jm_bdev: str = "" # Unused
51
+ partition_jm_size: int = 0 # Unused
52
+ partition_main_bdev: str = "" # Unused
53
+ partition_main_size: int = 0 # Unused
54
+ partitions_count: int = 0 # Unused
55
55
  pcie_address: str = ""
56
56
  physical_label: int = 0
57
57
  pt_bdev: str = ""
58
58
  qos_bdev: str = ""
59
59
  remote_bdev: str = ""
60
60
  retries_exhausted: bool = False
61
- sequential_number: int = 0
61
+ sequential_number: int = 0 # Unused
62
62
  serial_number: str = ""
63
63
  size: int = -1
64
64
  testing_bdev: str = ""
@@ -70,4 +70,3 @@ class JMDevice(NVMeDevice):
70
70
  jm_bdev: str = ""
71
71
  jm_nvme_bdev_list: List[str] = []
72
72
  raid_bdev: str = ""
73
-
@@ -66,7 +66,7 @@ class StorageNode(BaseNodeObject):
66
66
  number_of_distribs: int = 4
67
67
  nvme_devices: List[NVMeDevice] = []
68
68
  online_since: str = ""
69
- partitions_count: int = 0
69
+ partitions_count: int = 0 # Unused
70
70
  poller_cpu_cores: List[int] = []
71
71
  ssd_pcie: List = []
72
72
  pollers_mask: str = ""
@@ -78,7 +78,7 @@ class StorageNode(BaseNodeObject):
78
78
  rpc_port: int = -1
79
79
  rpc_username: str = ""
80
80
  secondary_node_id: str = ""
81
- sequential_number: int = 0
81
+ sequential_number: int = 0 # Unused
82
82
  jm_ids: List[str] = []
83
83
  spdk_cpu_mask: str = ""
84
84
  spdk_debug: bool = False
@@ -792,13 +792,6 @@ class RPCClient:
792
792
  params = {"name": name, "vuid": vuid}
793
793
  return self._request("bdev_jm_unmap_vuid", params)
794
794
 
795
- def sock_impl_set_options(self):
796
- method = "sock_impl_set_options"
797
- params = {"impl_name": "posix", "enable_quickack": True,
798
- "enable_zerocopy_send_server": True,
799
- "enable_zerocopy_send_client": True}
800
- return self._request(method, params)
801
-
802
795
  def nvmf_set_config(self, poll_groups_mask):
803
796
  params = {"poll_groups_mask": poll_groups_mask}
804
797
  return self._request("nvmf_set_config", params)
@@ -99,6 +99,9 @@ while True:
99
99
  logger.debug(f"Skipping LVol health check because of io_error {lvol.get_id()}")
100
100
  continue
101
101
 
102
+ if lvol.status == LVol.STATUS_IN_CREATION:
103
+ continue
104
+
102
105
  if lvol.status == lvol.STATUS_IN_DELETION:
103
106
  ret = rpc_client.bdev_lvol_get_lvol_delete_status(f"{lvol.lvs_name}/{lvol.lvol_bdev}")
104
107
  if ret == 0: # delete complete
@@ -119,13 +122,10 @@ while True:
119
122
  continue
120
123
 
121
124
  passed = True
122
-
123
- if lvol.ha_type == 'single':
124
- ret = health_controller.check_lvol_on_node(
125
- lvol.get_id(), lvol.node_id, node_bdev_names, node_lvols_nqns)
126
- if not ret:
127
- passed = False
128
-
125
+ ret = health_controller.check_lvol_on_node(
126
+ lvol.get_id(), lvol.node_id, node_bdev_names, node_lvols_nqns)
127
+ if not ret:
128
+ passed = False
129
129
 
130
130
  if lvol.ha_type == "ha":
131
131
  sec_node = db_controller.get_storage_node_by_id(snode.secondary_node_id)
@@ -30,59 +30,6 @@ from simplyblock_core.snode_client import SNodeClient
30
30
  logger = utils.get_logger(__name__)
31
31
 
32
32
 
33
- class StorageOpsException(Exception):
34
- def __init__(self, message):
35
- self.message = message
36
-
37
-
38
- def _get_data_nics(data_nics):
39
- if not data_nics:
40
- return
41
- out, _, _ = shell_utils.run_command("ip -j address show")
42
- data = json.loads(out)
43
- logger.debug("ifaces")
44
- logger.debug(pprint.pformat(data))
45
-
46
- def _get_ip4_address(list_of_addr):
47
- if list_of_addr:
48
- for data in list_of_addr:
49
- if data['family'] == 'inet':
50
- return data['local']
51
- return ""
52
-
53
- devices = {i["ifname"]: i for i in data}
54
- iface_list = []
55
- for nic in data_nics:
56
- if nic not in devices:
57
- continue
58
- device = devices[nic]
59
- iface = IFace({
60
- 'uuid': str(uuid.uuid4()),
61
- 'if_name': device['ifname'],
62
- 'ip4_address': _get_ip4_address(device['addr_info']),
63
- 'port_number': 1, # TODO: check this value
64
- 'status': device['operstate'],
65
- 'net_type': device['link_type']})
66
- iface_list.append(iface)
67
-
68
- return iface_list
69
-
70
-
71
- def _get_if_ip_address(ifname):
72
- out, _, _ = shell_utils.run_command("ip -j address show %s" % ifname)
73
- data = json.loads(out)
74
- logger.debug(pprint.pformat(data))
75
- if data:
76
- data = data[0]
77
- if 'addr_info' in data and data['addr_info']:
78
- address_info = data['addr_info']
79
- for adr in address_info:
80
- if adr['family'] == 'inet':
81
- return adr['local']
82
- logger.error("IP not found for interface %s", ifname)
83
- exit(1)
84
-
85
-
86
33
  def addNvmeDevices(snode, devs):
87
34
  rpc_client = RPCClient(
88
35
  snode.mgmt_ip, snode.rpc_port,
@@ -149,70 +96,6 @@ def addNvmeDevices(snode, devs):
149
96
  return devices
150
97
 
151
98
 
152
- def _get_nvme_list(cluster):
153
- out, err, _ = shell_utils.run_command("sudo nvme list -v -o json")
154
- data = json.loads(out)
155
- logger.debug("nvme list:")
156
- logger.debug(pprint.pformat(data))
157
-
158
- def _get_pcie_controller(ctrl_list):
159
- if ctrl_list:
160
- for item in ctrl_list:
161
- if 'Transport' in item and item['Transport'] == 'pcie':
162
- return item
163
-
164
- def _get_size_from_namespaces(namespaces):
165
- size = 0
166
- if namespaces:
167
- for ns in namespaces:
168
- size += ns['PhysicalSize']
169
- return size
170
-
171
- sequential_number = 0
172
- devices = []
173
- if data and 'Devices' in data:
174
- for dev in data['Devices'][0]['Subsystems']:
175
- controller = _get_pcie_controller(dev['Controllers'])
176
- if not controller:
177
- continue
178
-
179
- if controller['ModelNumber'] not in cluster.model_ids:
180
- logger.info("Device model ID is not recognized: %s, skipping device: %s",
181
- controller['ModelNumber'], controller['Controller'])
182
- continue
183
-
184
- size = _get_size_from_namespaces(controller['Namespaces'])
185
- device_partitions_count = int(size / (cluster.blk_size * cluster.page_size_in_blocks))
186
- devices.append(
187
- NVMeDevice({
188
- 'device_name': controller['Controller'],
189
- 'sequential_number': sequential_number,
190
- 'partitions_count': device_partitions_count,
191
- 'capacity': size,
192
- 'size': size,
193
- 'pcie_address': controller['Address'],
194
- 'model_id': controller['ModelNumber'],
195
- 'serial_number': controller['SerialNumber'],
196
- # 'status': controller['State']
197
- }))
198
- sequential_number += device_partitions_count
199
- return devices
200
-
201
-
202
- def _run_nvme_smart_log(dev_name):
203
- out, _, _ = shell_utils.run_command("sudo nvme smart-log /dev/%s -o json" % dev_name)
204
- data = json.loads(out)
205
- logger.debug(out)
206
- return data
207
-
208
-
209
- def _run_nvme_smart_log_add(dev_name):
210
- out, _, _ = shell_utils.run_command("sudo nvme intel smart-log-add /dev/%s --json" % dev_name)
211
- data = json.loads(out)
212
- logger.debug(out)
213
- return data
214
-
215
-
216
99
  def get_next_cluster_device_order(db_controller, cluster_id):
217
100
  max_order = 0
218
101
  found = False
@@ -333,40 +333,6 @@ def get_random_vuid():
333
333
  return r
334
334
 
335
335
 
336
- def calculate_core_allocation(cpu_count):
337
- '''
338
- If number of cpu cores >= 8, tune cpu core mask
339
- 1. Never use core 0 for spdk.
340
- 2. Core 1 is for app_thread
341
- 3. Core 2 for Journal manager
342
- 4. Poller cpu cores are 30% of Available cores
343
- 5. Alceml cpu cores are 30% of Available cores
344
- 6. Distribs cpu cores are 40% of Available cores
345
- JIRA ticket link/s
346
- https://simplyblock.atlassian.net/browse/SFAM-885
347
- '''
348
-
349
- if cpu_count > 64:
350
- cpu_count = 64
351
-
352
- all_cores = list(range(0, cpu_count))
353
- app_thread_core = all_cores[1:2]
354
- jm_cpu_core = all_cores[2:3]
355
-
356
- # Calculate available cores
357
- available_cores_count = cpu_count - 3
358
-
359
- # Calculate cpus counts
360
- poller_cpus_count = int(available_cores_count * 0.3)
361
- alceml_cpus_cout = int(available_cores_count * 0.3)
362
-
363
- # Calculate cpus cores
364
- poller_cpu_cores = all_cores[3:poller_cpus_count+3]
365
- alceml_cpu_cores = all_cores[3+poller_cpus_count:poller_cpus_count+alceml_cpus_cout+3]
366
- distrib_cpu_cores = all_cores[3+poller_cpus_count+alceml_cpus_cout:]
367
-
368
- return app_thread_core, jm_cpu_core, poller_cpu_cores, alceml_cpu_cores, distrib_cpu_cores
369
-
370
336
  def hexa_to_cpu_list(cpu_mask):
371
337
  # Convert the hex string to an integer
372
338
  mask_int = int(cpu_mask, 16)