sbcli-dev 4.0.64__zip → 4.0.66__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.64 → sbcli_dev-4.0.66}/PKG-INFO +1 -1
  2. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/env_var +1 -1
  3. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_cli/cli.py +4 -2
  5. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/constants.py +2 -2
  6. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/device_controller.py +1 -1
  7. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/health_controller.py +11 -9
  8. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/distr_controller.py +2 -0
  9. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/job_schedule.py +1 -1
  10. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/storage_node.py +1 -0
  11. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/rpc_client.py +6 -0
  12. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_failed_migration.py +6 -5
  13. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_migration.py +5 -5
  14. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_new_dev_migration.py +5 -5
  15. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/storage_node_ops.py +70 -38
  16. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/snode_ops_k8s.py +10 -0
  17. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_storage_node.py +4 -1
  18. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +5 -0
  19. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/README.md +0 -0
  20. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/pyproject.toml +0 -0
  21. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  22. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  23. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/entry_points.txt +0 -0
  24. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/requires.txt +0 -0
  25. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/top_level.txt +0 -0
  26. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/setup.cfg +0 -0
  27. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/setup.py +0 -0
  28. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_cli/main.py +0 -0
  29. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/__init__.py +0 -0
  30. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/cluster_ops.py +0 -0
  31. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/cnode_client.py +0 -0
  32. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/compute_node_ops.py +0 -0
  33. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/__init__.py +0 -0
  34. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  35. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/cluster_events.py +0 -0
  36. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/device_events.py +0 -0
  37. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/events_controller.py +0 -0
  38. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/lvol_controller.py +0 -0
  39. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/lvol_events.py +0 -0
  40. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/mgmt_events.py +0 -0
  41. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/pool_controller.py +0 -0
  42. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/pool_events.py +0 -0
  43. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  44. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/snapshot_events.py +0 -0
  45. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/storage_events.py +0 -0
  46. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/tasks_controller.py +0 -0
  47. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/controllers/tasks_events.py +0 -0
  48. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/kv_store.py +0 -0
  49. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/mgmt_node_ops.py +0 -0
  50. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/__init__.py +0 -0
  51. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/base_model.py +0 -0
  52. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/caching_node.py +0 -0
  53. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/cluster.py +0 -0
  54. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/compute_node.py +0 -0
  55. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/deployer.py +0 -0
  56. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/events.py +0 -0
  57. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/global_settings.py +0 -0
  58. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/iface.py +0 -0
  59. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/lvol_model.py +0 -0
  60. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/mgmt_node.py +0 -0
  61. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/nvme_device.py +0 -0
  62. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/pool.py +0 -0
  63. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/port_stat.py +0 -0
  64. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/snapshot.py +0 -0
  65. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/models/stats.py +0 -0
  66. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/pci_utils.py +0 -0
  67. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/__init__.py +0 -0
  68. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  69. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  70. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  71. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/config_docker.sh +0 -0
  72. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboard.yml +0 -0
  73. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  74. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  75. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  76. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  77. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  78. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  79. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/datasource.yml +0 -0
  80. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/db_config_double.sh +0 -0
  81. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/db_config_single.sh +0 -0
  82. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  83. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  84. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  85. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/haproxy.cfg +0 -0
  86. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/install_deps.sh +0 -0
  87. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/objstore.yml +0 -0
  88. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/prometheus.yml +0 -0
  89. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/run_ssh.sh +0 -0
  90. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/set_db_config.sh +0 -0
  91. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  92. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/__init__.py +0 -0
  93. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  94. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/caching_node_monitor.py +0 -0
  95. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/cap_monitor.py +0 -0
  96. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  97. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/device_monitor.py +0 -0
  98. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/health_check_service.py +0 -0
  99. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/install_service.sh +0 -0
  100. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/log_agg_service.py +0 -0
  101. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/lvol_monitor.py +0 -0
  102. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  103. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  104. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  105. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/new_device_discovery.py +0 -0
  106. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/port_stat_collector.py +0 -0
  107. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/remove_service.sh +0 -0
  108. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/service_template.service +0 -0
  109. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  110. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/storage_node_monitor.py +0 -0
  111. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  112. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  113. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/shell_utils.py +0 -0
  114. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/snode_client.py +0 -0
  115. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_core/utils.py +0 -0
  116. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/__init__.py +0 -0
  117. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/app.py +0 -0
  118. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/auth_middleware.py +0 -0
  119. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/__init__.py +0 -0
  120. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  121. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  122. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  123. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  124. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  125. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/snode_ops.py +0 -0
  126. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  127. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  128. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  129. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_device.py +0 -0
  130. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  131. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  132. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  133. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  134. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/caching_node_app.py +0 -0
  135. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/caching_node_app_k8s.py +0 -0
  136. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/node_utils.py +0 -0
  137. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/node_webapp.py +0 -0
  138. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/snode_app.py +0 -0
  139. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/snode_app_k8s.py +0 -0
  140. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/delete.py +0 -0
  141. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy.py +0 -0
  142. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  143. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  144. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/is_up.py +0 -0
  145. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/list_deps.py +0 -0
  146. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/rpac.yaml +0 -0
  147. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/static/tst.py +0 -0
  148. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-4.0.64 → sbcli_dev-4.0.66}/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.64
3
+ Version: 4.0.66
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.64
2
+ SIMPLY_BLOCK_VERSION=4.0.66
3
3
 
4
4
 
5
5
  SIMPLY_BLOCK_DOCKER_IMAGE=simplyblock/simplyblock:main
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 4.0.64
3
+ Version: 4.0.66
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -57,6 +57,7 @@ class CLIWrapper:
57
57
  sub_command.add_argument("--iobuf_large_bufsize", help='bdev_set_options param', dest='large_bufsize', type=int, default=0)
58
58
  sub_command.add_argument("--enable-test-device", help='Enable creation of test device', action='store_true')
59
59
  sub_command.add_argument("--disable-ha-jm", help='Disable HA JM for distrib creation', action='store_false', dest='enable_ha_jm', default=True)
60
+ sub_command.add_argument("--namespace", help='k8s namespace to deploy on',)
60
61
 
61
62
 
62
63
  # delete storage node
@@ -693,7 +694,7 @@ class CLIWrapper:
693
694
  if args.debug:
694
695
  self.logger.setLevel(logging.DEBUG)
695
696
  else:
696
- self.logger.setLevel(constants.LOG_LEVEL)
697
+ self.logger.setLevel(logging.INFO)
697
698
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
698
699
 
699
700
  args_dict = args.__dict__
@@ -739,6 +740,7 @@ class CLIWrapper:
739
740
  enable_test_device = args.enable_test_device
740
741
  enable_ha_jm = args.enable_ha_jm
741
742
  number_of_distribs = args.number_of_distribs
743
+ namespace = args.namespace
742
744
 
743
745
  out = storage_ops.add_node(
744
746
  cluster_id=cluster_id,
@@ -757,7 +759,7 @@ class CLIWrapper:
757
759
  jm_percent=jm_percent,
758
760
  number_of_devices=number_of_devices,
759
761
  enable_test_device=enable_test_device,
760
- namespace=None,
762
+ namespace=namespace,
761
763
  number_of_distribs=number_of_distribs,
762
764
  enable_ha_jm=enable_ha_jm
763
765
  )
@@ -6,8 +6,8 @@ KVD_DB_FILE_PATH = '/etc/foundationdb/fdb.cluster'
6
6
  KVD_DB_TIMEOUT_MS = 10000
7
7
  SPK_DIR = '/home/ec2-user/spdk'
8
8
  RPC_HTTP_PROXY_PORT = 8080
9
- LOG_LEVEL = logging.INFO
10
- LOG_WEB_DEBUG = False
9
+ LOG_LEVEL = logging.DEBUG
10
+ LOG_WEB_DEBUG = True
11
11
 
12
12
  INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
13
13
 
@@ -818,7 +818,7 @@ def restart_jm_device(device_id, force=False, format_alceml=False):
818
818
  bdevs_names = [d['name'] for d in rpc_client.get_bdevs()]
819
819
  jm_nvme_bdevs = []
820
820
  for dev in snode.nvme_devices:
821
- if dev.status != NVMeDevice.STATUS_ONLINE:
821
+ if dev.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_NEW]:
822
822
  continue
823
823
  dev_part = f"{dev.nvme_bdev[:-2]}p1"
824
824
  if dev_part in bdevs_names:
@@ -40,15 +40,15 @@ def check_cluster(cluster_id):
40
40
  "Status": "ok" if ret else "failed"
41
41
  })
42
42
 
43
- for lvol in db_controller.get_lvols(cluster_id):
44
- ret = check_lvol(lvol.get_id())
45
- result &= ret
46
- print("*" * 100)
47
- data.append({
48
- "Kind": "LVol",
49
- "UUID": lvol.get_id(),
50
- "Status": "ok" if ret else "failed"
51
- })
43
+ for lvol in db_controller.get_lvols(cluster_id):
44
+ ret = check_lvol(lvol.get_id())
45
+ result &= ret
46
+ print("*" * 100)
47
+ data.append({
48
+ "Kind": "LVol",
49
+ "UUID": lvol.get_id(),
50
+ "Status": "ok" if ret else "failed"
51
+ })
52
52
  print(utils.print_table(data))
53
53
  return result
54
54
 
@@ -163,6 +163,8 @@ def check_node(node_id, with_devices=True):
163
163
  if dev.status in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE]:
164
164
  ret = check_device(dev.get_id())
165
165
  node_devices_check &= ret
166
+ else:
167
+ logger.info(f"Device skipped: {dev.get_id()} status: {dev.status}")
166
168
  print("*" * 100)
167
169
 
168
170
  logger.info(f"Node remote device: {len(snode.remote_devices)}")
@@ -35,6 +35,8 @@ def send_node_status_event(node, node_status, target_node=None):
35
35
 
36
36
 
37
37
  def send_dev_status_event(device, dev_status, target_node=None):
38
+ if dev_status == NVMeDevice.STATUS_NEW:
39
+ return
38
40
  db_controller = DBController()
39
41
  storage_ID = device.cluster_device_order
40
42
  node_status_event = {
@@ -9,7 +9,7 @@ class JobSchedule(BaseModel):
9
9
 
10
10
  STATUS_NEW = 'new'
11
11
  STATUS_RUNNING = 'running'
12
- # STATUS_RETRYING = 'retrying'
12
+ STATUS_SUSPENDED = 'suspended'
13
13
  STATUS_DONE = 'done'
14
14
 
15
15
  FN_DEV_RESTART = "device_restart"
@@ -79,6 +79,7 @@ class StorageNode(BaseModel):
79
79
  "lvstore": {"type": str, 'default': ""},
80
80
  "raid": {"type": str, 'default': ""},
81
81
  "lvstore_stack": {"type": List[dict], 'default': []},
82
+ "jm_vuid": {"type": int, "default": 0},
82
83
 
83
84
  # spdk params
84
85
  "spdk_cpu_mask": {"type": str, "default": ""},
@@ -837,3 +837,9 @@ class RPCClient:
837
837
  "file": file,
838
838
  }
839
839
  return self._request("bdev_lvs_dump", params)
840
+
841
+ def jc_explicit_synchronization(self, jm_vuid):
842
+ params = {
843
+ "jm_vuid": jm_vuid
844
+ }
845
+ return self._request("jc_explicit_synchronization", params)
@@ -32,14 +32,14 @@ def task_runner(task):
32
32
  task.write_to_db(db_controller.kv_store)
33
33
  return True
34
34
 
35
- if task.status == JobSchedule.STATUS_NEW:
35
+ if task.status in [JobSchedule.STATUS_NEW ,JobSchedule.STATUS_SUSPENDED]:
36
36
  task.status = JobSchedule.STATUS_RUNNING
37
37
  task.write_to_db(db_controller.kv_store)
38
38
  tasks_events.task_updated(task)
39
39
 
40
40
  if snode.status != StorageNode.STATUS_ONLINE:
41
41
  task.function_result = "node is not online, retrying"
42
- task.status = JobSchedule.STATUS_NEW
42
+ task.status = JobSchedule.STATUS_SUSPENDED
43
43
  task.retry += 1
44
44
  task.write_to_db(db_controller.kv_store)
45
45
  return False
@@ -62,6 +62,7 @@ def task_runner(task):
62
62
  logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
63
63
  task.function_result = "Failed to start device migration task"
64
64
  task.retry += 1
65
+ task.status = JobSchedule.STATUS_SUSPENDED
65
66
  task.write_to_db(db_controller.kv_store)
66
67
  return False
67
68
 
@@ -83,7 +84,7 @@ def task_runner(task):
83
84
  task.status = JobSchedule.STATUS_DONE
84
85
  else:
85
86
  task.function_result = "Failed to complete migration, retrying"
86
- task.status = JobSchedule.STATUS_NEW
87
+ task.status = JobSchedule.STATUS_SUSPENDED
87
88
  task.retry += 1
88
89
  del task.function_params["migration"]
89
90
  task.write_to_db(db_controller.kv_store)
@@ -91,7 +92,7 @@ def task_runner(task):
91
92
 
92
93
  elif migration_status == "failed":
93
94
  task.function_result = "Failed to complete migration, retrying"
94
- task.status = JobSchedule.STATUS_NEW
95
+ task.status = JobSchedule.STATUS_SUSPENDED
95
96
  task.retry += 1
96
97
  del task.function_params["migration"]
97
98
  task.write_to_db(db_controller.kv_store)
@@ -131,7 +132,7 @@ while True:
131
132
  for task in tasks:
132
133
  delay_seconds = 5
133
134
  if task.function_name == JobSchedule.FN_FAILED_DEV_MIG:
134
- if task.status == JobSchedule.STATUS_NEW:
135
+ if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
135
136
  active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
136
137
  if active_task:
137
138
  logger.info("task found on same node, retry")
@@ -29,7 +29,7 @@ def task_runner(task):
29
29
  task.write_to_db(db_controller.kv_store)
30
30
  return True
31
31
 
32
- if task.status == JobSchedule.STATUS_NEW:
32
+ if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
33
33
  task.status = JobSchedule.STATUS_RUNNING
34
34
  task.write_to_db(db_controller.kv_store)
35
35
  tasks_events.task_updated(task)
@@ -37,7 +37,7 @@ def task_runner(task):
37
37
 
38
38
  if snode.status != StorageNode.STATUS_ONLINE:
39
39
  task.function_result = "node is not online, retrying"
40
- task.status = JobSchedule.STATUS_NEW
40
+ task.status = JobSchedule.STATUS_SUSPENDED
41
41
  task.retry += 1
42
42
  task.write_to_db(db_controller.kv_store)
43
43
  return False
@@ -56,7 +56,7 @@ def task_runner(task):
56
56
 
57
57
  if not all_devs_online:
58
58
  task.function_result = "Some devs are offline, retrying"
59
- task.status = JobSchedule.STATUS_NEW
59
+ task.status = JobSchedule.STATUS_SUSPENDED
60
60
  task.retry += 1
61
61
  task.write_to_db(db_controller.kv_store)
62
62
  return False
@@ -90,7 +90,7 @@ def task_runner(task):
90
90
  if st['error'] == 1:
91
91
  task.function_result = "mig completed with errors, retrying"
92
92
  task.retry += 1
93
- task.status = JobSchedule.STATUS_NEW
93
+ task.status = JobSchedule.STATUS_SUSPENDED
94
94
  del task.function_params['migration']
95
95
  else:
96
96
  task.status = JobSchedule.STATUS_DONE
@@ -122,7 +122,7 @@ while True:
122
122
  for task in tasks:
123
123
  delay_seconds = 5
124
124
  if task.function_name == JobSchedule.FN_DEV_MIG:
125
- if task.status == JobSchedule.STATUS_NEW:
125
+ if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
126
126
  active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
127
127
  if active_task:
128
128
  logger.info("task found on same node, retry")
@@ -32,7 +32,7 @@ def task_runner(task):
32
32
  task.write_to_db(db_controller.kv_store)
33
33
  return True
34
34
 
35
- if task.status == JobSchedule.STATUS_NEW:
35
+ if task.status in [JobSchedule.STATUS_NEW ,JobSchedule.STATUS_SUSPENDED]:
36
36
  task.status = JobSchedule.STATUS_RUNNING
37
37
  task.write_to_db(db_controller.kv_store)
38
38
  tasks_events.task_updated(task)
@@ -40,7 +40,7 @@ def task_runner(task):
40
40
  if snode.status != StorageNode.STATUS_ONLINE:
41
41
  task.function_result = "node is not online, retrying"
42
42
  task.retry += 1
43
- task.status = JobSchedule.STATUS_NEW
43
+ task.status = JobSchedule.STATUS_SUSPENDED
44
44
  task.write_to_db(db_controller.kv_store)
45
45
  return False
46
46
 
@@ -56,7 +56,7 @@ def task_runner(task):
56
56
  if not all_devs_online:
57
57
  task.function_result = "Some devs are offline, retrying"
58
58
  task.retry += 1
59
- task.status = JobSchedule.STATUS_NEW
59
+ task.status = JobSchedule.STATUS_SUSPENDED
60
60
  task.write_to_db(db_controller.kv_store)
61
61
  return False
62
62
 
@@ -94,7 +94,7 @@ def task_runner(task):
94
94
  if res_data['error'] == 1:
95
95
  task.function_result = "mig completed with errors, retrying"
96
96
  task.retry += 1
97
- task.status = JobSchedule.STATUS_NEW
97
+ task.status = JobSchedule.STATUS_SUSPENDED
98
98
  del task.function_params['migration']
99
99
  else:
100
100
  task.function_result = "Done"
@@ -143,7 +143,7 @@ while True:
143
143
  for task in tasks:
144
144
  delay_seconds = 5
145
145
  if task.function_name == JobSchedule.FN_NEW_DEV_MIG:
146
- if task.status == JobSchedule.STATUS_NEW:
146
+ if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
147
147
  active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
148
148
  if active_task:
149
149
  logger.info("task found on same node, retry")
@@ -539,7 +539,7 @@ def _create_device_partitions(rpc_client, nvme, snode, num_partitions_per_dev, j
539
539
  return True
540
540
 
541
541
 
542
- def _prepare_cluster_devices_partitions(snode, devices):
542
+ def _prepare_cluster_devices_partitions(snode, devices, without_jm=False):
543
543
  db_controller = DBController()
544
544
  rpc_client = RPCClient(
545
545
  snode.mgmt_ip, snode.rpc_port,
@@ -594,17 +594,20 @@ def _prepare_cluster_devices_partitions(snode, devices):
594
594
  if not jm_device:
595
595
  logger.error(f"Failed to create JM device")
596
596
  return False
597
+ if without_jm:
598
+ jm_device.status = JMDevice.STATUS_REMOVED
597
599
  snode.jm_device = jm_device
598
600
 
599
601
  return True
600
602
 
601
603
 
602
- def _prepare_cluster_devices_jm_on_dev(snode, devices):
604
+ def _prepare_cluster_devices_jm_on_dev(snode, devices, without_jm=False):
603
605
  db_controller = DBController()
604
606
 
605
- jm_device = devices[0]
606
607
  # Set device cluster order
607
608
  dev_order = get_next_cluster_device_order(db_controller, snode.cluster_id)
609
+
610
+ jm_device = devices[0]
608
611
  for index, nvme in enumerate(devices):
609
612
  if nvme.size < jm_device.size:
610
613
  jm_device = nvme
@@ -624,6 +627,8 @@ def _prepare_cluster_devices_jm_on_dev(snode, devices):
624
627
  if not jm_device:
625
628
  logger.error(f"Failed to create JM device")
626
629
  return False
630
+ if without_jm:
631
+ jm_device.status = JMDevice.STATUS_REMOVED
627
632
  snode.jm_device = jm_device
628
633
  else:
629
634
  new_device = _create_storage_device_stack(rpc_client, nvme, snode, after_restart=False)
@@ -651,7 +656,8 @@ def _prepare_cluster_devices_on_restart(snode):
651
656
 
652
657
  for index, nvme in enumerate(snode.nvme_devices):
653
658
 
654
- if nvme.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE, NVMeDevice.STATUS_READONLY]:
659
+ if nvme.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE,
660
+ NVMeDevice.STATUS_READONLY, NVMeDevice.STATUS_NEW]:
655
661
  logger.debug(f"Device is skipped: {nvme.get_id()}, status: {nvme.status}")
656
662
  continue
657
663
 
@@ -659,11 +665,14 @@ def _prepare_cluster_devices_on_restart(snode):
659
665
  if not dev:
660
666
  logger.error(f"Failed to create dev stack {nvme.get_id()}")
661
667
  return False
662
- nvme.status = NVMeDevice.STATUS_ONLINE
663
- device_events.device_restarted(dev)
668
+ if nvme.status == NVMeDevice.STATUS_ONLINE:
669
+ device_events.device_restarted(dev)
664
670
 
665
671
  # prepare JM device
666
672
  jm_device = snode.jm_device
673
+ if jm_device is None or jm_device.status == JMDevice.STATUS_REMOVED:
674
+ return True
675
+
667
676
  if jm_device.jm_nvme_bdev_list:
668
677
  all_bdevs_found = True
669
678
  for bdev_name in jm_device.jm_nvme_bdev_list:
@@ -1480,6 +1489,8 @@ def restart_storage_node(
1480
1489
  'net_type': device['net_type']}))
1481
1490
  snode.data_nics = data_nics
1482
1491
  snode.hostname = node_info['hostname']
1492
+ else:
1493
+ node_ip = None
1483
1494
 
1484
1495
  logger.info(f"Restarting Storage node: {snode.mgmt_ip}")
1485
1496
  snode_api = SNodeClient(snode.api_endpoint, timeout=5*60, retry=3)
@@ -1675,6 +1686,7 @@ def restart_storage_node(
1675
1686
  known_devices_sn = []
1676
1687
  devices_sn = [d.serial_number for d in nvme_devs]
1677
1688
  for db_dev in snode.nvme_devices:
1689
+ # if db_dev.status != NVMeDevice.STATUS_NEW:
1678
1690
  known_devices_sn.append(db_dev.serial_number)
1679
1691
  if db_dev.status == NVMeDevice.STATUS_FAILED_AND_MIGRATED:
1680
1692
  continue
@@ -1703,9 +1715,9 @@ def restart_storage_node(
1703
1715
  if node_ip:
1704
1716
  # prepare devices on new node
1705
1717
  if snode.num_partitions_per_dev == 0 or snode.jm_percent == 0:
1706
- ret = _prepare_cluster_devices_jm_on_dev(snode, nvme_devs)
1718
+ ret = _prepare_cluster_devices_jm_on_dev(snode, nvme_devs, without_jm=False)
1707
1719
  else:
1708
- ret = _prepare_cluster_devices_partitions(snode, nvme_devs)
1720
+ ret = _prepare_cluster_devices_partitions(snode, nvme_devs, without_jm=False)
1709
1721
  if not ret:
1710
1722
  logger.error("Failed to prepare cluster devices")
1711
1723
  # return False
@@ -2059,6 +2071,9 @@ def resume_storage_node(node_id):
2059
2071
  logger.info("Connecting to remote devices")
2060
2072
  snode = db_controller.get_storage_node_by_id(node_id)
2061
2073
  snode.remote_devices = _connect_to_remote_devs(snode)
2074
+ if snode.enable_ha_jm:
2075
+ snode.remote_jm_devices = _connect_to_remote_jm_devs(snode)
2076
+
2062
2077
  snode.write_to_db(db_controller.kv_store)
2063
2078
 
2064
2079
  rpc_client = RPCClient(
@@ -2655,7 +2670,7 @@ def get_next_ha_jms(current_node):
2655
2670
 
2656
2671
  def get_node_jm_names(current_node):
2657
2672
  jm_list = []
2658
- if current_node.jm_device:
2673
+ if current_node.jm_device and current_node.jm_device.status == JMDevice.STATUS_ONLINE:
2659
2674
  jm_list.append(current_node.jm_device.jm_bdev)
2660
2675
  else:
2661
2676
  jm_list.append("JM_LOCAL")
@@ -2680,6 +2695,7 @@ def create_lvstore(snode, ndcs, npcs, distr_bs, distr_chunk_bs, page_size_in_blo
2680
2695
  online_jms = get_next_ha_jms(snode)
2681
2696
  logger.debug(f"online_jms: {str(online_jms)}")
2682
2697
  snode.remote_jm_devices = _connect_to_remote_jm_devs(snode, online_jms)
2698
+ snode.jm_vuid = jm_vuid
2683
2699
  snode.write_to_db()
2684
2700
 
2685
2701
  for _ in range(snode.number_of_distribs):
@@ -2784,6 +2800,11 @@ def _create_bdev_stack(snode, lvstore_stack=None):
2784
2800
  ret = rpc_client.bdev_PT_NoExcl_create(**params)
2785
2801
 
2786
2802
  elif type == "bdev_raid":
2803
+ # sync jm
2804
+ if snode.jm_vuid:
2805
+ ret = rpc_client.jc_explicit_synchronization(snode.jm_vuid)
2806
+ logger.info(f"JM Sync res: {ret}")
2807
+ time.sleep(10)
2787
2808
  distribs_list = bdev["distribs_list"]
2788
2809
  strip_size_kb = params["strip_size_kb"]
2789
2810
  ret = rpc_client.bdev_raid_create(name, distribs_list, strip_size_kb=strip_size_kb)
@@ -2874,13 +2895,25 @@ def make_sec_new_primary(node_id):
2874
2895
  logger.error(f"snode not found: {node_id}")
2875
2896
  return False
2876
2897
 
2898
+ dev_order = get_next_cluster_device_order(db_controller, snode.cluster_id)
2877
2899
  for dev in snode.nvme_devices:
2878
- if dev.status == NVMeDevice.STATUS_REMOVED:
2879
- device_controller.device_set_failed(dev.get_id())
2900
+ if dev.status == NVMeDevice.STATUS_NEW:
2901
+ dev.cluster_device_order = dev_order
2902
+ dev_order += 1
2903
+ snode.write_to_db()
2880
2904
 
2881
2905
  for dev in snode.nvme_devices:
2882
2906
  if dev.status == NVMeDevice.STATUS_NEW:
2883
- device_controller.add_device(dev.get_id())
2907
+ device_controller.device_set_state(dev.get_id(), NVMeDevice.STATUS_ONLINE)
2908
+ tasks_controller.add_new_device_mig_task(dev.get_id())
2909
+
2910
+ for node in db_controller.get_storage_nodes_by_cluster_id(snode.cluster_id):
2911
+ if node.status == StorageNode.STATUS_ONLINE:
2912
+ send_cluster_map(node.get_id())
2913
+
2914
+ for dev in snode.nvme_devices:
2915
+ if dev.status == NVMeDevice.STATUS_REMOVED:
2916
+ device_controller.device_set_failed(dev.get_id())
2884
2917
 
2885
2918
  snode = db_controller.get_storage_node_by_id(node_id)
2886
2919
  snode.primary_ip = snode.mgmt_ip
@@ -2889,29 +2922,28 @@ def make_sec_new_primary(node_id):
2889
2922
 
2890
2923
 
2891
2924
  def dump_lvstore(node_id):
2892
- return False
2893
- # db_controller = DBController()
2894
- #
2895
- # snode = db_controller.get_storage_node_by_id(node_id)
2896
- # if not snode:
2897
- # logger.error(f"Can not find storage node: {node_id}")
2898
- # return False
2899
- #
2900
- # if not snode.lvstore:
2901
- # logger.error("Storage node does not have lvstore")
2902
- # return False
2903
- #
2904
- # rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=180)
2905
- # logger.info(f"Dumping lvstore data on node: {snode.get_id()}")
2906
- # file_name = f"LVS_dump_{snode.hostname}_{snode.lvstore}_{str(datetime.datetime.now().isoformat())}.txt"
2907
- # file_path = f"/etc/simplyblock/{file_name}"
2908
- # ret = rpc_client.bdev_lvs_dump(snode.lvstore, file_path)
2909
- # if not ret:
2910
- # logger.error("faild to dump lvstore data")
2911
- # return False
2912
- #
2913
- # logger.info(f"LVS dump file path: {file_name}")
2914
- # snode_api = SNodeClient(f"{snode.mgmt_ip}:5000")
2915
- # file_content, _ = snode_api.get_file_content(file_name)
2916
- #
2917
- # return file_content
2925
+ db_controller = DBController()
2926
+
2927
+ snode = db_controller.get_storage_node_by_id(node_id)
2928
+ if not snode:
2929
+ logger.error(f"Can not find storage node: {node_id}")
2930
+ return False
2931
+
2932
+ if not snode.lvstore:
2933
+ logger.error("Storage node does not have lvstore")
2934
+ return False
2935
+
2936
+ rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=180)
2937
+ logger.info(f"Dumping lvstore data on node: {snode.get_id()}")
2938
+ file_name = f"LVS_dump_{snode.hostname}_{snode.lvstore}_{str(datetime.datetime.now().isoformat())}.txt"
2939
+ file_path = f"/etc/simplyblock/{file_name}"
2940
+ ret = rpc_client.bdev_lvs_dump(snode.lvstore, file_path)
2941
+ if not ret:
2942
+ logger.error("faild to dump lvstore data")
2943
+ return False
2944
+
2945
+ logger.info(f"LVS dump file path: {file_name}")
2946
+ snode_api = SNodeClient(f"{snode.mgmt_ip}:5000")
2947
+ file_content, _ = snode_api.get_file_content(file_name)
2948
+
2949
+ return file_content
@@ -446,3 +446,13 @@ def spdk_process_is_up():
446
446
  else:
447
447
  return utils.get_response(False, f"SPDK container is not running")
448
448
 
449
+
450
+ @bp.route('/get_file_content/<string:file_name>', methods=['GET'])
451
+ def get_file_content(file_name):
452
+ out, err, _ = node_utils.run_command(f"cat /etc/simplyblock/{file_name}")
453
+ if out:
454
+ return utils.get_response(out)
455
+ elif err:
456
+ err = err.decode("utf-8")
457
+ logger.debug(err)
458
+ return utils.get_response(None, err)
@@ -198,7 +198,10 @@ def storage_node_add():
198
198
  max_snap = int(req_data.get('max_snap', 500))
199
199
  max_prov = req_data['max_prov']
200
200
  number_of_distribs = int(req_data.get('number_of_distribs', 4))
201
- disable_ha_jm = bool(req_data.get('disable_ha_jm', False))
201
+ if req_data.get('disable_ha_jm', "") == "true":
202
+ disable_ha_jm = True
203
+ else:
204
+ disable_ha_jm = False
202
205
  enable_test_device = bool(req_data.get('enable_test_device', False))
203
206
 
204
207
  spdk_image = None
@@ -33,6 +33,9 @@ spec:
33
33
  - name: foundationdb
34
34
  hostPath:
35
35
  path: /etc/foundationdb
36
+ - name: etc-simplyblock
37
+ hostPath:
38
+ path: /etc/simplyblock
36
39
  - name: host-modules
37
40
  hostPath:
38
41
  path: /lib/modules
@@ -94,6 +97,8 @@ spec:
94
97
  mountPath: /dev
95
98
  - name: script-volume
96
99
  mountPath: /script
100
+ - name: etc-simplyblock
101
+ mountPath: /etc/simplyblock
97
102
  resources:
98
103
  limits:
99
104
  hugepages-2Mi: {{ MEM_GEGA }}Gi
File without changes
File without changes
File without changes
File without changes