sbcli-dev 10.1.78__tar.gz → 10.1.80__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 (154) hide show
  1. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/PKG-INFO +9 -2
  2. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/sbcli_dev.egg-info/PKG-INFO +9 -2
  3. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_cli/cli.py +2 -2
  4. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/constants.py +5 -4
  5. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/lvol_controller.py +1 -1
  6. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/env_var +1 -1
  7. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/rpc_client.py +12 -9
  8. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/tasks_runner_failed_migration.py +4 -1
  9. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/tasks_runner_migration.py +4 -1
  10. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/tasks_runner_new_dev_migration.py +4 -1
  11. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/storage_node_ops.py +11 -7
  12. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/app.py +3 -1
  13. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/caching_node_ops.py +1 -1
  14. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/caching_node_ops_k8s.py +1 -1
  15. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/node_api_basic.py +1 -1
  16. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/node_api_caching_docker.py +1 -1
  17. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/node_api_caching_ks.py +1 -1
  18. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/snode_ops.py +1 -1
  19. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/snode_ops_k8s.py +1 -1
  20. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_caching_node.py +1 -1
  21. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_cluster.py +19 -9
  22. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_deployer.py +1 -1
  23. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_device.py +1 -1
  24. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_lvol.py +10 -2
  25. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_mgmt_node.py +1 -1
  26. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_pool.py +1 -1
  27. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_snapshot.py +1 -1
  28. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/web_api_storage_node.py +1 -1
  29. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/caching_node_app.py +1 -1
  30. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/caching_node_app_k8s.py +1 -1
  31. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/node_webapp.py +1 -1
  32. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/snode_app.py +1 -1
  33. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/snode_app_k8s.py +1 -1
  34. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/README.md +0 -0
  35. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/pyproject.toml +0 -0
  36. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/requirements.txt +0 -0
  37. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  38. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  39. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/sbcli_dev.egg-info/entry_points.txt +0 -0
  40. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/sbcli_dev.egg-info/requires.txt +0 -0
  41. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/sbcli_dev.egg-info/top_level.txt +0 -0
  42. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/setup.cfg +0 -0
  43. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/setup.py +0 -0
  44. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_cli/__init__.py +0 -0
  45. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_cli/main.py +0 -0
  46. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/__init__.py +0 -0
  47. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/cluster_ops.py +0 -0
  48. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/cnode_client.py +0 -0
  49. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/__init__.py +0 -0
  50. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  51. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/cluster_events.py +0 -0
  52. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/device_controller.py +0 -0
  53. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/device_events.py +0 -0
  54. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/events_controller.py +0 -0
  55. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/health_controller.py +0 -0
  56. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/lvol_events.py +0 -0
  57. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/mgmt_events.py +0 -0
  58. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/pool_controller.py +0 -0
  59. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/pool_events.py +0 -0
  60. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  61. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/snapshot_events.py +0 -0
  62. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/storage_events.py +0 -0
  63. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/tasks_controller.py +0 -0
  64. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/controllers/tasks_events.py +0 -0
  65. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/db_controller.py +0 -0
  66. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/distr_controller.py +0 -0
  67. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/mgmt_node_ops.py +0 -0
  68. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/__init__.py +0 -0
  69. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/base_model.py +0 -0
  70. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/caching_node.py +0 -0
  71. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/cluster.py +0 -0
  72. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/deployer.py +0 -0
  73. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/events.py +0 -0
  74. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/iface.py +0 -0
  75. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/job_schedule.py +0 -0
  76. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/lvol_model.py +0 -0
  77. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/mgmt_node.py +0 -0
  78. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/nvme_device.py +0 -0
  79. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/pool.py +0 -0
  80. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/port_stat.py +0 -0
  81. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/snapshot.py +0 -0
  82. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/stats.py +0 -0
  83. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/models/storage_node.py +0 -0
  84. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/pci_utils.py +0 -0
  85. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/__init__.py +0 -0
  86. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  87. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  88. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  89. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/config_docker.sh +0 -0
  90. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboard.yml +0 -0
  91. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  92. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  93. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  94. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  95. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  96. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  97. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/datasource.yml +0 -0
  98. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/db_config_double.sh +0 -0
  99. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/db_config_single.sh +0 -0
  100. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  101. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  102. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  103. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  104. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/foundation.yml +0 -0
  105. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/haproxy.cfg +0 -0
  106. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/install_deps.sh +0 -0
  107. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/objstore.yml +0 -0
  108. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  109. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/prometheus.yml +0 -0
  110. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/run_ssh.sh +0 -0
  111. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/set_db_config.sh +0 -0
  112. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  113. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/__init__.py +0 -0
  114. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  115. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/caching_node_monitor.py +0 -0
  116. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/cap_monitor.py +0 -0
  117. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  118. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/device_monitor.py +0 -0
  119. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/health_check_service.py +0 -0
  120. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/install_service.sh +0 -0
  121. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/log_agg_service.py +0 -0
  122. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/lvol_monitor.py +0 -0
  123. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  124. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  125. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  126. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/new_device_discovery.py +0 -0
  127. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/port_stat_collector.py +0 -0
  128. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/remove_service.sh +0 -0
  129. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/service_template.service +0 -0
  130. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  131. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/storage_node_monitor.py +0 -0
  132. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  133. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  134. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/shell_utils.py +0 -0
  135. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/snode_client.py +0 -0
  136. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/utils.py +0 -0
  137. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  138. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/README.md +0 -0
  139. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/__init__.py +0 -0
  140. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/auth_middleware.py +0 -0
  141. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/blueprints/__init__.py +0 -0
  142. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/node_utils.py +0 -0
  143. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/requirements.txt +0 -0
  144. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/delete.py +0 -0
  145. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/deploy.py +0 -0
  146. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  147. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  148. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/is_up.py +0 -0
  149. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/list_deps.py +0 -0
  150. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/rpac.yaml +0 -0
  151. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/static/tst.py +0 -0
  152. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  153. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  154. {sbcli_dev-10.1.78 → sbcli_dev-10.1.80}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: sbcli-dev
3
- Version: 10.1.78
3
+ Version: 10.1.80
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -24,6 +24,13 @@ Requires-Dist: graypy==2.1.0
24
24
  Requires-Dist: boto3
25
25
  Requires-Dist: jinja2
26
26
  Requires-Dist: argcomplete
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: description
30
+ Dynamic: description-content-type
31
+ Dynamic: home-page
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
27
34
 
28
35
 
29
36
  # Simply Block
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: sbcli-dev
3
- Version: 10.1.78
3
+ Version: 10.1.80
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -24,6 +24,13 @@ Requires-Dist: graypy==2.1.0
24
24
  Requires-Dist: boto3
25
25
  Requires-Dist: jinja2
26
26
  Requires-Dist: argcomplete
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: description
30
+ Dynamic: description-content-type
31
+ Dynamic: home-page
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
27
34
 
28
35
 
29
36
  # Simply Block
@@ -300,7 +300,7 @@ class CLIWrapper:
300
300
  default=0, choices=range(128))
301
301
  sub_command.add_argument("--max-queue-size", help='The max size the queue will grow', type=int, default=128)
302
302
  sub_command.add_argument("--inflight-io-threshold", help='The number of inflight IOs allowed before the IO queuing starts', type=int, default=4)
303
- sub_command.add_argument("--enable-qos", help='Enable qos bdev for storage nodes', action='store_true', dest='enable_qos')
303
+ sub_command.add_argument("--disable-qos", help='Disable qos bdev for storage nodes', action='store_false', dest='enable_qos')
304
304
  sub_command.add_argument("--strict-node-anti-affinity", help='Enable strict node anti affinity for storage nodes', action='store_true')
305
305
 
306
306
 
@@ -456,7 +456,7 @@ class CLIWrapper:
456
456
  default=0)
457
457
  sub_command.add_argument("--ha-type", help='LVol HA type (single, ha), default is cluster HA type',
458
458
  dest='ha_type', choices=["single", "ha", "default"], default='default')
459
- sub_command.add_argument("--lvol-priority-class", help='Lvol priority class', type=int, choices=[0, 1], default=0)
459
+ sub_command.add_argument("--lvol-priority-class", help='Lvol priority class', type=int, default=0)
460
460
 
461
461
 
462
462
  # set lvol params
@@ -18,8 +18,9 @@ KVD_DB_FILE_PATH = '/etc/foundationdb/fdb.cluster'
18
18
  KVD_DB_TIMEOUT_MS = 10000
19
19
  SPK_DIR = '/home/ec2-user/spdk'
20
20
  RPC_HTTP_PROXY_PORT = 8080
21
- LOG_LEVEL = logging.DEBUG
22
- LOG_WEB_DEBUG = True
21
+ LOG_LEVEL = logging.INFO
22
+ LOG_WEB_LEVEL = logging.ERROR
23
+ LOG_WEB_DEBUG = True if LOG_WEB_LEVEL == logging.DEBUG else False
23
24
 
24
25
  INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
25
26
 
@@ -29,7 +30,7 @@ STAT_COLLECTOR_INTERVAL_SEC = 60*5 # 5 minutes
29
30
  LVOL_STAT_COLLECTOR_INTERVAL_SEC = 5
30
31
  LVOL_MONITOR_INTERVAL_SEC = 120
31
32
  DEV_MONITOR_INTERVAL_SEC = 10
32
- DEV_STAT_COLLECTOR_INTERVAL_SEC = 2
33
+ DEV_STAT_COLLECTOR_INTERVAL_SEC = 5
33
34
  PROT_STAT_COLLECTOR_INTERVAL_SEC = 2
34
35
  DISTR_EVENT_COLLECTOR_INTERVAL_SEC = 2
35
36
  DISTR_EVENT_COLLECTOR_NUM_OF_EVENTS = 10
@@ -74,7 +75,7 @@ TASK_EXEC_INTERVAL_SEC = 10
74
75
  TASK_EXEC_RETRY_COUNT = 8
75
76
 
76
77
 
77
- SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:lvolstore-ha-snapshot-latest"
78
+ SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:qos_bdev_1-latest"
78
79
 
79
80
  GELF_PORT = 12202
80
81
 
@@ -451,7 +451,7 @@ def add_lvol_ha(name, size, host_id_or_name, ha_type, pool_id_or_name, use_comp,
451
451
  }
452
452
 
453
453
  if lvol.lvol_priority_class:
454
- lvol_dict["lvol_priority_class"] = lvol.lvol_priority_class
454
+ lvol_dict["params"]["lvol_priority_class"] = lvol.lvol_priority_class
455
455
  lvol.bdev_stack = [lvol_dict]
456
456
 
457
457
  if use_crypto:
@@ -1,5 +1,5 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
2
- SIMPLY_BLOCK_VERSION=10.1.78
2
+ SIMPLY_BLOCK_VERSION=10.1.80
3
3
 
4
4
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main
5
5
  DOCKER_USER=hamdysimplyblock
@@ -370,14 +370,14 @@ class RPCClient:
370
370
  params = {"name": name}
371
371
  return self._request2("ultra21_bdev_pass_delete", params)
372
372
 
373
- def qos_vbdev_create(self, qos_bdev, base_bdev_name, base_nvme_hw_name, max_queue_size,
374
- inflight_io_threshold):
373
+ def qos_vbdev_create(self, qos_bdev, base_bdev_name, inflight_io_threshold):
375
374
  params = {
376
375
  "base_bdev_name": base_bdev_name,
377
376
  "name": qos_bdev,
378
- "base_nvme_hw_name": base_nvme_hw_name,
379
- "max_queue_size": max_queue_size,
380
- "inflight_io_threshold": inflight_io_threshold
377
+ "max_num_queues": 2,
378
+ "standard_queue_weight": 3,
379
+ "low_priority_3_queue_weight": 1,
380
+ "inflight_io_threshold": inflight_io_threshold or 12
381
381
  }
382
382
 
383
383
  return self._request("qos_vbdev_create", params)
@@ -795,10 +795,11 @@ class RPCClient:
795
795
  params = {"id": app_thread_process_id, "cpumask": app_thread_mask}
796
796
  return self._request("thread_set_cpumask", params)
797
797
 
798
- def distr_migration_to_primary_start(self, storage_ID, name):
798
+ def distr_migration_to_primary_start(self, storage_ID, name, qos_high_priority=False):
799
799
  params = {
800
800
  "name": name,
801
801
  "storage_ID": storage_ID,
802
+ "qos_high_priority": qos_high_priority,
802
803
  }
803
804
  return self._request("distr_migration_to_primary_start", params)
804
805
 
@@ -806,16 +807,18 @@ class RPCClient:
806
807
  params = {"name": name}
807
808
  return self._request("distr_migration_status", params)
808
809
 
809
- def distr_migration_failure_start(self, name, storage_ID):
810
+ def distr_migration_failure_start(self, name, storage_ID, qos_high_priority=False):
810
811
  params = {
811
812
  "name": name,
812
- "storage_ID": storage_ID
813
+ "storage_ID": storage_ID,
814
+ "qos_high_priority": qos_high_priority,
813
815
  }
814
816
  return self._request("distr_migration_failure_start", params)
815
817
 
816
- def distr_migration_expansion_start(self, name):
818
+ def distr_migration_expansion_start(self, name, qos_high_priority=False):
817
819
  params = {
818
820
  "name": name,
821
+ "qos_high_priority": qos_high_priority,
819
822
  }
820
823
  return self._request("distr_migration_expansion_start", params)
821
824
 
@@ -67,7 +67,10 @@ def task_runner(task):
67
67
  return True
68
68
 
69
69
 
70
- rsp = rpc_client.distr_migration_failure_start(distr_name, device.cluster_device_order)
70
+ qos_high_priority = False
71
+ if db_controller.get_cluster_by_id(snode.cluster_id).enable_qos:
72
+ qos_high_priority = True
73
+ rsp = rpc_client.distr_migration_failure_start(distr_name, device.cluster_device_order, qos_high_priority)
71
74
  if not rsp:
72
75
  logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
73
76
  task.function_result = "Failed to start device migration task"
@@ -78,7 +78,10 @@ def task_runner(task):
78
78
  task.write_to_db(db_controller.kv_store)
79
79
  return True
80
80
 
81
- rsp = rpc_client.distr_migration_to_primary_start(device.cluster_device_order, distr_name)
81
+ qos_high_priority = False
82
+ if db_controller.get_cluster_by_id(snode.cluster_id).enable_qos:
83
+ qos_high_priority = True
84
+ rsp = rpc_client.distr_migration_to_primary_start(device.cluster_device_order, distr_name, qos_high_priority)
82
85
  if not rsp:
83
86
  logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
84
87
  task.function_result = "Failed to start device migration task"
@@ -80,7 +80,10 @@ def task_runner(task):
80
80
  task.write_to_db(db_controller.kv_store)
81
81
  return True
82
82
 
83
- rsp = rpc_client.distr_migration_expansion_start(distr_name)
83
+ qos_high_priority = False
84
+ if db_controller.get_cluster_by_id(snode.cluster_id).enable_qos:
85
+ qos_high_priority = True
86
+ rsp = rpc_client.distr_migration_expansion_start(distr_name, qos_high_priority)
84
87
  if not rsp:
85
88
  logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
86
89
  task.function_result = "Failed to start device migration task"
@@ -472,7 +472,7 @@ def _create_storage_device_stack(rpc_client, nvme, snode, after_restart):
472
472
  max_queue_size = cluster.max_queue_size
473
473
  inflight_io_threshold = cluster.inflight_io_threshold
474
474
  qos_bdev = f"{alceml_name}_qos"
475
- ret = rpc_client.qos_vbdev_create(qos_bdev, alceml_name, nvme.nvme_controller, max_queue_size, inflight_io_threshold)
475
+ ret = rpc_client.qos_vbdev_create(qos_bdev, alceml_name, inflight_io_threshold)
476
476
  if not ret:
477
477
  logger.error(f"Failed to create qos bdev: {qos_bdev}")
478
478
  return False
@@ -1892,6 +1892,9 @@ def restart_storage_node(
1892
1892
  snode.health_check = True
1893
1893
  snode.write_to_db(db_controller.kv_store)
1894
1894
 
1895
+ logger.info("Setting node status to Online")
1896
+ set_node_status(node_id, StorageNode.STATUS_ONLINE)
1897
+
1895
1898
  if cluster.status in [Cluster.STATUS_ACTIVE, Cluster.STATUS_DEGRADED]:
1896
1899
  if snode.lvstore_stack or snode.is_secondary_node:
1897
1900
  ret = recreate_lvstore(snode)
@@ -1899,14 +1902,9 @@ def restart_storage_node(
1899
1902
  logger.error("Failed to recreate lvstore")
1900
1903
  return False
1901
1904
 
1902
- logger.info("Setting node status to Online")
1903
- set_node_status(node_id, StorageNode.STATUS_ONLINE)
1904
-
1905
-
1906
1905
  if snode.jm_device and snode.jm_device.status in [JMDevice.STATUS_UNAVAILABLE, JMDevice.STATUS_ONLINE]:
1907
1906
  device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
1908
1907
 
1909
-
1910
1908
  logger.info(f"Sending device status event")
1911
1909
  for dev in snode.nvme_devices:
1912
1910
  distr_controller.send_dev_status_event(dev, dev.status)
@@ -2069,7 +2067,7 @@ def shutdown_storage_node(node_id, force=False):
2069
2067
  if force is False:
2070
2068
  return False
2071
2069
 
2072
- task_id = tasks_controller.get_active_node_mig_task(snode.cluster_id, snode.get_id())
2070
+ task_id = tasks_controller.get_active_node_task(snode.cluster_id, snode.get_id())
2073
2071
  if task_id:
2074
2072
  logger.error(f"Migration task found: {task_id}, can not shutdown storage node")
2075
2073
  if force is False:
@@ -2130,6 +2128,12 @@ def suspend_storage_node(node_id, force=False):
2130
2128
  if force is False:
2131
2129
  return False
2132
2130
 
2131
+ task_id = tasks_controller.get_active_node_task(snode.cluster_id, snode.get_id())
2132
+ if task_id:
2133
+ logger.error(f"Migration task found: {task_id}, can not suspend storage node")
2134
+ if force is False:
2135
+ return False
2136
+
2133
2137
  cluster = db_controller.get_cluster_by_id(snode.cluster_id)
2134
2138
  snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
2135
2139
  online_nodes = 0
@@ -17,10 +17,11 @@ logger_handler = logging.StreamHandler(sys.stdout)
17
17
  logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
18
18
  logger = logging.getLogger()
19
19
  logger.addHandler(logger_handler)
20
- logger.setLevel(logging.DEBUG)
20
+ logger.setLevel(constants.LOG_WEB_LEVEL)
21
21
 
22
22
 
23
23
  app = Flask(__name__)
24
+ app.logger.setLevel(constants.LOG_WEB_LEVEL)
24
25
  app.url_map.strict_slashes = False
25
26
 
26
27
 
@@ -53,4 +54,5 @@ app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
53
54
 
54
55
  app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
55
56
  if __name__ == '__main__':
57
+ logging.getLogger('werkzeug').setLevel(constants.LOG_WEB_LEVEL)
56
58
  app.run(host='0.0.0.0', debug=constants.LOG_WEB_DEBUG)
@@ -17,7 +17,7 @@ from simplyblock_web import utils, node_utils
17
17
  from simplyblock_core import scripts, constants, shell_utils
18
18
 
19
19
  logger = logging.getLogger(__name__)
20
- logger.setLevel(logging.DEBUG)
20
+
21
21
  bp = Blueprint("caching_node", __name__, url_prefix="/cnode")
22
22
 
23
23
 
@@ -19,7 +19,7 @@ from simplyblock_core import constants, shell_utils
19
19
  from simplyblock_web import utils, node_utils
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
- logger.setLevel(logging.DEBUG)
22
+
23
23
  bp = Blueprint("caching_node_k", __name__, url_prefix="/cnode")
24
24
 
25
25
 
@@ -9,7 +9,7 @@ from flask import request
9
9
  from simplyblock_web import utils, node_utils
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
- logger.setLevel(logging.DEBUG)
12
+
13
13
  bp = Blueprint("node_api_basic", __name__, url_prefix="/")
14
14
 
15
15
  cpu_info = cpuinfo.get_cpu_info()
@@ -14,7 +14,7 @@ from simplyblock_web import utils, node_utils
14
14
  from simplyblock_core import scripts, constants
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
- logger.setLevel(logging.DEBUG)
17
+
18
18
  bp = Blueprint("node_api_caching_docker", __name__, url_prefix="/cnode")
19
19
 
20
20
 
@@ -16,7 +16,7 @@ from simplyblock_web import utils
16
16
 
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
- logger.setLevel(logging.DEBUG)
19
+
20
20
  bp = Blueprint("caching_node_k", __name__, url_prefix="/cnode")
21
21
 
22
22
 
@@ -18,7 +18,7 @@ from simplyblock_web import utils, node_utils
18
18
  from simplyblock_core import scripts, constants, shell_utils
19
19
 
20
20
  logger = logging.getLogger(__name__)
21
- logger.setLevel(logging.DEBUG)
21
+
22
22
  bp = Blueprint("snode", __name__, url_prefix="/snode")
23
23
 
24
24
  cluster_id_file = "/etc/foundationdb/sbcli_cluster_id"
@@ -19,7 +19,7 @@ from simplyblock_web import utils, node_utils
19
19
  from simplyblock_core import scripts, constants, shell_utils
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
- logger.setLevel(logging.INFO)
22
+ logger.setLevel(constants.LOG_LEVEL)
23
23
  bp = Blueprint("snode", __name__, url_prefix="/snode")
24
24
 
25
25
  cluster_id_file = "/etc/foundationdb/sbcli_cluster_id"
@@ -12,7 +12,7 @@ from simplyblock_core import db_controller
12
12
  from simplyblock_core.controllers import caching_node_controller
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
- logger.setLevel(logging.DEBUG)
15
+
16
16
  bp = Blueprint("cnode", __name__)
17
17
  db_controller = db_controller.DBController()
18
18
 
@@ -14,7 +14,7 @@ from simplyblock_core import db_controller, cluster_ops
14
14
  from simplyblock_core.models.cluster import Cluster
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
- logger.setLevel(logging.DEBUG)
17
+
18
18
  bp = Blueprint("cluster", __name__)
19
19
  db_controller = db_controller.DBController()
20
20
 
@@ -62,14 +62,24 @@ def add_cluster():
62
62
  @bp.route('/cluster', methods=['GET'], defaults={'uuid': None})
63
63
  @bp.route('/cluster/<string:uuid>', methods=['GET'])
64
64
  def list_clusters(uuid):
65
- cluster_id = utils.get_cluster_id(request)
66
- cluster = db_controller.get_cluster_by_id(cluster_id)
67
- if not cluster:
68
- return utils.get_response_error(f"Cluster not found: {cluster_id}", 404)
69
-
70
- d = cluster.get_clean_dict()
71
- d['status_code'] = cluster.get_status_code()
72
- return utils.get_response([d])
65
+ clusters_list = []
66
+ if uuid:
67
+ cl = db_controller.get_cluster_by_id(uuid)
68
+ if cl:
69
+ clusters_list.append(cl)
70
+ else:
71
+ return utils.get_response_error(f"Cluster not found: {uuid}", 404)
72
+ else:
73
+ cls = db_controller.get_clusters()
74
+ if cls:
75
+ clusters_list.extend(cls)
76
+
77
+ data = []
78
+ for cluster in clusters_list:
79
+ d = cluster.get_clean_dict()
80
+ d['status_code'] = cluster.get_status_code()
81
+ data.append(d)
82
+ return utils.get_response(data)
73
83
 
74
84
 
75
85
  @bp.route('/cluster/capacity/<string:uuid>/history/<string:history>', methods=['GET'])
@@ -16,7 +16,7 @@ from simplyblock_core import db_controller
16
16
  from simplyblock_core.models.deployer import Deployer
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
- logger.setLevel(logging.DEBUG)
19
+
20
20
  bp = Blueprint("deployer", __name__)
21
21
  db_controller = db_controller.DBController()
22
22
 
@@ -11,7 +11,7 @@ from simplyblock_web import utils
11
11
  from simplyblock_core import db_controller
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
- logger.setLevel(logging.DEBUG)
14
+
15
15
  bp = Blueprint("device", __name__)
16
16
  db_controller = db_controller.DBController()
17
17
 
@@ -14,7 +14,7 @@ from simplyblock_web import utils
14
14
  from simplyblock_core import db_controller
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
- logger.setLevel(logging.DEBUG)
17
+
18
18
  bp = Blueprint("lvol", __name__)
19
19
  db_controller = db_controller.DBController()
20
20
 
@@ -37,7 +37,15 @@ def list_lvols(uuid):
37
37
  lvols = db_controller.get_lvols(cluster_id)
38
38
  data = []
39
39
  for lvol in lvols:
40
- data.append(lvol.get_clean_dict())
40
+ tmp = lvol.get_clean_dict()
41
+ tmp['pool_name'] = db_controller.get_pool_by_id(lvol.pool_uuid).pool_name
42
+ # records_list = lvol_controller.get_io_stats(lvol.get_id(), history=None, parse_sizes=False)
43
+ # records_list = False
44
+ # if records_list:
45
+ # tmp['iostats'] = records_list
46
+ # else:
47
+ tmp['iostats'] = []
48
+ data.append(tmp)
41
49
  return utils.get_response(data)
42
50
 
43
51
 
@@ -10,7 +10,7 @@ from simplyblock_web import utils
10
10
  from simplyblock_core import db_controller
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
- logger.setLevel(logging.DEBUG)
13
+
14
14
  bp = Blueprint("mgmt", __name__)
15
15
  db_controller = db_controller.DBController()
16
16
 
@@ -12,7 +12,7 @@ from simplyblock_core.models.pool import Pool
12
12
  from simplyblock_core import db_controller, utils as core_utils
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
- logger.setLevel(logging.DEBUG)
15
+
16
16
  bp = Blueprint("pool", __name__)
17
17
  db_controller = db_controller.DBController()
18
18
 
@@ -12,7 +12,7 @@ from simplyblock_core.controllers import snapshot_controller
12
12
 
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
- logger.setLevel(logging.DEBUG)
15
+
16
16
  db_controller = db_controller.DBController()
17
17
  bp = Blueprint("snapshot", __name__)
18
18
 
@@ -13,7 +13,7 @@ from simplyblock_core import db_controller
13
13
  from simplyblock_core import storage_node_ops
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
- logger.setLevel(logging.DEBUG)
16
+
17
17
  bp = Blueprint("snode", __name__)
18
18
  db_controller = db_controller.DBController()
19
19
 
@@ -11,7 +11,7 @@ logger_handler = logging.StreamHandler()
11
11
  logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
12
12
  logger = logging.getLogger()
13
13
  logger.addHandler(logger_handler)
14
- logger.setLevel(logging.DEBUG)
14
+ logger.setLevel(constants.LOG_LEVEL)
15
15
 
16
16
 
17
17
  app = Flask(__name__)
@@ -11,7 +11,7 @@ logger_handler = logging.StreamHandler()
11
11
  logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
12
12
  logger = logging.getLogger()
13
13
  logger.addHandler(logger_handler)
14
- logger.setLevel(logging.DEBUG)
14
+ logger.setLevel(constants.LOG_LEVEL)
15
15
 
16
16
 
17
17
  app = Flask(__name__)
@@ -12,7 +12,7 @@ logger_handler = logging.StreamHandler()
12
12
  logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
13
13
  logger = logging.getLogger()
14
14
  logger.addHandler(logger_handler)
15
- logger.setLevel(logging.DEBUG)
15
+ logger.setLevel(constants.LOG_LEVEL)
16
16
 
17
17
 
18
18
  app = Flask(__name__)
@@ -11,7 +11,7 @@ logger_handler = logging.StreamHandler()
11
11
  logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
12
12
  logger = logging.getLogger()
13
13
  logger.addHandler(logger_handler)
14
- logger.setLevel(logging.DEBUG)
14
+ logger.setLevel(constants.LOG_LEVEL)
15
15
 
16
16
 
17
17
  app = Flask(__name__)
@@ -12,7 +12,7 @@ logger_handler = logging.StreamHandler()
12
12
  logger_handler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s'))
13
13
  logger = logging.getLogger()
14
14
  logger.addHandler(logger_handler)
15
- logger.setLevel(logging.INFO)
15
+ logger.setLevel(constants.LOG_LEVEL)
16
16
 
17
17
 
18
18
  app = Flask(__name__)
File without changes
File without changes
File without changes
File without changes