sbcli-dev 4.0.21__zip → 4.0.23__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sbcli-dev might be problematic. Click here for more details.

Files changed (149) hide show
  1. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/PKG-INFO +1 -1
  2. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/env_var +1 -1
  3. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/device_controller.py +89 -28
  5. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/lvol_controller.py +8 -2
  6. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/storage_node_monitor.py +5 -5
  7. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/tasks_runner_failed_migration.py +1 -4
  8. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/storage_node_ops.py +3 -1
  9. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/auth_middleware.py +0 -3
  10. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_cluster.py +8 -18
  11. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/README.md +0 -0
  12. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/pyproject.toml +0 -0
  13. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  14. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  15. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/sbcli_dev.egg-info/entry_points.txt +0 -0
  16. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/sbcli_dev.egg-info/requires.txt +0 -0
  17. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/sbcli_dev.egg-info/top_level.txt +0 -0
  18. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/setup.cfg +0 -0
  19. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/setup.py +0 -0
  20. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_cli/cli.py +0 -0
  21. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_cli/main.py +0 -0
  22. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/__init__.py +0 -0
  23. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/cluster_ops.py +0 -0
  24. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/cnode_client.py +0 -0
  25. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/compute_node_ops.py +0 -0
  26. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/constants.py +0 -0
  27. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/__init__.py +0 -0
  28. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  29. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/cluster_events.py +0 -0
  30. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/device_events.py +0 -0
  31. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/events_controller.py +0 -0
  32. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/health_controller.py +0 -0
  33. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/lvol_events.py +0 -0
  34. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/mgmt_events.py +0 -0
  35. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/pool_controller.py +0 -0
  36. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/pool_events.py +0 -0
  37. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  38. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/snapshot_events.py +0 -0
  39. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/storage_events.py +0 -0
  40. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/tasks_controller.py +0 -0
  41. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/controllers/tasks_events.py +0 -0
  42. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/distr_controller.py +0 -0
  43. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/kv_store.py +0 -0
  44. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/mgmt_node_ops.py +0 -0
  45. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/__init__.py +0 -0
  46. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/base_model.py +0 -0
  47. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/caching_node.py +0 -0
  48. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/cluster.py +0 -0
  49. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/compute_node.py +0 -0
  50. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/deployer.py +0 -0
  51. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/events.py +0 -0
  52. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/global_settings.py +0 -0
  53. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/iface.py +0 -0
  54. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/job_schedule.py +0 -0
  55. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/lvol_model.py +0 -0
  56. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/mgmt_node.py +0 -0
  57. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/nvme_device.py +0 -0
  58. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/pool.py +0 -0
  59. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/port_stat.py +0 -0
  60. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/snapshot.py +0 -0
  61. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/stats.py +0 -0
  62. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/models/storage_node.py +0 -0
  63. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/pci_utils.py +0 -0
  64. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/rpc_client.py +0 -0
  65. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/__init__.py +0 -0
  66. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  67. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  68. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  69. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/config_docker.sh +0 -0
  70. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboard.yml +0 -0
  71. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  72. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  73. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  74. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  75. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  76. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  77. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/datasource.yml +0 -0
  78. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/db_config_double.sh +0 -0
  79. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/db_config_single.sh +0 -0
  80. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  81. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  82. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  83. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/haproxy.cfg +0 -0
  84. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/install_deps.sh +0 -0
  85. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/objstore.yml +0 -0
  86. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/prometheus.yml +0 -0
  87. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/run_ssh.sh +0 -0
  88. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/set_db_config.sh +0 -0
  89. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  90. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/__init__.py +0 -0
  91. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  92. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/caching_node_monitor.py +0 -0
  93. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/cap_monitor.py +0 -0
  94. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  95. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/device_monitor.py +0 -0
  96. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/health_check_service.py +0 -0
  97. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/install_service.sh +0 -0
  98. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/log_agg_service.py +0 -0
  99. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/lvol_monitor.py +0 -0
  100. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  101. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  102. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  103. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/new_device_discovery.py +0 -0
  104. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/port_stat_collector.py +0 -0
  105. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/remove_service.sh +0 -0
  106. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/service_template.service +0 -0
  107. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  108. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  109. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  110. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  111. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  112. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/shell_utils.py +0 -0
  113. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/snode_client.py +0 -0
  114. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_core/utils.py +0 -0
  115. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/__init__.py +0 -0
  116. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/app.py +0 -0
  117. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/__init__.py +0 -0
  118. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  119. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  120. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  121. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  122. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  123. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/snode_ops.py +0 -0
  124. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  125. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  126. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  127. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_device.py +0 -0
  128. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  129. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  130. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  131. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  132. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  133. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/caching_node_app.py +0 -0
  134. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/caching_node_app_k8s.py +0 -0
  135. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/node_utils.py +0 -0
  136. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/node_webapp.py +0 -0
  137. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/snode_app.py +0 -0
  138. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/snode_app_k8s.py +0 -0
  139. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/delete.py +0 -0
  140. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/deploy.py +0 -0
  141. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  142. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  143. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/is_up.py +0 -0
  144. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/list_deps.py +0 -0
  145. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/rpac.yaml +0 -0
  146. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/static/tst.py +0 -0
  147. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  148. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-4.0.21 → sbcli_dev-4.0.23}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 4.0.21
3
+ Version: 4.0.23
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -1,5 +1,5 @@
1
1
  SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
2
- SIMPLY_BLOCK_VERSION=4.0.21
2
+ SIMPLY_BLOCK_VERSION=4.0.23
3
3
 
4
4
 
5
5
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main-dev
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 4.0.21
3
+ Version: 4.0.23
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -171,14 +171,6 @@ def _def_create_device_stack(device_obj, snode, force=False):
171
171
  logger.info(f"Adding {pt_name} to the subsystem")
172
172
  ret = rpc_client.nvmf_subsystem_add_ns(subsystem_nqn, pt_name)
173
173
 
174
- if hasattr(device_obj, 'jm_bdev') and device_obj.jm_bdev:
175
- ret = rpc_client.bdev_jm_create(device_obj.jm_bdev, device_obj.alceml_bdev,
176
- jm_cpu_mask=snode.jm_cpu_mask)
177
- if not ret:
178
- logger.error(f"Failed to create jm bdev: {device_obj.jm_bdev}")
179
- if not force:
180
- return False
181
-
182
174
  if snode.enable_test_device:
183
175
  device_obj.testing_bdev = test_name
184
176
  device_obj.alceml_bdev = alceml_name
@@ -820,29 +812,98 @@ def restart_jm_device(device_id, force=False, format_alceml=False):
820
812
  return False
821
813
 
822
814
  # add to jm raid
823
- if snode.jm_device and snode.jm_device.raid_bdev:
815
+ if snode.jm_device:
824
816
  rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password)
825
- bdevs_names = [d['name'] for d in rpc_client.get_bdevs()]
826
- jm_nvme_bdevs = []
827
- for dev in snode.nvme_devices:
828
- if dev.status != NVMeDevice.STATUS_ONLINE:
829
- continue
830
- dev_part = f"{dev.nvme_bdev[:-2]}p1"
831
- if dev_part in bdevs_names:
832
- if dev_part not in jm_nvme_bdevs:
833
- jm_nvme_bdevs.append(dev_part)
834
-
835
- if len(jm_nvme_bdevs) > 0:
836
- new_jm = storage_node_ops._create_jm_stack_on_raid(
837
- rpc_client, jm_nvme_bdevs, snode, after_restart=not format_alceml)
838
- if not new_jm:
839
- logger.error("failed to create jm stack")
817
+ if snode.jm_device.raid_bdev:
818
+ bdevs_names = [d['name'] for d in rpc_client.get_bdevs()]
819
+ jm_nvme_bdevs = []
820
+ for dev in snode.nvme_devices:
821
+ if dev.status != NVMeDevice.STATUS_ONLINE:
822
+ continue
823
+ dev_part = f"{dev.nvme_bdev[:-2]}p1"
824
+ if dev_part in bdevs_names:
825
+ if dev_part not in jm_nvme_bdevs:
826
+ jm_nvme_bdevs.append(dev_part)
827
+
828
+ if len(jm_nvme_bdevs) > 0:
829
+ new_jm = storage_node_ops._create_jm_stack_on_raid(
830
+ rpc_client, jm_nvme_bdevs, snode, after_restart=not format_alceml)
831
+ if not new_jm:
832
+ logger.error("failed to create jm stack")
833
+ return False
834
+
835
+ else:
836
+ snode = db_controller.get_storage_node_by_id(snode.get_id())
837
+ snode.jm_device = new_jm
838
+ snode.write_to_db(db_controller.kv_store)
839
+ set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
840
+ else:
841
+ nvme_bdev = jm_device.nvme_bdev
842
+ if snode.enable_test_device:
843
+ ret = rpc_client.bdev_passtest_create(jm_device.testing_bdev, jm_device.nvme_bdev)
844
+ if not ret:
845
+ logger.error(f"Failed to create passtest bdev {jm_device.testing_bdev}")
846
+ return False
847
+ nvme_bdev = jm_device.testing_bdev
848
+ alceml_cpu_mask = ""
849
+ alceml_worker_cpu_mask = ""
850
+
851
+ if snode.alceml_cpu_cores:
852
+ alceml_cpu_mask = utils.decimal_to_hex_power_of_2(snode.alceml_cpu_cores[snode.alceml_cpu_index])
853
+ snode.alceml_cpu_index = (snode.alceml_cpu_index + 1) % len(snode.alceml_cpu_cores)
854
+
855
+ if snode.alceml_worker_cpu_cores:
856
+ alceml_worker_cpu_mask = utils.decimal_to_hex_power_of_2(
857
+ snode.alceml_worker_cpu_cores[snode.alceml_worker_cpu_index])
858
+ snode.alceml_worker_cpu_index = (snode.alceml_worker_cpu_index + 1) % len(snode.alceml_worker_cpu_cores)
859
+
860
+ ret = rpc_client.bdev_alceml_create(jm_device.alceml_bdev, nvme_bdev, jm_device.get_id(),
861
+ pba_init_mode=1, alceml_cpu_mask=alceml_cpu_mask,
862
+ alceml_worker_cpu_mask=alceml_worker_cpu_mask)
863
+
864
+ if not ret:
865
+ logger.error(f"Failed to create alceml bdev: {jm_device.alceml_bdev}")
866
+ return False
867
+
868
+ jm_bdev = f"jm_{snode.get_id()}"
869
+ ret = rpc_client.bdev_jm_create(jm_bdev, jm_device.alceml_bdev, jm_cpu_mask=snode.jm_cpu_mask)
870
+ if not ret:
871
+ logger.error(f"Failed to create {jm_bdev}")
840
872
  return False
841
873
 
842
- else:
843
- snode = db_controller.get_storage_node_by_id(snode.get_id())
844
- snode.jm_device = new_jm
845
- snode.write_to_db(db_controller.kv_store)
874
+ if snode.enable_ha_jm:
875
+ # add pass through
876
+ pt_name = f"{jm_bdev}_PT"
877
+ ret = rpc_client.bdev_PT_NoExcl_create(pt_name, jm_bdev)
878
+ if not ret:
879
+ logger.error(f"Failed to create pt noexcl bdev: {pt_name}")
880
+ return False
881
+
882
+ subsystem_nqn = snode.subsystem + ":dev:" + jm_bdev
883
+ logger.info("creating subsystem %s", subsystem_nqn)
884
+ ret = rpc_client.subsystem_create(subsystem_nqn, 'sbcli-cn', jm_bdev)
885
+ IP = None
886
+ for iface in snode.data_nics:
887
+ if iface.ip4_address:
888
+ tr_type = iface.get_transport_type()
889
+ ret = rpc_client.transport_list()
890
+ found = False
891
+ if ret:
892
+ for ty in ret:
893
+ if ty['trtype'] == tr_type:
894
+ found = True
895
+ if found is False:
896
+ ret = rpc_client.transport_create(tr_type)
897
+ logger.info("adding listener for %s on IP %s" % (subsystem_nqn, iface.ip4_address))
898
+ ret = rpc_client.listeners_create(subsystem_nqn, tr_type, iface.ip4_address, "4420")
899
+ IP = iface.ip4_address
900
+ break
901
+ logger.info(f"add {pt_name} to subsystem")
902
+ ret = rpc_client.nvmf_subsystem_add_ns(subsystem_nqn, pt_name)
903
+ if not ret:
904
+ logger.error(f"Failed to add: {pt_name} to the subsystem: {subsystem_nqn}")
905
+ return False
906
+
846
907
  set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
847
908
 
848
909
  return True
@@ -167,7 +167,7 @@ def validate_add_lvol_func(name, size, host_id_or_name, pool_id_or_name,
167
167
 
168
168
  def _get_next_3_nodes(cluster_id, lvol_size=0):
169
169
  snodes = db_controller.get_storage_nodes_by_cluster_id(cluster_id)
170
- # online_nodes = []
170
+ online_nodes = []
171
171
  node_stats = {}
172
172
  for node in snodes:
173
173
  if node.status == node.STATUS_ONLINE:
@@ -182,7 +182,7 @@ def _get_next_3_nodes(cluster_id, lvol_size=0):
182
182
  # logger.warning(error)
183
183
  # continue
184
184
  #
185
- # online_nodes.append(node)
185
+ online_nodes.append(node)
186
186
  # node_stat_list = db_controller.get_node_stats(node, limit=1000)
187
187
  # combined_record = utils.sum_records(node_stat_list)
188
188
  node_st = {
@@ -539,9 +539,11 @@ def add_lvol_ha(name, size, host_id_or_name, ha_type, pool_id_or_name, use_comp,
539
539
  return ret, error
540
540
  lvol.nodes = nodes_ids
541
541
 
542
+ host_node = db_controller.get_storage_node_by_id(host_node.get_id())
542
543
  host_node.lvols.append(lvol.uuid)
543
544
  host_node.write_to_db(db_controller.kv_store)
544
545
 
546
+ pool = db_controller.get_pool_by_id(pool.get_id())
545
547
  lvol.pool_uuid = pool.id
546
548
  pool.lvols.append(lvol.uuid)
547
549
  pool.write_to_db(db_controller.kv_store)
@@ -852,11 +854,15 @@ def delete_lvol(id_or_name, force_delete=False):
852
854
  return False
853
855
 
854
856
  # remove from storage node
857
+ snode = db_controller.get_storage_node_by_id(lvol.node_id)
858
+ logger.debug(snode)
859
+ logger.debug(f"removing lvol: {lvol.get_id()} from node lvol list: {str(snode.lvols)}")
855
860
  if lvol.get_id() in snode.lvols:
856
861
  snode.lvols.remove(lvol.get_id())
857
862
  snode.write_to_db(db_controller.kv_store)
858
863
 
859
864
  # remove from pool
865
+ pool = db_controller.get_pool_by_id(lvol.pool_uuid)
860
866
  if lvol.get_id() in pool.lvols:
861
867
  pool.lvols.remove(lvol.get_id())
862
868
  pool.write_to_db(db_controller.kv_store)
@@ -106,8 +106,8 @@ def set_node_online(node):
106
106
  device_controller.device_set_online(dev.get_id())
107
107
 
108
108
  # set jm dev online
109
- if snode.jm_device.status == JMDevice.STATUS_UNAVAILABLE:
110
- device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
109
+ if node.jm_device.status == JMDevice.STATUS_UNAVAILABLE:
110
+ device_controller.set_jm_device_state(node.jm_device.get_id(), JMDevice.STATUS_ONLINE)
111
111
 
112
112
  # set node online
113
113
  storage_node_ops.set_node_status(node.get_id(), StorageNode.STATUS_ONLINE)
@@ -116,7 +116,7 @@ def set_node_online(node):
116
116
  def set_node_offline(node):
117
117
  if node.status != StorageNode.STATUS_UNREACHABLE:
118
118
  # set node unavailable
119
- storage_node_ops.set_node_status(snode.get_id(), StorageNode.STATUS_UNREACHABLE)
119
+ storage_node_ops.set_node_status(node.get_id(), StorageNode.STATUS_UNREACHABLE)
120
120
 
121
121
  # set devices unavailable
122
122
  for dev in node.nvme_devices:
@@ -124,8 +124,8 @@ def set_node_offline(node):
124
124
  device_controller.device_set_unavailable(dev.get_id())
125
125
 
126
126
  # set jm dev offline
127
- if snode.jm_device.status != JMDevice.STATUS_UNAVAILABLE:
128
- device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_UNAVAILABLE)
127
+ if node.jm_device.status != JMDevice.STATUS_UNAVAILABLE:
128
+ device_controller.set_jm_device_state(node.jm_device.get_id(), JMDevice.STATUS_UNAVAILABLE)
129
129
 
130
130
 
131
131
  logger.info("Starting node monitor")
@@ -65,10 +65,7 @@ def task_runner(task):
65
65
  task.write_to_db(db_controller.kv_store)
66
66
  return False
67
67
 
68
- task.function_params = {
69
- "migration": {
70
- "name": distr_name}
71
- }
68
+ task.function_params['migration'] = {"name": distr_name}
72
69
  task.write_to_db(db_controller.kv_store)
73
70
  time.sleep(3)
74
71
 
@@ -16,6 +16,7 @@ from simplyblock_core import constants, scripts, distr_controller
16
16
  from simplyblock_core import utils
17
17
  from simplyblock_core.controllers import lvol_controller, storage_events, snapshot_controller, device_events, \
18
18
  device_controller, tasks_controller, health_controller
19
+ from simplyblock_core.controllers.device_controller import set_jm_device_state
19
20
  from simplyblock_core.kv_store import DBController, KVStore
20
21
  from simplyblock_core import shell_utils
21
22
  from simplyblock_core.models.iface import IFace
@@ -743,7 +744,8 @@ def _prepare_cluster_devices_on_restart(snode):
743
744
  logger.error(f"Failed to add: {pt_name} to the subsystem: {subsystem_nqn}")
744
745
  return False
745
746
 
746
- return True
747
+ set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
748
+ return True
747
749
 
748
750
 
749
751
  def _connect_to_remote_devs(this_node):
@@ -10,9 +10,6 @@ from simplyblock_core import kv_store
10
10
  def token_required(f):
11
11
  @wraps(f)
12
12
  def decorated(*args, **kwargs):
13
- #TODO: added for e2e tests automation
14
- if request.method == "GET" and request.path.startswith("/cluster"):
15
- return f(*args, **kwargs)
16
13
  cluster_id = None
17
14
  cluster_secret = None
18
15
  if "Authorization" in request.headers:
@@ -55,24 +55,14 @@ def add_cluster():
55
55
  @bp.route('/cluster', methods=['GET'], defaults={'uuid': None})
56
56
  @bp.route('/cluster/<string:uuid>', methods=['GET'])
57
57
  def list_clusters(uuid):
58
- clusters_list = []
59
- if uuid:
60
- cl = db_controller.get_cluster_by_id(uuid)
61
- if cl:
62
- clusters_list.append(cl)
63
- else:
64
- return utils.get_response_error(f"Cluster not found: {uuid}", 404)
65
- else:
66
- cls = db_controller.get_clusters()
67
- if cls:
68
- clusters_list.extend(cls)
69
-
70
- data = []
71
- for cluster in clusters_list:
72
- d = cluster.get_clean_dict()
73
- d['status_code'] = cluster.get_status_code()
74
- data.append(d)
75
- return utils.get_response(data)
58
+ cluster_id = utils.get_cluster_id(request)
59
+ cluster = db_controller.get_cluster_by_id(cluster_id)
60
+ if not cluster:
61
+ return utils.get_response_error(f"Cluster not found: {cluster_id}", 404)
62
+
63
+ d = cluster.get_clean_dict()
64
+ d['status_code'] = cluster.get_status_code()
65
+ return utils.get_response(d)
76
66
 
77
67
 
78
68
  @bp.route('/cluster/capacity/<string:uuid>/history/<string:history>', methods=['GET'])
File without changes
File without changes
File without changes
File without changes