sbcli-dev 10.4.4__tar.gz → 10.7.1__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.4.4 → sbcli_dev-10.7.1}/PKG-INFO +1 -1
  2. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/PKG-INFO +1 -1
  3. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_cli/cli.py +4 -1
  4. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/cluster_ops.py +7 -3
  5. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/constants.py +4 -3
  6. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/device_controller.py +161 -139
  7. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/health_controller.py +5 -0
  8. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/lvol_controller.py +26 -13
  9. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/env_var +1 -1
  10. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/mgmt_node_ops.py +0 -3
  11. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/nvme_device.py +1 -1
  12. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/storage_node.py +2 -0
  13. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/config_docker.sh +13 -0
  14. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/install_deps.sh +5 -0
  15. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/health_check_service.py +3 -0
  16. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_new_dev_migration.py +16 -13
  17. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/snode_client.py +2 -1
  18. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/storage_node_ops.py +175 -74
  19. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/utils.py +2 -2
  20. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/snode_ops.py +29 -20
  21. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/node_webapp.py +1 -1
  22. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/README.md +0 -0
  23. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/pyproject.toml +0 -0
  24. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/requirements.txt +0 -0
  25. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  26. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  27. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/entry_points.txt +0 -0
  28. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/requires.txt +0 -0
  29. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/top_level.txt +0 -0
  30. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/setup.cfg +0 -0
  31. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/setup.py +0 -0
  32. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_cli/__init__.py +0 -0
  33. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_cli/main.py +0 -0
  34. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/__init__.py +0 -0
  35. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/cnode_client.py +0 -0
  36. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/__init__.py +0 -0
  37. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  38. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/cluster_events.py +0 -0
  39. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/device_events.py +0 -0
  40. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/events_controller.py +0 -0
  41. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/lvol_events.py +0 -0
  42. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/mgmt_events.py +0 -0
  43. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/pool_controller.py +0 -0
  44. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/pool_events.py +0 -0
  45. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  46. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/snapshot_events.py +0 -0
  47. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/storage_events.py +0 -0
  48. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/tasks_controller.py +0 -0
  49. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/controllers/tasks_events.py +0 -0
  50. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/db_controller.py +0 -0
  51. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/distr_controller.py +0 -0
  52. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/__init__.py +0 -0
  53. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/base_model.py +0 -0
  54. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/caching_node.py +0 -0
  55. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/cluster.py +0 -0
  56. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/deployer.py +0 -0
  57. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/events.py +0 -0
  58. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/iface.py +0 -0
  59. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/job_schedule.py +0 -0
  60. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/lvol_model.py +0 -0
  61. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/mgmt_node.py +0 -0
  62. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/pool.py +0 -0
  63. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/port_stat.py +0 -0
  64. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/snapshot.py +0 -0
  65. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/models/stats.py +0 -0
  66. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/pci_utils.py +0 -0
  67. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/rpc_client.py +0 -0
  68. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/__init__.py +0 -0
  69. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  70. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  71. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  72. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboard.yml +0 -0
  73. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  74. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  75. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  76. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  77. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  78. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  79. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/datasource.yml +0 -0
  80. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/db_config_double.sh +0 -0
  81. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/db_config_single.sh +0 -0
  82. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  83. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  84. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  85. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  86. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/foundation.yml +0 -0
  87. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/haproxy.cfg +0 -0
  88. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/objstore.yml +0 -0
  89. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  90. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/prometheus.yml +0 -0
  91. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/run_ssh.sh +0 -0
  92. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/set_db_config.sh +0 -0
  93. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  94. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/__init__.py +0 -0
  95. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  96. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/caching_node_monitor.py +0 -0
  97. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/cap_monitor.py +0 -0
  98. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  99. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/device_monitor.py +0 -0
  100. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/install_service.sh +0 -0
  101. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/log_agg_service.py +0 -0
  102. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/lvol_monitor.py +0 -0
  103. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  104. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  105. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  106. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/new_device_discovery.py +0 -0
  107. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/port_stat_collector.py +0 -0
  108. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/remove_service.sh +0 -0
  109. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/service_template.service +0 -0
  110. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  111. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/storage_node_monitor.py +0 -0
  112. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  113. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  114. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  115. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  116. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/shell_utils.py +0 -0
  117. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  118. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/README.md +0 -0
  119. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/__init__.py +0 -0
  120. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/app.py +0 -0
  121. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/auth_middleware.py +0 -0
  122. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/__init__.py +0 -0
  123. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  124. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  125. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  126. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  127. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  128. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  129. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  130. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  131. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  132. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_device.py +0 -0
  133. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  134. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  135. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  136. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  137. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  138. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/caching_node_app.py +0 -0
  139. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/caching_node_app_k8s.py +0 -0
  140. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/node_utils.py +0 -0
  141. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/requirements.txt +0 -0
  142. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/snode_app.py +0 -0
  143. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/snode_app_k8s.py +0 -0
  144. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/delete.py +0 -0
  145. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/deploy.py +0 -0
  146. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  147. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  148. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/is_up.py +0 -0
  149. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/list_deps.py +0 -0
  150. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/rpac.yaml +0 -0
  151. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/static/tst.py +0 -0
  152. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  153. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  154. {sbcli_dev-10.4.4 → sbcli_dev-10.7.1}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sbcli-dev
3
- Version: 10.4.4
3
+ Version: 10.7.1
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sbcli-dev
3
- Version: 10.4.4
3
+ Version: 10.7.1
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -47,6 +47,7 @@ class CLIWrapper:
47
47
  sub_command.add_argument("--max-prov", help='Maximum amount of GB to be provisioned via all storage nodes', dest='max_prov')
48
48
  sub_command.add_argument("--number-of-distribs", help='The number of distirbs to be created on the node', dest='number_of_distribs', type=int, default=2)
49
49
  sub_command.add_argument("--number-of-devices", help='Number of devices per storage node if it\'s not supported EC2 instance', dest='number_of_devices', type=int)
50
+ sub_command.add_argument("--size-of-device", help='Size of device per storage node', dest='partition_size')
50
51
  sub_command.add_argument("--cpu-mask", help='SPDK app CPU mask, default is all cores found', dest='spdk_cpu_mask')
51
52
 
52
53
  sub_command.add_argument("--spdk-image", help='SPDK image uri', dest='spdk_image')
@@ -58,7 +59,7 @@ class CLIWrapper:
58
59
  sub_command.add_argument("--disable-ha-jm", help='Disable HA JM for distrib creation', action='store_false', dest='enable_ha_jm', default=True)
59
60
  sub_command.add_argument("--is-secondary-node", help='add as secondary node', action='store_true', dest='is_secondary_node', default=False)
60
61
  sub_command.add_argument("--namespace", help='k8s namespace to deploy on',)
61
-
62
+ sub_command.add_argument("--id-device-by-nqn", help='Use device nqn to identify it instead of serial number', action='store_true', dest='id_device_by_nqn', default=False)
62
63
 
63
64
  # delete storage node
64
65
  sub_command = self.add_sub_command(subparser, "delete", 'Delete storage node obj')
@@ -798,6 +799,8 @@ class CLIWrapper:
798
799
  number_of_distribs=number_of_distribs,
799
800
  enable_ha_jm=enable_ha_jm,
800
801
  is_secondary_node=args.is_secondary_node,
802
+ id_device_by_nqn=args.id_device_by_nqn,
803
+ partition_size=args.partition_size,
801
804
  )
802
805
 
803
806
  return out
@@ -130,6 +130,10 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
130
130
  if c.swarm.attrs and "ID" in c.swarm.attrs:
131
131
  logger.info("Docker swarm found, leaving swarm now")
132
132
  c.swarm.leave(force=True)
133
+ try:
134
+ c.volumes.get("monitoring_grafana_data").remove(force=True)
135
+ except:
136
+ pass
133
137
  time.sleep(3)
134
138
 
135
139
  c.swarm.init(DEV_IP)
@@ -160,7 +164,7 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
160
164
  if prov_cap_crit and prov_cap_crit > 0:
161
165
  c.prov_cap_crit = prov_cap_crit
162
166
  if distr_ndcs == 0 and distr_npcs == 0:
163
- c.distr_ndcs = 4
167
+ c.distr_ndcs = 1
164
168
  c.distr_npcs = 1
165
169
  else:
166
170
  c.distr_ndcs = distr_ndcs
@@ -365,7 +369,7 @@ def cluster_activate(cl_id, force=False, force_lvstore_create=False):
365
369
  else:
366
370
  ret = storage_node_ops.create_lvstore(snode, cluster.distr_ndcs, cluster.distr_npcs, cluster.distr_bs,
367
371
  cluster.distr_chunk_bs, cluster.page_size_in_blocks, max_size, snodes)
368
- if not ret:
372
+ if not ret and not force:
369
373
  logger.error("Failed to activate cluster")
370
374
  set_cluster_status(cl_id, ols_status)
371
375
  return False
@@ -377,7 +381,7 @@ def cluster_activate(cl_id, force=False, force_lvstore_create=False):
377
381
  continue
378
382
 
379
383
  ret = storage_node_ops.recreate_lvstore(snode)
380
- if not ret:
384
+ if not ret and not force:
381
385
  logger.error("Failed to activate cluster")
382
386
  set_cluster_status(cl_id, ols_status)
383
387
  return False
@@ -76,7 +76,7 @@ TASK_EXEC_RETRY_COUNT = 8
76
76
  SIMPLY_BLOCK_SPDK_CORE_IMAGE = "simplyblock/spdk-core:v24.05-tag-latest"
77
77
 
78
78
 
79
- SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:lvolstore-ha-snapshot-latest"
79
+ SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:main-latest"
80
80
 
81
81
  GELF_PORT = 12202
82
82
 
@@ -88,7 +88,7 @@ EXTRA_LARGE_POOL_COUNT = 16000
88
88
  # EXTRA_LARGE_POOL_COUNT = 0
89
89
  EXTRA_HUGE_PAGE_MEMORY = 2147483648
90
90
  #EXTRA_SYS_MEMORY = 2147483648
91
- EXTRA_SYS_MEMORY = 0
91
+ EXTRA_SYS_MEMORY = 0.15
92
92
 
93
93
  INSTANCE_STORAGE_DATA = {
94
94
  'i4i.large': {'number_of_devices': 1, 'size_per_device_gb': 468},
@@ -128,4 +128,5 @@ LVOL_NVME_CONNECT_NR_IO_QUEUES=6
128
128
  QPAIR_COUNT=32
129
129
  NVME_TIMEOUT_US=20000000
130
130
 
131
- NVMF_MAX_SUBSYSTEMS=50000
131
+ NVMF_MAX_SUBSYSTEMS=50000
132
+ HA_JM_COUNT=3
@@ -118,64 +118,92 @@ def _def_create_device_stack(device_obj, snode, force=False):
118
118
  rpc_client = RPCClient(
119
119
  snode.mgmt_ip, snode.rpc_port,
120
120
  snode.rpc_username, snode.rpc_password,
121
- timeout=600
122
- )
121
+ timeout=600)
122
+
123
+ bdev_names = []
124
+ for dev in rpc_client.get_bdevs():
125
+ bdev_names.append(dev['name'])
126
+
123
127
  nvme_bdev = device_obj.nvme_bdev
124
128
  if snode.enable_test_device:
125
129
  test_name = f"{device_obj.nvme_bdev}_test"
126
- # create testing bdev
127
- ret = rpc_client.bdev_passtest_create(test_name, device_obj.nvme_bdev)
128
- if not ret:
129
- logger.error(f"Failed to create bdev: {test_name}")
130
- if not force:
131
- return False
130
+ if test_name not in bdev_names:
131
+ # create testing bdev
132
+ ret = rpc_client.bdev_passtest_create(test_name, device_obj.nvme_bdev)
133
+ if not ret:
134
+ logger.error(f"Failed to create bdev: {test_name}")
135
+ if not force:
136
+ return False
137
+ else:
138
+ logger.info(f"bdev already exists {test_name}")
139
+ device_obj.testing_bdev = test_name
132
140
  nvme_bdev = test_name
133
141
 
134
142
  alceml_id = device_obj.get_id()
135
143
  alceml_name = get_alceml_name(alceml_id)
136
- logger.info(f"adding {alceml_name}")
137
144
 
138
- if snode.alceml_cpu_cores:
139
- alceml_cpu_mask = utils.decimal_to_hex_power_of_2(snode.alceml_cpu_cores[snode.alceml_cpu_index])
140
- ret = rpc_client.bdev_alceml_create(alceml_name, nvme_bdev, alceml_id, pba_init_mode=2,
141
- alceml_cpu_mask=alceml_cpu_mask)
142
- snode.alceml_cpu_index = (snode.alceml_cpu_index + 1) % len(snode.alceml_cpu_cores)
143
- else:
144
- ret = rpc_client.bdev_alceml_create(alceml_name, nvme_bdev, alceml_id, pba_init_mode=2)
145
+ if alceml_name not in bdev_names:
146
+ logger.info(f"adding {alceml_name}")
147
+ if snode.alceml_cpu_cores:
148
+ alceml_cpu_mask = utils.decimal_to_hex_power_of_2(snode.alceml_cpu_cores[snode.alceml_cpu_index])
149
+ ret = rpc_client.bdev_alceml_create(alceml_name, nvme_bdev, alceml_id, pba_init_mode=2,
150
+ alceml_cpu_mask=alceml_cpu_mask)
151
+ snode.alceml_cpu_index = (snode.alceml_cpu_index + 1) % len(snode.alceml_cpu_cores)
152
+ else:
153
+ ret = rpc_client.bdev_alceml_create(alceml_name, nvme_bdev, alceml_id, pba_init_mode=2)
145
154
 
146
- if not ret:
147
- logger.error(f"Failed to create alceml bdev: {alceml_name}")
148
- if not force:
149
- return False
155
+ if not ret:
156
+ logger.error(f"Failed to create alceml bdev: {alceml_name}")
157
+ if not force:
158
+ return False
159
+ else:
160
+ logger.info(f"bdev already exists {alceml_name}")
150
161
 
151
162
  # add pass through
152
163
  pt_name = f"{alceml_name}_PT"
153
- ret = rpc_client.bdev_PT_NoExcl_create(pt_name, alceml_name)
154
- if not ret:
155
- logger.error(f"Failed to create pt noexcl bdev: {pt_name}")
156
- if not force:
157
- return False
164
+ if pt_name not in bdev_names:
165
+ ret = rpc_client.bdev_PT_NoExcl_create(pt_name, alceml_name)
166
+ if not ret:
167
+ logger.error(f"Failed to create pt noexcl bdev: {pt_name}")
168
+ if not force:
169
+ return False
170
+ else:
171
+ logger.info(f"bdev already exists {pt_name}")
158
172
 
159
173
  subsystem_nqn = snode.subsystem + ":dev:" + alceml_id
160
- logger.info("Creating subsystem %s", subsystem_nqn)
161
- ret = rpc_client.subsystem_create(subsystem_nqn, 'sbcli-cn', alceml_id)
162
- IP = None
163
- for iface in snode.data_nics:
164
- if iface.ip4_address:
165
- tr_type = iface.get_transport_type()
166
- ret = rpc_client.listeners_create(subsystem_nqn, tr_type, iface.ip4_address, "4420")
167
- IP = iface.ip4_address
168
- break
169
- logger.info(f"Adding {pt_name} to the subsystem")
170
- ret = rpc_client.nvmf_subsystem_add_ns(subsystem_nqn, pt_name)
174
+ namespace_found = False
175
+ subsys_found = False
176
+ ret = rpc_client.subsystem_list(subsystem_nqn)
177
+ if ret :
178
+ subsys_found = True
179
+ if ret[0]["namespaces"]:
180
+ for ns in ret[0]["namespaces"]:
181
+ if ns['name'] == pt_name:
182
+ namespace_found = True
183
+ break
184
+
185
+ if not subsys_found:
186
+ logger.info("Creating subsystem %s", subsystem_nqn)
187
+ ret = rpc_client.subsystem_create(subsystem_nqn, 'sbcli-cn', alceml_id)
188
+ for iface in snode.data_nics:
189
+ if iface.ip4_address:
190
+ tr_type = iface.get_transport_type()
191
+ ret = rpc_client.listeners_create(subsystem_nqn, tr_type, iface.ip4_address, "4420")
192
+ device_obj.nvmf_ip = iface.ip4_address
193
+ break
194
+ else:
195
+ logger.info(f"subsystem already exists {subsys_found}")
196
+
197
+ if not namespace_found:
198
+ logger.info(f"Adding {pt_name} to the subsystem")
199
+ ret = rpc_client.nvmf_subsystem_add_ns(subsystem_nqn, pt_name)
200
+ else:
201
+ logger.info(f"bdev already added to subsys {pt_name}")
171
202
 
172
- if snode.enable_test_device:
173
- device_obj.testing_bdev = test_name
174
203
  device_obj.alceml_bdev = alceml_name
175
204
  device_obj.alceml_name = alceml_name
176
205
  device_obj.pt_bdev = pt_name
177
206
  device_obj.nvmf_nqn = subsystem_nqn
178
- device_obj.nvmf_ip = IP
179
207
  device_obj.nvmf_port = 4420
180
208
  return True
181
209
 
@@ -592,110 +620,109 @@ def add_device(device_id):
592
620
  break
593
621
 
594
622
  logger.info(f"Adding device {device_id}")
595
- if snode.num_partitions_per_dev == 0:
596
- ret = _def_create_device_stack(device_obj, snode, force=True)
597
- if not ret:
598
- logger.error("Failed to create device stack")
599
- return False
600
- dev_order = storage_node_ops.get_next_cluster_device_order(db_controller, snode.cluster_id)
601
- device_obj.cluster_device_order = dev_order
602
- logger.info("Setting device online")
603
- device_obj.status = NVMeDevice.STATUS_ONLINE
604
- snode.write_to_db(db_controller.kv_store)
605
- device_events.device_create(device_obj)
606
-
607
- logger.info("Make other nodes connect to the node devices")
608
- snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
609
- for node in snodes:
610
- if node.get_id() == snode.get_id() or node.status != StorageNode.STATUS_ONLINE:
611
- continue
612
- node.remote_devices = storage_node_ops._connect_to_remote_devs(node, force_conect_restarting_nodes=True)
613
- node.write_to_db()
614
-
615
-
616
- snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
617
- for node in snodes:
618
- if node.status != StorageNode.STATUS_ONLINE:
619
- continue
620
- distr_controller.send_cluster_map_add_device(device_obj, node)
621
-
622
- tasks_controller.add_new_device_mig_task(device_id)
623
- return device_id
624
-
625
-
626
- # create partitions
627
- partitions = snode.num_partitions_per_dev
628
- rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password)
629
- # look for partitions
630
- partitioned_devices = storage_node_ops._search_for_partitions(rpc_client, device_obj)
631
- logger.debug("partitioned_devices")
632
- logger.debug(partitioned_devices)
633
- if len(partitioned_devices) == partitions+1:
634
- logger.info("Partitioned devices found")
635
- else:
636
- logger.info(f"Creating partitions for {device_obj.nvme_bdev}")
637
- storage_node_ops._create_device_partitions(rpc_client, device_obj, snode, partitions, snode.jm_percent)
638
- partitioned_devices = storage_node_ops._search_for_partitions(rpc_client, device_obj)
639
- if len(partitioned_devices) == partitions+1:
640
- logger.info("Device partitions created")
641
- else:
642
- logger.error("Failed to create partitions")
643
- return False
644
-
645
- jm_part = partitioned_devices.pop(0)
646
- new_devices = []
647
- dev_order = storage_node_ops.get_next_cluster_device_order(db_controller, snode.cluster_id)
648
- for dev in partitioned_devices:
649
- new_device = storage_node_ops._create_storage_device_stack(rpc_client, dev, snode, after_restart=False)
650
- if not new_device:
651
- logger.error("failed to create dev stack")
652
- continue
653
-
654
- new_device.cluster_device_order = dev_order
655
- dev_order += 1
656
- device_events.device_create(new_device)
657
- new_devices.append(new_device)
658
-
659
- if new_devices:
660
- snode.nvme_devices.remove(device_obj)
661
- snode.nvme_devices.extend(new_devices)
662
- snode.write_to_db(db_controller.kv_store)
663
- else:
664
- logger.error("failed to create devices")
623
+ # if snode.num_partitions_per_dev == 0 or device_obj.is_partition:
624
+ ret = _def_create_device_stack(device_obj, snode, force=True)
625
+ if not ret:
626
+ logger.error("Failed to create device stack")
665
627
  return False
666
-
667
- for dev in new_devices:
668
- distr_controller.send_cluster_map_add_device(dev, snode)
628
+ dev_order = storage_node_ops.get_next_cluster_device_order(db_controller, snode.cluster_id)
629
+ device_obj.cluster_device_order = dev_order
630
+ logger.info("Setting device online")
631
+ device_obj.status = NVMeDevice.STATUS_ONLINE
632
+ snode.write_to_db(db_controller.kv_store)
633
+ device_events.device_create(device_obj)
669
634
 
670
635
  logger.info("Make other nodes connect to the node devices")
671
636
  snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
672
637
  for node in snodes:
673
638
  if node.get_id() == snode.get_id() or node.status != StorageNode.STATUS_ONLINE:
674
639
  continue
675
- node.remote_devices = storage_node_ops._connect_to_remote_devs(node)
640
+ node.remote_devices = storage_node_ops._connect_to_remote_devs(node, force_conect_restarting_nodes=True)
676
641
  node.write_to_db()
677
- for dev in new_devices:
678
- distr_controller.send_cluster_map_add_device(dev, node)
679
-
680
- for dev in new_devices:
681
- tasks_controller.add_new_device_mig_task(dev.get_id())
682
642
 
683
- # add to jm raid
684
- if snode.jm_device and snode.jm_device.raid_bdev and jm_part:
685
- # looking for jm partition
686
- jm_dev_part = jm_part.nvme_bdev
687
- ret = rpc_client.get_bdevs(jm_dev_part)
688
- if ret:
689
- logger.info(f"JM part found: {jm_dev_part}")
690
- if snode.jm_device.status in [JMDevice.STATUS_UNAVAILABLE, JMDevice.STATUS_REMOVED]:
691
- restart_jm_device(snode.jm_device.get_id(), force=True, format_alceml=True)
692
-
693
- if snode.jm_device.status == JMDevice.STATUS_ONLINE and \
694
- jm_dev_part not in snode.jm_device.jm_nvme_bdev_list:
695
- remove_jm_device(snode.jm_device.get_id(), force=True)
696
- restart_jm_device(snode.jm_device.get_id(), force=True)
697
-
698
- return "Done"
643
+ snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
644
+ for node in snodes:
645
+ if node.status != StorageNode.STATUS_ONLINE:
646
+ continue
647
+ distr_controller.send_cluster_map_add_device(device_obj, node)
648
+
649
+ tasks_controller.add_new_device_mig_task(device_id)
650
+ return device_id
651
+
652
+ #
653
+ # # create partitions
654
+ # partitions = snode.num_partitions_per_dev
655
+ # rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password)
656
+ # # look for partitions
657
+ # partitioned_devices = storage_node_ops._search_for_partitions(rpc_client, device_obj)
658
+ # logger.debug("partitioned_devices")
659
+ # logger.debug(partitioned_devices)
660
+ # if len(partitioned_devices) == partitions+1:
661
+ # logger.info("Partitioned devices found")
662
+ # else:
663
+ # logger.info(f"Creating partitions for {device_obj.nvme_bdev}")
664
+ # storage_node_ops._create_device_partitions(rpc_client, device_obj, snode, partitions, snode.jm_percent)
665
+ # partitioned_devices = storage_node_ops._search_for_partitions(rpc_client, device_obj)
666
+ # if len(partitioned_devices) == partitions+1:
667
+ # logger.info("Device partitions created")
668
+ # else:
669
+ # logger.error("Failed to create partitions")
670
+ # return False
671
+ #
672
+ # jm_part = partitioned_devices.pop(0)
673
+ # new_devices = []
674
+ # dev_order = storage_node_ops.get_next_cluster_device_order(db_controller, snode.cluster_id)
675
+ # for dev in partitioned_devices:
676
+ # new_device = storage_node_ops._create_storage_device_stack(rpc_client, dev, snode, after_restart=False)
677
+ # if not new_device:
678
+ # logger.error("failed to create dev stack")
679
+ # continue
680
+ #
681
+ # new_device.cluster_device_order = dev_order
682
+ # dev_order += 1
683
+ # device_events.device_create(new_device)
684
+ # new_devices.append(new_device)
685
+ #
686
+ # if new_devices:
687
+ # snode.nvme_devices.remove(device_obj)
688
+ # snode.nvme_devices.extend(new_devices)
689
+ # snode.write_to_db(db_controller.kv_store)
690
+ # else:
691
+ # logger.error("failed to create devices")
692
+ # return False
693
+ #
694
+ # for dev in new_devices:
695
+ # distr_controller.send_cluster_map_add_device(dev, snode)
696
+ #
697
+ # logger.info("Make other nodes connect to the node devices")
698
+ # snodes = db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id)
699
+ # for node in snodes:
700
+ # if node.get_id() == snode.get_id() or node.status != StorageNode.STATUS_ONLINE:
701
+ # continue
702
+ # node.remote_devices = storage_node_ops._connect_to_remote_devs(node)
703
+ # node.write_to_db()
704
+ # for dev in new_devices:
705
+ # distr_controller.send_cluster_map_add_device(dev, node)
706
+ #
707
+ # for dev in new_devices:
708
+ # tasks_controller.add_new_device_mig_task(dev.get_id())
709
+ #
710
+ # # add to jm raid
711
+ # if snode.jm_device and snode.jm_device.raid_bdev and jm_part:
712
+ # # looking for jm partition
713
+ # jm_dev_part = jm_part.nvme_bdev
714
+ # ret = rpc_client.get_bdevs(jm_dev_part)
715
+ # if ret:
716
+ # logger.info(f"JM part found: {jm_dev_part}")
717
+ # if snode.jm_device.status in [JMDevice.STATUS_UNAVAILABLE, JMDevice.STATUS_REMOVED]:
718
+ # restart_jm_device(snode.jm_device.get_id(), force=True, format_alceml=True)
719
+ #
720
+ # if snode.jm_device.status == JMDevice.STATUS_ONLINE and \
721
+ # jm_dev_part not in snode.jm_device.jm_nvme_bdev_list:
722
+ # remove_jm_device(snode.jm_device.get_id(), force=True)
723
+ # restart_jm_device(snode.jm_device.get_id(), force=True)
724
+ #
725
+ # return "Done"
699
726
 
700
727
 
701
728
  def device_set_failed_and_migrated(device_id):
@@ -763,11 +790,6 @@ def remove_jm_device(device_id, force=False):
763
790
  logger.error("device not found")
764
791
  return False
765
792
 
766
- if jm_device.status != JMDevice.STATUS_ONLINE:
767
- logger.warning("device is not online")
768
- if not force:
769
- return False
770
-
771
793
  set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_UNAVAILABLE)
772
794
 
773
795
  if snode.status == StorageNode.STATUS_ONLINE:
@@ -2,6 +2,7 @@
2
2
 
3
3
  from simplyblock_core import utils, distr_controller
4
4
  from simplyblock_core.db_controller import DBController
5
+ from simplyblock_core.models.cluster import Cluster
5
6
  from simplyblock_core.models.nvme_device import NVMeDevice, JMDevice
6
7
  from simplyblock_core.models.storage_node import StorageNode
7
8
  from simplyblock_core.rpc_client import RPCClient
@@ -115,6 +116,10 @@ def _check_node_lvstore(lvstore_stack, node, auto_fix=False):
115
116
  logger.info(f"Checking distr stack on node : {node.get_id()}")
116
117
  rpc_client = RPCClient(
117
118
  node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=3, retry=1)
119
+ cluster = db_controller.get_cluster_by_id(node.cluster_id)
120
+ if cluster.status in [Cluster.STATUS_INACTIVE, Cluster.STATUS_IN_ACTIVATION]:
121
+ auto_fix = False
122
+
118
123
  distribs_list = []
119
124
  raid = None
120
125
  bdev_lvstore = None
@@ -1118,6 +1118,8 @@ def resize_lvol(id, new_size):
1118
1118
  logger.error(f"Pool is disabled")
1119
1119
  return False
1120
1120
 
1121
+ new_size = utils.parse_size(new_size)
1122
+
1121
1123
  if lvol.size >= new_size:
1122
1124
  logger.error(f"New size {new_size} must be higher than the original size {lvol.size}")
1123
1125
  return False
@@ -1125,28 +1127,39 @@ def resize_lvol(id, new_size):
1125
1127
  if lvol.max_size < new_size:
1126
1128
  logger.error(f"New size {new_size} must be smaller than the max size {lvol.max_size}")
1127
1129
  return False
1128
-
1129
- if lvol.cloned_from_snap:
1130
- logger.error(f"Can not resize clone!")
1131
- return False
1132
-
1133
- logger.info(f"Resizing LVol: {lvol.get_id()}, new size: {new_size}")
1130
+ #
1131
+ # if lvol.cloned_from_snap:
1132
+ # logger.error(f"Can not resize clone!")
1133
+ # return False
1134
1134
 
1135
1135
  snode = db_controller.get_storage_node_by_id(lvol.node_id)
1136
1136
 
1137
+ logger.info(f"Resizing LVol: {lvol.get_id()} on primary node: {snode.get_id()}")
1138
+ logger.info(f"Current size: {utils.humanbytes(lvol.size)}, new size: {utils.humanbytes(new_size)}")
1139
+
1137
1140
  # creating RPCClient instance
1138
1141
  rpc_client = RPCClient(
1139
- snode.mgmt_ip,
1140
- snode.rpc_port,
1141
- snode.rpc_username,
1142
- snode.rpc_password)
1143
-
1142
+ snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password)
1143
+ rpc_client.bdev_lvol_set_leader(True, lvs_name=lvol.lvs_name)
1144
1144
  size_in_mib = int(new_size / (1000*1000))
1145
- ret = rpc_client.bdev_lvol_resize(lvol.top_bdev, size_in_mib)
1145
+ ret = rpc_client.bdev_lvol_resize(f"{lvol.lvs_name}/{lvol.lvol_bdev}", size_in_mib)
1146
1146
  if not ret:
1147
- logger.error("Error resizing lvol")
1147
+ logger.error(f"Error resizing lvol on node: {snode.get_id()}")
1148
1148
  return False
1149
1149
 
1150
+ if lvol.ha_type == "ha":
1151
+ sec_node = db_controller.get_storage_node_by_id(snode.secondary_node_id)
1152
+ if sec_node and sec_node.status == StorageNode.STATUS_ONLINE:
1153
+ sec_node_rpc_client = RPCClient(
1154
+ sec_node.mgmt_ip, sec_node.rpc_port, sec_node.rpc_username, sec_node.rpc_password)
1155
+ time.sleep(3)
1156
+ logger.info(f"Resizing LVol: {lvol.get_id()} on secondary node: {sec_node.get_id()}")
1157
+ sec_node_rpc_client.bdev_lvol_set_leader(False, lvs_name=lvol.lvs_name)
1158
+ ret = sec_node_rpc_client.bdev_lvol_resize(f"{lvol.lvs_name}/{lvol.lvol_bdev}", size_in_mib)
1159
+ if not ret:
1160
+ logger.error(f"Error resizing lvol on node: {sec_node.get_id()}")
1161
+
1162
+ lvol = db_controller.get_lvol_by_id(id)
1150
1163
  lvol.size = new_size
1151
1164
  lvol.write_to_db(db_controller.kv_store)
1152
1165
  logger.info("Done")
@@ -1,5 +1,5 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
2
- SIMPLY_BLOCK_VERSION=10.4.4
2
+ SIMPLY_BLOCK_VERSION=10.7.1
3
3
 
4
4
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main
5
5
  DOCKER_USER=hamdysimplyblock
@@ -132,9 +132,6 @@ def deploy_mgmt_node(cluster_ip, cluster_id, ifname, cluster_secret):
132
132
  logger.info("Configuring Double DB...")
133
133
  time.sleep(3)
134
134
  scripts.set_db_config_double()
135
- for cl in db_controller.get_clusters():
136
- cl.ha_type = "ha"
137
- cl.write_to_db(db_controller.kv_store)
138
135
 
139
136
  logger.info("Node joined the cluster")
140
137
  return node_id
@@ -31,7 +31,7 @@ class NVMeDevice(BaseModel):
31
31
  alceml_name: str = ""
32
32
  bdev_stack: List = []
33
33
  capacity: int = -1
34
- cluster_device_order: int = 0
34
+ cluster_device_order: int = -1
35
35
  cluster_id: str = ""
36
36
  device_name: str = ""
37
37
  health_check: bool = True
@@ -35,6 +35,7 @@ class StorageNode(BaseNodeObject):
35
35
  hostname: str = ""
36
36
  hugepages: int = 0
37
37
  ib_devices: List[IFace] = []
38
+ id_device_by_nqn: bool = False
38
39
  iobuf_large_bufsize: int = 0
39
40
  iobuf_large_pool_count: int = 0
40
41
  iobuf_small_bufsize: int = 0
@@ -79,5 +80,6 @@ class StorageNode(BaseNodeObject):
79
80
  spdk_debug: bool = False
80
81
  spdk_image: str = ""
81
82
  spdk_mem: int = 0
83
+ partition_size: int = 0
82
84
  subsystem: str = ""
83
85
  system_uuid: str = ""
@@ -6,6 +6,19 @@ function set_config() {
6
6
 
7
7
  DEV_IP=$1
8
8
 
9
+ if [ ! -s "/etc/docker/daemon.json" ]
10
+ then
11
+ echo '{
12
+ "log-driver": "json-file",
13
+ "log-opts": {
14
+ "max-size": "30m",
15
+ "max-file": "3"
16
+ }
17
+ }
18
+ ' > /etc/docker/daemon.json
19
+ fi
20
+
21
+
9
22
  if [[ -z $(grep "tcp://${DEV_IP}:2375" /usr/lib/systemd/system/docker.service) ]]
10
23
  then
11
24
  set_config ExecStart "/usr/bin/dockerd --containerd=/run/containerd/containerd.sock -H tcp://${DEV_IP}:2375 -H unix:///var/run/docker.sock -H fd://" /usr/lib/systemd/system/docker.service
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ if [[ -z $(grep "$(hostname)" /etc/hosts) ]]
4
+ then
5
+ sudo sh -c 'echo "127.0.0.1 $(hostname)" >> /etc/hosts'
6
+ fi
7
+
3
8
  sudo yum install -y yum-utils xorg-x11-xauth nvme-cli fio
4
9
  sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5
10
  sudo yum install hostname pkg-config git wget python3-pip yum-utils docker-ce docker-ce-cli \
@@ -4,6 +4,7 @@ from datetime import datetime
4
4
 
5
5
 
6
6
  from simplyblock_core.controllers import health_controller, storage_events, device_events
7
+ from simplyblock_core.models.cluster import Cluster
7
8
  from simplyblock_core.models.nvme_device import NVMeDevice
8
9
  from simplyblock_core.models.storage_node import StorageNode
9
10
  from simplyblock_core.rpc_client import RPCClient
@@ -193,6 +194,8 @@ while True:
193
194
  else:
194
195
  logger.info(f"Checking bdev: {remote_device.remote_bdev} ... not found")
195
196
 
197
+ if cluster.status in [Cluster.STATUS_IN_ACTIVATION, Cluster.STATUS_INACTIVE]:
198
+ continue
196
199
  org_dev = None
197
200
  org_dev_node = None
198
201
  for node in db_controller.get_storage_nodes():