sbcli-dev 3.8.36__zip → 3.8.38__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 (149) hide show
  1. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/PKG-INFO +1 -1
  2. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/env_var +1 -1
  3. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_cli/cli.py +4 -1
  5. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/cluster_ops.py +9 -9
  6. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/constants.py +4 -2
  7. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/lvol_controller.py +16 -1
  8. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/tasks_controller.py +19 -17
  9. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/nvme_device.py +1 -0
  10. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/storage_node.py +2 -0
  11. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/rpc_client.py +20 -2
  12. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/storage_node_monitor.py +1 -1
  13. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/storage_node_ops.py +126 -79
  14. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/README.md +0 -0
  15. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/pyproject.toml +0 -0
  16. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  17. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  18. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/entry_points.txt +0 -0
  19. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/requires.txt +0 -0
  20. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/sbcli_dev.egg-info/top_level.txt +0 -0
  21. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/setup.cfg +0 -0
  22. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/setup.py +0 -0
  23. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_cli/main.py +0 -0
  24. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/__init__.py +0 -0
  25. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/cnode_client.py +0 -0
  26. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/compute_node_ops.py +0 -0
  27. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/__init__.py +0 -0
  28. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  29. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/cluster_events.py +0 -0
  30. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/device_controller.py +0 -0
  31. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/device_events.py +0 -0
  32. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/events_controller.py +0 -0
  33. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/health_controller.py +0 -0
  34. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/lvol_events.py +0 -0
  35. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/mgmt_events.py +0 -0
  36. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/pool_controller.py +0 -0
  37. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/pool_events.py +0 -0
  38. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  39. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/snapshot_events.py +0 -0
  40. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/storage_events.py +0 -0
  41. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/controllers/tasks_events.py +0 -0
  42. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/distr_controller.py +0 -0
  43. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/kv_store.py +0 -0
  44. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/mgmt_node_ops.py +0 -0
  45. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/__init__.py +0 -0
  46. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/base_model.py +0 -0
  47. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/caching_node.py +0 -0
  48. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/cluster.py +0 -0
  49. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/compute_node.py +0 -0
  50. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/deployer.py +0 -0
  51. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/events.py +0 -0
  52. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/global_settings.py +0 -0
  53. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/iface.py +0 -0
  54. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/job_schedule.py +0 -0
  55. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/lvol_model.py +0 -0
  56. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/mgmt_node.py +0 -0
  57. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/pool.py +0 -0
  58. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/port_stat.py +0 -0
  59. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/snapshot.py +0 -0
  60. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/models/stats.py +0 -0
  61. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/pci_utils.py +0 -0
  62. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/__init__.py +0 -0
  63. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  64. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  65. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  66. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/config_docker.sh +0 -0
  67. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboard.yml +0 -0
  68. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  69. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  70. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  71. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  72. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  73. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  74. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/datasource.yml +0 -0
  75. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/db_config_double.sh +0 -0
  76. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/db_config_single.sh +0 -0
  77. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  78. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  79. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  80. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/haproxy.cfg +0 -0
  81. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/install_deps.sh +0 -0
  82. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/objstore.yml +0 -0
  83. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/prometheus.yml +0 -0
  84. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/run_ssh.sh +0 -0
  85. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/set_db_config.sh +0 -0
  86. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  87. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/__init__.py +0 -0
  88. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  89. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/caching_node_monitor.py +0 -0
  90. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/cap_monitor.py +0 -0
  91. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  92. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/device_monitor.py +0 -0
  93. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/distr_event_collector.py +0 -0
  94. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/health_check_service.py +0 -0
  95. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/install_service.sh +0 -0
  96. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/log_agg_service.py +0 -0
  97. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/lvol_monitor.py +0 -0
  98. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  99. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  100. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  101. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/new_device_discovery.py +0 -0
  102. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/port_stat_collector.py +0 -0
  103. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/remove_service.sh +0 -0
  104. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/service_template.service +0 -0
  105. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  106. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_migration.py +0 -0
  107. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  108. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  109. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  110. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/shell_utils.py +0 -0
  111. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/snode_client.py +0 -0
  112. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_core/utils.py +0 -0
  113. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/__init__.py +0 -0
  114. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/app.py +0 -0
  115. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/auth_middleware.py +0 -0
  116. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/__init__.py +0 -0
  117. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  118. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  119. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  120. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  121. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  122. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/snode_ops.py +0 -0
  123. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  124. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  125. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  126. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  127. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_device.py +0 -0
  128. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  129. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  130. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  131. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  132. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  133. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/caching_node_app.py +0 -0
  134. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/caching_node_app_k8s.py +0 -0
  135. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/node_utils.py +0 -0
  136. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/node_webapp.py +0 -0
  137. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/snode_app.py +0 -0
  138. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/snode_app_k8s.py +0 -0
  139. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/delete.py +0 -0
  140. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/deploy.py +0 -0
  141. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  142. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  143. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/is_up.py +0 -0
  144. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/list_deps.py +0 -0
  145. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/rpac.yaml +0 -0
  146. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/static/tst.py +0 -0
  147. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  148. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-3.8.36 → sbcli_dev-3.8.38}/simplyblock_web/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sbcli-dev
3
- Version: 3.8.36
3
+ Version: 3.8.38
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=3.8.36
2
+ SIMPLY_BLOCK_VERSION=3.8.38
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: 3.8.36
3
+ Version: 3.8.38
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -56,6 +56,7 @@ class CLIWrapper:
56
56
  sub_command.add_argument("--iobuf_small_bufsize", help='bdev_set_options param', dest='small_bufsize', type=int, default=0)
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
+ sub_command.add_argument("--enable-ha-jm", help='Enable HA JM for ditrib creation', action='store_true')
59
60
 
60
61
 
61
62
  # delete storage node
@@ -717,6 +718,7 @@ class CLIWrapper:
717
718
  max_prov = self.parse_size(args.max_prov)
718
719
  number_of_devices = args.number_of_devices
719
720
  enable_test_device = args.enable_test_device
721
+ enable_ha_jm = args.enable_ha_jm
720
722
  number_of_distribs = args.number_of_distribs
721
723
  if max_prov < 1 * 1024 * 1024 * 1024:
722
724
  return f"Max provisioning memory:{args.max_prov} must be larger than 1G"
@@ -739,7 +741,8 @@ class CLIWrapper:
739
741
  number_of_devices=number_of_devices,
740
742
  enable_test_device=enable_test_device,
741
743
  namespace=None,
742
- number_of_distribs=number_of_distribs
744
+ number_of_distribs=number_of_distribs,
745
+ enable_ha_jm=enable_ha_jm
743
746
  )
744
747
 
745
748
  return out
@@ -369,7 +369,7 @@ def cluster_activate(cl_id):
369
369
  logger.info(f"Node {snode.get_id()} already has lvstore {snode.lvstore}... skipping")
370
370
  continue
371
371
  ret = storage_node_ops.create_lvstore(snode, cluster.distr_ndcs, cluster.distr_npcs, cluster.distr_bs,
372
- cluster.distr_chunk_bs, cluster.page_size_in_blocks, max_size)
372
+ cluster.distr_chunk_bs, cluster.page_size_in_blocks, max_size, snodes)
373
373
  if not ret:
374
374
  logger.error("Failed to activate cluster")
375
375
  set_cluster_status(cl_id, Cluster.STATUS_UNREADY)
@@ -688,14 +688,14 @@ def update_cluster(cl_id):
688
688
  except Exception as e:
689
689
  print(e)
690
690
 
691
- for node in db_controller.get_storage_nodes_by_cluster_id(cl_id):
692
- node_docker = docker.DockerClient(base_url=f"tcp://{node.mgmt_ip}:2375", version="auto")
693
- logger.info(f"Pulling image {constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE}")
694
- node_docker.images.pull(constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE)
695
- if node.status == StorageNode.STATUS_ONLINE:
696
- storage_node_ops.shutdown_storage_node(node.get_id(), force=True)
697
- time.sleep(3)
698
- storage_node_ops.restart_storage_node(node.get_id())
691
+ # for node in db_controller.get_storage_nodes_by_cluster_id(cl_id):
692
+ # node_docker = docker.DockerClient(base_url=f"tcp://{node.mgmt_ip}:2375", version="auto")
693
+ # logger.info(f"Pulling image {constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE}")
694
+ # node_docker.images.pull(constants.SIMPLY_BLOCK_SPDK_ULTRA_IMAGE)
695
+ # if node.status == StorageNode.STATUS_ONLINE:
696
+ # storage_node_ops.shutdown_storage_node(node.get_id(), force=True)
697
+ # time.sleep(3)
698
+ # storage_node_ops.restart_storage_node(node.get_id())
699
699
 
700
700
  logger.info("Done")
701
701
  return True
@@ -11,7 +11,7 @@ LOG_WEB_DEBUG = True
11
11
 
12
12
  INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
13
13
 
14
- NODE_MONITOR_INTERVAL_SEC = 3
14
+ NODE_MONITOR_INTERVAL_SEC = 10
15
15
  DEVICE_MONITOR_INTERVAL_SEC = 5
16
16
  STAT_COLLECTOR_INTERVAL_SEC = 60*5 # 5 minutes
17
17
  LVOL_STAT_COLLECTOR_INTERVAL_SEC = 5
@@ -52,13 +52,15 @@ GRAYLOG_CHECK_INTERVAL_SEC = 60
52
52
 
53
53
  FDB_CHECK_INTERVAL_SEC = 60
54
54
 
55
- SIMPLY_BLOCK_DOCKER_IMAGE = "simplyblock/simplyblock:main"
55
+ SIMPLY_BLOCK_DOCKER_IMAGE = "simplyblock/simplyblock:dev"
56
56
  SIMPLY_BLOCK_CLI_NAME = "sbcli-dev"
57
57
  TASK_EXEC_INTERVAL_SEC = 30
58
58
  TASK_EXEC_RETRY_COUNT = 8
59
59
 
60
60
  SIMPLY_BLOCK_SPDK_CORE_IMAGE = "simplyblock/spdk-core:latest"
61
+ SIMPLY_BLOCK_SPDK_CORE_IMAGE_ARM64 = "simplyblock/spdk-core:latest-arm64"
61
62
  SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:348-temp-migration-2-latest"
63
+ SIMPLY_BLOCK_SPDK_ULTRA_IMAGE_JM = "simplyblock/spdk:feature-journal-ha-latest"
62
64
 
63
65
  GELF_PORT = 12201
64
66
 
@@ -169,6 +169,21 @@ def get_jm_names(snode):
169
169
  return [snode.jm_device.jm_bdev] if snode.jm_device else []
170
170
 
171
171
 
172
+ def get_ha_jm_names(current_node, snode_list):
173
+ jm_list = []
174
+ if current_node.jm_device:
175
+ jm_list.append(current_node.jm_device.jm_bdev)
176
+ else:
177
+ jm_list.append("JM_LOCAL")
178
+
179
+ for node in snode_list:
180
+ if node.get_id() == current_node.get_id():
181
+ continue
182
+ name = f"remote_{node.jm_device.jm_bdev}n1"
183
+ jm_list.append(name)
184
+ return jm_list[:3]
185
+
186
+
172
187
  def _get_next_3_nodes(cluster_id, lvol_size=0):
173
188
  snodes = db_controller.get_storage_nodes_by_cluster_id(cluster_id)
174
189
  online_nodes = []
@@ -564,7 +579,7 @@ def _create_bdev_stack(lvol, snode, ha_comm_addrs, ha_inode_self):
564
579
  ret = None
565
580
 
566
581
  if type == "bdev_distr":
567
- params['jm_names'] = get_jm_names(snode)
582
+ # params['jm_names'] = get_jm_names(snode)
568
583
  params['ha_comm_addrs'] = ha_comm_addrs
569
584
  params['ha_inode_self'] = ha_inode_self
570
585
  params['distrib_cpu_mask'] = snode.distrib_cpu_mask
@@ -54,20 +54,22 @@ def _add_task(function_name, cluster_id, node_id, device_id,
54
54
 
55
55
 
56
56
  def add_device_mig_task(device_id):
57
- device = db_controller.get_storage_devices(device_id)
58
- for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
59
- for lvol_id in node.lvols:
60
- _add_task(JobSchedule.FN_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
61
- max_retry=0, function_params={'lvol_id': lvol_id})
57
+ # device = db_controller.get_storage_devices(device_id)
58
+ # for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
59
+ # for lvol_id in node.lvols:
60
+ # _add_task(JobSchedule.FN_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
61
+ # max_retry=0, function_params={'lvol_id': lvol_id})
62
62
  return True
63
63
 
64
64
 
65
65
  def add_device_to_auto_restart(device):
66
- return _add_task(JobSchedule.FN_DEV_RESTART, device.cluster_id, device.node_id, device.get_id())
66
+ return True
67
+ # return _add_task(JobSchedule.FN_DEV_RESTART, device.cluster_id, device.node_id, device.get_id())
67
68
 
68
69
 
69
70
  def add_node_to_auto_restart(node):
70
- return _add_task(JobSchedule.FN_NODE_RESTART, node.cluster_id, node.get_id(), "")
71
+ return True
72
+ # return _add_task(JobSchedule.FN_NODE_RESTART, node.cluster_id, node.get_id(), "")
71
73
 
72
74
 
73
75
  def list_tasks(cluster_id):
@@ -135,20 +137,20 @@ def get_active_node_mig_task(cluster_id, node_id):
135
137
 
136
138
 
137
139
  def add_device_failed_mig_task(device_id):
138
- device = db_controller.get_storage_devices(device_id)
139
- for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
140
- for lvol_id in node.lvols:
141
- _add_task(JobSchedule.FN_FAILED_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
142
- max_retry=0, function_params={'lvol_id': lvol_id})
140
+ # device = db_controller.get_storage_devices(device_id)
141
+ # for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
142
+ # for lvol_id in node.lvols:
143
+ # _add_task(JobSchedule.FN_FAILED_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
144
+ # max_retry=0, function_params={'lvol_id': lvol_id})
143
145
  return True
144
146
 
145
147
 
146
148
  def add_new_device_mig_task(device_id):
147
- device = db_controller.get_storage_devices(device_id)
148
- for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
149
- for lvol_id in node.lvols:
150
- _add_task(JobSchedule.FN_NEW_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
151
- max_retry=0, function_params={'lvol_id': lvol_id})
149
+ # device = db_controller.get_storage_devices(device_id)
150
+ # for node in db_controller.get_storage_nodes_by_cluster_id(device.cluster_id):
151
+ # for lvol_id in node.lvols:
152
+ # _add_task(JobSchedule.FN_NEW_DEV_MIG, device.cluster_id, node.get_id(), device.get_id(),
153
+ # max_retry=0, function_params={'lvol_id': lvol_id})
152
154
  return True
153
155
 
154
156
 
@@ -113,6 +113,7 @@ class JMDevice(BaseModel):
113
113
  "nvmf_nqn": {"type": str, 'default': ""},
114
114
  "nvmf_ip": {"type": str, 'default': ""},
115
115
  "nvmf_port": {"type": int, 'default': 4420},
116
+ "remote_bdev": {"type": str, 'default': ""},
116
117
 
117
118
  "health_check": {"type": bool, "default": True},
118
119
  "io_error": {"type": bool, 'default': False},
@@ -108,6 +108,8 @@ class StorageNode(BaseModel):
108
108
  "num_partitions_per_dev": {"type": int, "default": 1},
109
109
  "jm_percent": {"type": int, "default": 3},
110
110
  "jm_device": {"type": JMDevice, "default": None},
111
+ "remote_jm_devices": {"type": List[JMDevice], 'default': []},
112
+ "enable_ha_jm": {"type": bool, "default": False},
111
113
 
112
114
  "namespace": {"type": str, "default": ""},
113
115
 
@@ -363,7 +363,7 @@ class RPCClient:
363
363
 
364
364
  def bdev_distrib_create(self, name, vuid, ndcs, npcs, num_blocks, block_size, jm_names,
365
365
  chunk_size, ha_comm_addrs=None, ha_inode_self=None, pba_page_size=2097152,
366
- distrib_cpu_mask=""):
366
+ distrib_cpu_mask="", ha_is_non_leader=True, jm_vuid=0):
367
367
  """"
368
368
  // Optional (not specified = no HA)
369
369
  // Comma-separated communication addresses, for each node, e.g. "192.168.10.1:45001,192.168.10.1:32768".
@@ -379,13 +379,17 @@ class RPCClient:
379
379
  "name": name,
380
380
  "jm_names": ",".join(jm_names),
381
381
  "vuid": vuid,
382
+ "jm_vuid": jm_vuid,
382
383
  "ndcs": ndcs,
383
384
  "npcs": npcs,
384
385
  "num_blocks": num_blocks,
385
386
  "block_size": block_size,
386
387
  "chunk_size": chunk_size,
387
- "pba_page_size": pba_page_size
388
+ "pba_page_size": pba_page_size,
389
+ "ha_is_non_leader": ha_is_non_leader,
388
390
  }
391
+ if jm_vuid > 0:
392
+ params["jm_vuid"] = jm_vuid
389
393
  if ha_comm_addrs:
390
394
  params['ha_comm_addrs'] = ha_comm_addrs
391
395
  params['ha_inode_self'] = ha_inode_self
@@ -470,6 +474,20 @@ class RPCClient:
470
474
  }
471
475
  return self._request("bdev_nvme_attach_controller", params)
472
476
 
477
+ def bdev_nvme_attach_controller_tcp_jm(self, name, nqn, ip, port):
478
+ params = {
479
+ "name": name,
480
+ "trtype": "tcp",
481
+ "traddr": ip,
482
+ "adrfam": "ipv4",
483
+ "trsvcid": str(port),
484
+ "subnqn": nqn,
485
+ "fast_io_fail_timeout_sec": 1,
486
+ "ctrlr_loss_timeout_sec": 1,
487
+ "reconnect_delay_sec": 1,
488
+ }
489
+ return self._request("bdev_nvme_attach_controller", params)
490
+
473
491
  def bdev_nvme_attach_controller_tcp_caching(self, name, nqn, ip, port):
474
492
  params = {
475
493
  "name": name,
@@ -173,7 +173,7 @@ while True:
173
173
  if snode.jm_device.status in [JMDevice.STATUS_ONLINE, JMDevice.STATUS_UNAVAILABLE]:
174
174
  ret = health_controller.check_jm_device(snode.jm_device.get_id())
175
175
  if ret:
176
- logger.error(f"JM bdev is online: {snode.jm_device.get_id()}")
176
+ logger.info(f"JM bdev is online: {snode.jm_device.get_id()}")
177
177
  if snode.jm_device.status != JMDevice.STATUS_ONLINE:
178
178
  device_controller.set_jm_device_state(snode.jm_device.get_id(), JMDevice.STATUS_ONLINE)
179
179
  else: