sbcli-dev 3.8.47__zip → 3.8.49__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.47 → sbcli_dev-3.8.49}/PKG-INFO +1 -1
  2. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/env_var +1 -1
  3. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_cli/cli.py +3 -1
  5. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/distr_controller.py +8 -5
  6. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/storage_node.py +1 -0
  7. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/storage_node_monitor.py +9 -13
  8. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/tasks_runner_failed_migration.py +8 -1
  9. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/tasks_runner_migration.py +10 -2
  10. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/tasks_runner_new_dev_migration.py +6 -1
  11. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/storage_node_ops.py +2 -1
  12. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/README.md +0 -0
  13. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/pyproject.toml +0 -0
  14. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  15. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  16. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/sbcli_dev.egg-info/entry_points.txt +0 -0
  17. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/sbcli_dev.egg-info/requires.txt +0 -0
  18. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/sbcli_dev.egg-info/top_level.txt +0 -0
  19. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/setup.cfg +0 -0
  20. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/setup.py +0 -0
  21. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_cli/main.py +0 -0
  22. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/__init__.py +0 -0
  23. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/cluster_ops.py +0 -0
  24. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/cnode_client.py +0 -0
  25. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/compute_node_ops.py +0 -0
  26. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/constants.py +0 -0
  27. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/__init__.py +0 -0
  28. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  29. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/cluster_events.py +0 -0
  30. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/device_controller.py +0 -0
  31. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/device_events.py +0 -0
  32. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/events_controller.py +0 -0
  33. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/health_controller.py +0 -0
  34. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/lvol_controller.py +0 -0
  35. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/lvol_events.py +0 -0
  36. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/mgmt_events.py +0 -0
  37. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/pool_controller.py +0 -0
  38. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/pool_events.py +0 -0
  39. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/snapshot_controller.py +0 -0
  40. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/snapshot_events.py +0 -0
  41. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/storage_events.py +0 -0
  42. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/tasks_controller.py +0 -0
  43. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/controllers/tasks_events.py +0 -0
  44. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/kv_store.py +0 -0
  45. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/mgmt_node_ops.py +0 -0
  46. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/__init__.py +0 -0
  47. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/base_model.py +0 -0
  48. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/caching_node.py +0 -0
  49. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/cluster.py +0 -0
  50. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/compute_node.py +0 -0
  51. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/deployer.py +0 -0
  52. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/events.py +0 -0
  53. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/global_settings.py +0 -0
  54. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/iface.py +0 -0
  55. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/job_schedule.py +0 -0
  56. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/lvol_model.py +0 -0
  57. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/mgmt_node.py +0 -0
  58. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/nvme_device.py +0 -0
  59. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/pool.py +0 -0
  60. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/port_stat.py +0 -0
  61. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/snapshot.py +0 -0
  62. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/models/stats.py +0 -0
  63. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/pci_utils.py +0 -0
  64. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/rpc_client.py +0 -0
  65. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/__init__.py +0 -0
  66. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  67. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  68. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  69. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/config_docker.sh +0 -0
  70. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboard.yml +0 -0
  71. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  72. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  73. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  74. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  75. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  76. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  77. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/datasource.yml +0 -0
  78. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/db_config_double.sh +0 -0
  79. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/db_config_single.sh +0 -0
  80. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  81. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  82. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  83. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/haproxy.cfg +0 -0
  84. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/install_deps.sh +0 -0
  85. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/objstore.yml +0 -0
  86. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/prometheus.yml +0 -0
  87. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/run_ssh.sh +0 -0
  88. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/set_db_config.sh +0 -0
  89. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  90. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/__init__.py +0 -0
  91. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  92. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/caching_node_monitor.py +0 -0
  93. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/cap_monitor.py +0 -0
  94. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  95. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/device_monitor.py +0 -0
  96. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/distr_event_collector.py +0 -0
  97. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/health_check_service.py +0 -0
  98. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/install_service.sh +0 -0
  99. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/log_agg_service.py +0 -0
  100. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/lvol_monitor.py +0 -0
  101. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  102. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  103. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  104. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/new_device_discovery.py +0 -0
  105. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/port_stat_collector.py +0 -0
  106. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/remove_service.sh +0 -0
  107. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/service_template.service +0 -0
  108. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  109. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  110. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/shell_utils.py +0 -0
  111. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/snode_client.py +0 -0
  112. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_core/utils.py +0 -0
  113. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/__init__.py +0 -0
  114. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/app.py +0 -0
  115. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/auth_middleware.py +0 -0
  116. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/__init__.py +0 -0
  117. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  118. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  119. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  120. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  121. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  122. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/snode_ops.py +0 -0
  123. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
  124. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  125. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
  126. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  127. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_device.py +0 -0
  128. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  129. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  130. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  131. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  132. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
  133. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/caching_node_app.py +0 -0
  134. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/caching_node_app_k8s.py +0 -0
  135. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/node_utils.py +0 -0
  136. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/node_webapp.py +0 -0
  137. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/snode_app.py +0 -0
  138. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/snode_app_k8s.py +0 -0
  139. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/delete.py +0 -0
  140. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/deploy.py +0 -0
  141. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  142. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  143. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/is_up.py +0 -0
  144. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/list_deps.py +0 -0
  145. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/rpac.yaml +0 -0
  146. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/static/tst.py +0 -0
  147. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  148. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-3.8.47 → sbcli_dev-3.8.49}/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.47
3
+ Version: 3.8.49
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.47
2
+ SIMPLY_BLOCK_VERSION=3.8.49
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.47
3
+ Version: 3.8.49
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -96,6 +96,8 @@ class CLIWrapper:
96
96
  sub_command.add_argument("--iobuf_small_bufsize", help='bdev_set_options param', dest='small_bufsize', type=int, default=0)
97
97
  sub_command.add_argument("--iobuf_large_bufsize", help='bdev_set_options param', dest='large_bufsize', type=int, default=0)
98
98
 
99
+ sub_command.add_argument("--force", help='Force restart', required=False, action='store_true')
100
+
99
101
  # sub_command.add_argument("-t", '--test', help='Run smart test on the NVMe devices', action='store_true')
100
102
 
101
103
  # Shutdown storage node
@@ -773,7 +775,7 @@ class CLIWrapper:
773
775
  ret = storage_ops.restart_storage_node(
774
776
  node_id, max_lvol, max_snap, max_prov,
775
777
  spdk_image, spdk_debug,
776
- small_bufsize, large_bufsize, number_of_devices, node_ip=args.node_ip)
778
+ small_bufsize, large_bufsize, number_of_devices, node_ip=args.node_ip, force=args.force)
777
779
 
778
780
  elif sub_command == "list-devices":
779
781
  ret = self.storage_node_list_devices(args)
@@ -27,7 +27,7 @@ def send_node_status_event(node, node_status):
27
27
  if node.status != node.STATUS_ONLINE:
28
28
  continue
29
29
  logger.info(f"Sending to: {node.get_id()}")
30
- rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password)
30
+ rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=5, retry=1)
31
31
  ret = rpc_client.distr_status_events_update(events)
32
32
 
33
33
 
@@ -47,7 +47,7 @@ def send_dev_status_event(device, dev_status):
47
47
  if node.status != node.STATUS_ONLINE:
48
48
  continue
49
49
  logger.info(f"Sending to: {node.get_id()}")
50
- rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password)
50
+ rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=5, retry=1)
51
51
  ret = rpc_client.distr_status_events_update(events)
52
52
  if not ret:
53
53
  logger.warning("Failed to send event update")
@@ -108,8 +108,11 @@ def get_distr_cluster_map(snodes, target_node):
108
108
  dev_w_map.append({
109
109
  "weight": dev_w,
110
110
  "id": dev.cluster_device_order})
111
+ node_status = snode.status
112
+ if node_status == StorageNode.STATUS_SCHEDULABLE:
113
+ node_status = StorageNode.STATUS_UNREACHABLE
111
114
  map_cluster[snode.get_id()] = {
112
- "status": snode.status,
115
+ "status": node_status,
113
116
  "devices": dev_map}
114
117
  map_prob.append({
115
118
  "weight": node_w,
@@ -186,7 +189,7 @@ def parse_distr_cluster_map(map_string):
186
189
  def send_cluster_map_to_node(node):
187
190
  db_controller = DBController()
188
191
  snodes = db_controller.get_storage_nodes_by_cluster_id(node.cluster_id)
189
- rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password)
192
+ rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=5, retry=1)
190
193
  cluster_map_data = get_distr_cluster_map(snodes, node)
191
194
  cluster_map_data['UUID_node_target'] = node.get_id()
192
195
  ret = rpc_client.distr_send_cluster_map(cluster_map_data)
@@ -204,7 +207,7 @@ def send_cluster_map_add_node(snode):
204
207
  if node.status != node.STATUS_ONLINE:
205
208
  continue
206
209
  logger.info(f"Sending to: {node.get_id()}")
207
- rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password)
210
+ rpc_client = RPCClient(node.mgmt_ip, node.rpc_port, node.rpc_username, node.rpc_password, timeout=5, retry=1)
208
211
 
209
212
  cluster_map_data = get_distr_cluster_map([snode], node)
210
213
  cl_map = {
@@ -19,6 +19,7 @@ class StorageNode(BaseModel):
19
19
 
20
20
  STATUS_IN_CREATION = 'in_creation'
21
21
  STATUS_UNREACHABLE = 'unreachable'
22
+ STATUS_SCHEDULABLE = 'schedulable'
22
23
 
23
24
  STATUS_CODE_MAP = {
24
25
  STATUS_ONLINE: 0,
@@ -107,20 +107,7 @@ def set_node_offline(node):
107
107
  if node.status != StorageNode.STATUS_UNREACHABLE:
108
108
  for dev in node.nvme_devices:
109
109
  device_controller.device_set_unavailable(dev.get_id())
110
-
111
110
  storage_node_ops.set_node_status(snode.get_id(), StorageNode.STATUS_UNREACHABLE)
112
- # add node to auto restart
113
- tasks_controller.add_node_to_auto_restart(node)
114
-
115
-
116
- def set_jm_device_status(node):
117
- if node.status != StorageNode.STATUS_UNREACHABLE:
118
- for dev in node.nvme_devices:
119
- device_controller.device_set_unavailable(dev.get_id())
120
-
121
- storage_node_ops.set_node_status(snode.get_id(), StorageNode.STATUS_UNREACHABLE)
122
- # add node to auto restart
123
- tasks_controller.add_node_to_auto_restart(node)
124
111
 
125
112
 
126
113
  logger.info("Starting node monitor")
@@ -167,6 +154,15 @@ while True:
167
154
  set_node_online(snode)
168
155
  else:
169
156
  set_node_offline(snode)
157
+ if ping_check and node_api_check and not spdk_process:
158
+ # add node to auto restart
159
+ if cluster.status != Cluster.STATUS_UNREADY:
160
+ tasks_controller.add_node_to_auto_restart(snode)
161
+
162
+ if not ping_check and not node_api_check and not spdk_process:
163
+ # restart on new node
164
+ storage_node_ops.set_node_status(snode.get_id(), StorageNode.STATUS_SCHEDULABLE)
165
+ continue
170
166
 
171
167
  # check JM device
172
168
  if snode.jm_device:
@@ -20,7 +20,11 @@ from simplyblock_core.rpc_client import RPCClient
20
20
  def task_runner(task):
21
21
 
22
22
  snode = db_controller.get_storage_node_by_id(task.node_id)
23
- rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=5, retry=2)
23
+ if not snode:
24
+ task.status = JobSchedule.STATUS_DONE
25
+ task.function_result = f"Node not found: {task.node_id}"
26
+ task.write_to_db(db_controller.kv_store)
27
+ return True
24
28
 
25
29
  if task.canceled:
26
30
  task.function_result = "canceled"
@@ -40,6 +44,8 @@ def task_runner(task):
40
44
  task.write_to_db(db_controller.kv_store)
41
45
  return False
42
46
 
47
+ rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password,
48
+ timeout=5, retry=2)
43
49
  if "migration" not in task.function_params:
44
50
  device = db_controller.get_storage_devices(task.device_id)
45
51
  distr_name = task.function_params["distr_name"]
@@ -50,6 +56,7 @@ def task_runner(task):
50
56
  task.write_to_db(db_controller.kv_store)
51
57
  return True
52
58
 
59
+
53
60
  rsp = rpc_client.distr_migration_failure_start(distr_name, device.cluster_device_order)
54
61
  if not rsp:
55
62
  logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
@@ -17,7 +17,11 @@ from simplyblock_core.rpc_client import RPCClient
17
17
  def task_runner(task):
18
18
 
19
19
  snode = db_controller.get_storage_node_by_id(task.node_id)
20
- rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=5, retry=2)
20
+ if not snode:
21
+ task.status = JobSchedule.STATUS_DONE
22
+ task.function_result = f"Node not found: {task.node_id}"
23
+ task.write_to_db(db_controller.kv_store)
24
+ return True
21
25
 
22
26
  if task.canceled:
23
27
  task.function_result = "canceled"
@@ -37,11 +41,15 @@ def task_runner(task):
37
41
  task.write_to_db(db_controller.kv_store)
38
42
  return False
39
43
 
44
+ rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password,
45
+ timeout=5, retry=2)
40
46
  if "migration" not in task.function_params:
41
47
  all_devs_online = True
42
48
  for node in db_controller.get_storage_nodes_by_cluster_id(task.cluster_id):
43
49
  for dev in node.nvme_devices:
44
- if dev.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_FAILED_AND_MIGRATED]:
50
+ if dev.status not in [NVMeDevice.STATUS_ONLINE,
51
+ NVMeDevice.STATUS_FAILED,
52
+ NVMeDevice.STATUS_FAILED_AND_MIGRATED]:
45
53
  all_devs_online = False
46
54
  break
47
55
 
@@ -20,7 +20,11 @@ from simplyblock_core.rpc_client import RPCClient
20
20
  def task_runner(task):
21
21
 
22
22
  snode = db_controller.get_storage_node_by_id(task.node_id)
23
- rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=5, retry=2)
23
+ if not snode:
24
+ task.status = JobSchedule.STATUS_DONE
25
+ task.function_result = f"Node not found: {task.node_id}"
26
+ task.write_to_db(db_controller.kv_store)
27
+ return True
24
28
 
25
29
  if task.canceled:
26
30
  task.function_result = "canceled"
@@ -40,6 +44,7 @@ def task_runner(task):
40
44
  task.write_to_db(db_controller.kv_store)
41
45
  return False
42
46
 
47
+ rpc_client = RPCClient(snode.mgmt_ip, snode.rpc_port, snode.rpc_username, snode.rpc_password, timeout=5, retry=2)
43
48
  if "migration" not in task.function_params:
44
49
  all_devs_online = True
45
50
  for node in db_controller.get_storage_nodes_by_cluster_id(task.cluster_id):
@@ -1372,7 +1372,8 @@ def restart_storage_node(
1372
1372
 
1373
1373
  if snode.status == StorageNode.STATUS_RESTARTING:
1374
1374
  logger.error(f"Node is in restart: {node_id}")
1375
- return False
1375
+ if force is False:
1376
+ return False
1376
1377
 
1377
1378
  task_id = tasks_controller.get_active_node_restart_task(snode.cluster_id, snode.get_id())
1378
1379
  if task_id:
File without changes
File without changes
File without changes
File without changes