sbcli-pre 1.4.5__zip → 1.4.7__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/PKG-INFO +1 -1
  2. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/env_var +1 -1
  3. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/sbcli_pre.egg-info/PKG-INFO +1 -1
  4. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_cli/cli.py +8 -0
  5. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/caching_node_controller.py +82 -28
  6. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/lvol_controller.py +8 -2
  7. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/README.md +0 -0
  8. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/pyproject.toml +0 -0
  9. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/sbcli_pre.egg-info/SOURCES.txt +0 -0
  10. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/sbcli_pre.egg-info/dependency_links.txt +0 -0
  11. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/sbcli_pre.egg-info/entry_points.txt +0 -0
  12. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/sbcli_pre.egg-info/requires.txt +0 -0
  13. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/sbcli_pre.egg-info/top_level.txt +0 -0
  14. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/setup.cfg +0 -0
  15. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/setup.py +0 -0
  16. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_cli/main.py +0 -0
  17. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/__init__.py +0 -0
  18. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/cluster_ops.py +0 -0
  19. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/cnode_client.py +0 -0
  20. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/compute_node_ops.py +0 -0
  21. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/constants.py +0 -0
  22. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/__init__.py +0 -0
  23. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/cluster_events.py +0 -0
  24. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/device_controller.py +0 -0
  25. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/device_events.py +0 -0
  26. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/events_controller.py +0 -0
  27. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/health_controller.py +0 -0
  28. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/lvol_events.py +0 -0
  29. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/mgmt_events.py +0 -0
  30. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/pool_controller.py +0 -0
  31. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/pool_events.py +0 -0
  32. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  33. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/snapshot_events.py +0 -0
  34. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/storage_events.py +0 -0
  35. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/tasks_controller.py +0 -0
  36. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/controllers/tasks_events.py +0 -0
  37. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/distr_controller.py +0 -0
  38. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/kv_store.py +0 -0
  39. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/mgmt_node_ops.py +0 -0
  40. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/__init__.py +0 -0
  41. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/base_model.py +0 -0
  42. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/caching_node.py +0 -0
  43. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/cluster.py +0 -0
  44. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/compute_node.py +0 -0
  45. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/deployer.py +0 -0
  46. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/events.py +0 -0
  47. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/global_settings.py +0 -0
  48. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/iface.py +0 -0
  49. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/job_schedule.py +0 -0
  50. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/lvol_model.py +0 -0
  51. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/mgmt_node.py +0 -0
  52. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/nvme_device.py +0 -0
  53. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/pool.py +0 -0
  54. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/port_stat.py +0 -0
  55. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/snapshot.py +0 -0
  56. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/stats.py +0 -0
  57. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/models/storage_node.py +0 -0
  58. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/pci_utils.py +0 -0
  59. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/rpc_client.py +0 -0
  60. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/__init__.py +0 -0
  61. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  62. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  63. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  64. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/config_docker.sh +0 -0
  65. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboard.yml +0 -0
  66. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  67. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  68. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  69. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  70. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  71. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  72. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/datasource.yml +0 -0
  73. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/db_config_double.sh +0 -0
  74. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/db_config_single.sh +0 -0
  75. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  76. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  77. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  78. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/haproxy.cfg +0 -0
  79. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/install_deps.sh +0 -0
  80. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/objstore.yml +0 -0
  81. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/prometheus.yml +0 -0
  82. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/run_ssh.sh +0 -0
  83. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/set_db_config.sh +0 -0
  84. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  85. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/__init__.py +0 -0
  86. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/caching_node_monitor.py +0 -0
  87. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/cap_monitor.py +0 -0
  88. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  89. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/device_monitor.py +0 -0
  90. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/distr_event_collector.py +0 -0
  91. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/health_check_service.py +0 -0
  92. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/install_service.sh +0 -0
  93. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/log_agg_service.py +0 -0
  94. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/lvol_monitor.py +0 -0
  95. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  96. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  97. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/port_stat_collector.py +0 -0
  98. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/remove_service.sh +0 -0
  99. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/service_template.service +0 -0
  100. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/storage_node_monitor.py +0 -0
  101. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  102. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  103. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/shell_utils.py +0 -0
  104. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/snode_client.py +0 -0
  105. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/storage_node_ops.py +0 -0
  106. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_core/utils.py +0 -0
  107. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/__init__.py +0 -0
  108. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/app.py +0 -0
  109. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/auth_middleware.py +0 -0
  110. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/__init__.py +0 -0
  111. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  112. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  113. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  114. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  115. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  116. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/snode_ops.py +0 -0
  117. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  118. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  119. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  120. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_device.py +0 -0
  121. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  122. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  123. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  124. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  125. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  126. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/caching_node_app.py +0 -0
  127. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/caching_node_app_k8s.py +0 -0
  128. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/node_utils.py +0 -0
  129. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/node_webapp.py +0 -0
  130. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/snode_app.py +0 -0
  131. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/delete.py +0 -0
  132. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/deploy.py +0 -0
  133. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  134. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  135. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/is_up.py +0 -0
  136. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/list_deps.py +0 -0
  137. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/rpac.yaml +0 -0
  138. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/static/tst.py +0 -0
  139. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/templates/deploy_spdk.yaml.j2 +0 -0
  140. {sbcli_pre-1.4.5 → sbcli_pre-1.4.7}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-pre
3
- Version: 1.4.5
3
+ Version: 1.4.7
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-pre
2
- SIMPLY_BLOCK_VERSION=1.4.5
2
+ SIMPLY_BLOCK_VERSION=1.4.7
3
3
 
4
4
 
5
5
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:pre-release
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-pre
3
- Version: 1.4.5
3
+ Version: 1.4.7
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -608,6 +608,12 @@ class CLIWrapper:
608
608
  sub_command = self.add_sub_command(subparser, 'recreate', 'recreate Caching node bdevs')
609
609
  sub_command.add_argument("node_id", help='Caching node UUID')
610
610
 
611
+ sub_command = self.add_sub_command(subparser, 'get-lvol-stats', 'Get LVol stats')
612
+ sub_command.add_argument("node_id", help='Caching node UUID')
613
+ sub_command.add_argument("lvol_id", help='LVol UUID')
614
+ sub_command.add_argument("--duration", help='collection duration in seconds, default: 5', type=int, default=5)
615
+
616
+
611
617
  def init_parser(self):
612
618
  self.parser = argparse.ArgumentParser(prog=constants.SIMPLY_BLOCK_CLI_NAME, description='SimplyBlock management CLI')
613
619
  self.parser.add_argument("-d", '--debug', help='Print debug messages', required=False, action='store_true')
@@ -1104,6 +1110,8 @@ class CLIWrapper:
1104
1110
  if sub_command == "recreate":
1105
1111
  ret = caching_node_controller.recreate(args.node_id)
1106
1112
 
1113
+ if sub_command == "get-lvol-stats":
1114
+ ret = caching_node_controller.get_lvol_stats(args.node_id, args.lvol_id, args.duration)
1107
1115
 
1108
1116
  else:
1109
1117
  self.parser.print_help()
@@ -211,43 +211,57 @@ def add_node(cluster_id, node_ip, iface_name, data_nics_list, spdk_cpu_mask, spd
211
211
 
212
212
  ssd_size = ssd_dev.size
213
213
  supported_ssd_size = mem * 100 / 2.25
214
+ split_factor = math.ceil(ssd_size/supported_ssd_size)
214
215
 
215
216
  logger.info(f"Supported SSD size: {utils.humanbytes(supported_ssd_size)}")
216
217
  logger.info(f"SSD size: {utils.humanbytes(ssd_size)}")
217
218
 
219
+ cache_size = 0
220
+ cache_bdev = None
218
221
  if supported_ssd_size < ssd_size:
219
- logger.info(f"SSD size is bigger than the supported size, creating partition")
220
-
221
- nbd_device = rpc_client.nbd_start_disk(ssd_dev.nvme_bdev)
222
- time.sleep(3)
223
- if not nbd_device:
224
- logger.error(f"Failed to start nbd dev")
225
- return False
226
-
227
- jm_percent = int((supported_ssd_size/ssd_size) * 100)
228
- result, error = cnode_api.make_gpt_partitions(nbd_device, jm_percent)
229
- if error:
230
- logger.error(f"Failed to make partitions")
231
- logger.error(error)
232
- return False
233
- time.sleep(3)
234
- rpc_client.nbd_stop_disk(nbd_device)
235
- time.sleep(1)
236
- rpc_client.bdev_nvme_detach_controller(ssd_dev.nvme_controller)
237
- time.sleep(1)
238
- rpc_client.bdev_nvme_controller_attach(ssd_dev.nvme_controller, ssd_dev.pcie_address)
239
- time.sleep(1)
240
- rpc_client.bdev_examine(ssd_dev.nvme_bdev)
241
- time.sleep(1)
242
-
243
- cache_bdev = f"{ssd_dev.nvme_bdev}p1"
244
- cache_size = int(supported_ssd_size)
245
-
222
+ logger.info(f"SSD size is bigger than the supported size, will use split bdev: {split_factor}")
223
+ ret = rpc_client.bdev_split(ssd_dev.nvme_bdev, split_factor)
224
+ cache_bdev = ret[0]
225
+ cache_size = int(ssd_dev.size/split_factor)
226
+ snode.cache_split_factor = split_factor
246
227
  else:
247
-
228
+ snode.cache_split_factor = 0
248
229
  cache_bdev = ssd_dev.nvme_bdev
249
230
  cache_size = ssd_dev.size
250
231
 
232
+ # if supported_ssd_size < ssd_size:
233
+ # logger.info(f"SSD size is bigger than the supported size, creating partition")
234
+ #
235
+ # nbd_device = rpc_client.nbd_start_disk(ssd_dev.nvme_bdev)
236
+ # time.sleep(3)
237
+ # if not nbd_device:
238
+ # logger.error(f"Failed to start nbd dev")
239
+ # return False
240
+ #
241
+ # jm_percent = int((supported_ssd_size/ssd_size) * 100)
242
+ # result, error = cnode_api.make_gpt_partitions(nbd_device, jm_percent)
243
+ # if error:
244
+ # logger.error(f"Failed to make partitions")
245
+ # logger.error(error)
246
+ # return False
247
+ # time.sleep(3)
248
+ # rpc_client.nbd_stop_disk(nbd_device)
249
+ # time.sleep(1)
250
+ # rpc_client.bdev_nvme_detach_controller(ssd_dev.nvme_controller)
251
+ # time.sleep(1)
252
+ # rpc_client.bdev_nvme_controller_attach(ssd_dev.nvme_controller, ssd_dev.pcie_address)
253
+ # time.sleep(1)
254
+ # rpc_client.bdev_examine(ssd_dev.nvme_bdev)
255
+ # time.sleep(1)
256
+ #
257
+ # cache_bdev = f"{ssd_dev.nvme_bdev}p1"
258
+ # cache_size = int(supported_ssd_size)
259
+ #
260
+ # else:
261
+ #
262
+ # cache_bdev = ssd_dev.nvme_bdev
263
+ # cache_size = ssd_dev.size
264
+
251
265
  logger.info(f"Cache size: {utils.humanbytes(cache_size)}")
252
266
 
253
267
  snode.cache_bdev = cache_bdev
@@ -717,3 +731,43 @@ def remove_node(node_id, force=False):
717
731
 
718
732
  snode.remove(db_controller.kv_store)
719
733
  logger.info("done")
734
+
735
+
736
+ def get_lvol_stats(caching_node_id, lvol_id, duration=5):
737
+ db_controller = DBController()
738
+ cnode = db_controller.get_caching_node_by_id(caching_node_id)
739
+ if not cnode:
740
+ logger.info(f"Caching node uuid not found: {caching_node_id}")
741
+ cnode = db_controller.get_caching_node_by_hostname(caching_node_id)
742
+ if not cnode:
743
+ logger.error("Caching node not found")
744
+ return False
745
+
746
+ lvol = db_controller.get_lvol_by_id(lvol_id)
747
+ if not lvol:
748
+ logger.error(f"LVol not found: {lvol_id}")
749
+ return False
750
+
751
+ rpc_client = RPCClient(
752
+ cnode.mgmt_ip, cnode.rpc_port,
753
+ cnode.rpc_username, cnode.rpc_password,
754
+ timeout=3, retry=2)
755
+
756
+ ocf_bdev = None
757
+ for lv in cnode.lvols:
758
+ if lv.lvol_id == lvol.get_id():
759
+ ocf_bdev = lv.ocf_bdev
760
+
761
+ if not ocf_bdev:
762
+ logger.error(f"LVol is not connected to caching node")
763
+ return False
764
+
765
+ logger.info("Getting bdev stats: %s", ocf_bdev)
766
+
767
+ while True:
768
+ stats_dict = rpc_client.get_lvol_stats(ocf_bdev)
769
+ print(datetime.datetime.now())
770
+ print(json.dumps(stats_dict, indent=2))
771
+ time.sleep(duration)
772
+
773
+ return True
@@ -9,9 +9,8 @@ import uuid
9
9
  from typing import Tuple
10
10
 
11
11
  from simplyblock_core import utils, constants, distr_controller
12
- from simplyblock_core.controllers import snapshot_controller, pool_controller, lvol_events
12
+ from simplyblock_core.controllers import snapshot_controller, pool_controller, lvol_events, caching_node_controller
13
13
  from simplyblock_core.kv_store import DBController
14
- from simplyblock_core.models.cluster import Cluster
15
14
  from simplyblock_core.models.nvme_device import NVMeDevice
16
15
  from simplyblock_core.models.pool import Pool
17
16
  from simplyblock_core.models.lvol_model import LVol
@@ -1016,6 +1015,13 @@ def delete_lvol(id_or_name, force_delete=False):
1016
1015
  lvol.status = LVol.STATUS_IN_DELETION
1017
1016
  lvol.write_to_db(db_controller.kv_store)
1018
1017
 
1018
+ # disconnect from caching nodes:
1019
+ cnodes = db_controller.get_caching_nodes()
1020
+ for cnode in cnodes:
1021
+ for lv in cnode.lvols:
1022
+ if lv.lvol_id == lvol.get_id():
1023
+ caching_node_controller.disconnect(cnode.get_id(), lvol.get_id())
1024
+
1019
1025
  if lvol.ha_type == 'single':
1020
1026
  ret = delete_lvol_from_node(lvol.get_id(), lvol.node_id)
1021
1027
  if not ret:
File without changes
File without changes
File without changes
File without changes