sbcli-dev 4.0.65__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.65 → sbcli_dev-4.0.66}/PKG-INFO +1 -1
  2. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/env_var +1 -1
  3. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/PKG-INFO +1 -1
  4. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_cli/cli.py +7 -8
  5. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/cluster_ops.py +3 -6
  6. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/constants.py +2 -2
  7. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/device_controller.py +1 -1
  8. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/health_controller.py +11 -9
  9. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/lvol_controller.py +2 -4
  10. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/snapshot_controller.py +1 -2
  11. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/distr_controller.py +2 -0
  12. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/cluster.py +0 -2
  13. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/job_schedule.py +1 -1
  14. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/storage_node.py +1 -0
  15. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/rpc_client.py +8 -2
  16. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_failed_migration.py +6 -5
  17. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_migration.py +5 -5
  18. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_new_dev_migration.py +5 -5
  19. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/storage_node_ops.py +72 -43
  20. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/snode_ops_k8s.py +10 -0
  21. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_cluster.py +1 -2
  22. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_storage_node.py +4 -1
  23. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +5 -0
  24. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/README.md +0 -0
  25. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/pyproject.toml +0 -0
  26. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/SOURCES.txt +0 -0
  27. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  28. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/entry_points.txt +0 -0
  29. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/requires.txt +0 -0
  30. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/sbcli_dev.egg-info/top_level.txt +0 -0
  31. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/setup.cfg +0 -0
  32. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/setup.py +0 -0
  33. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_cli/main.py +0 -0
  34. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/__init__.py +0 -0
  35. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/cnode_client.py +0 -0
  36. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/compute_node_ops.py +0 -0
  37. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/__init__.py +0 -0
  38. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/caching_node_controller.py +0 -0
  39. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/cluster_events.py +0 -0
  40. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/device_events.py +0 -0
  41. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/events_controller.py +0 -0
  42. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/lvol_events.py +0 -0
  43. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/mgmt_events.py +0 -0
  44. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/pool_controller.py +0 -0
  45. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/pool_events.py +0 -0
  46. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/snapshot_events.py +0 -0
  47. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/storage_events.py +0 -0
  48. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/tasks_controller.py +0 -0
  49. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/controllers/tasks_events.py +0 -0
  50. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/kv_store.py +0 -0
  51. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/mgmt_node_ops.py +0 -0
  52. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/__init__.py +0 -0
  53. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/base_model.py +0 -0
  54. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/caching_node.py +0 -0
  55. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/compute_node.py +0 -0
  56. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/deployer.py +0 -0
  57. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/events.py +0 -0
  58. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/global_settings.py +0 -0
  59. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/iface.py +0 -0
  60. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/lvol_model.py +0 -0
  61. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/mgmt_node.py +0 -0
  62. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/nvme_device.py +0 -0
  63. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/pool.py +0 -0
  64. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/port_stat.py +0 -0
  65. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/snapshot.py +0 -0
  66. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/models/stats.py +0 -0
  67. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/pci_utils.py +0 -0
  68. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/__init__.py +0 -0
  69. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  70. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  71. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  72. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/config_docker.sh +0 -0
  73. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboard.yml +0 -0
  74. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  75. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  76. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  77. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  78. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  79. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  80. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/datasource.yml +0 -0
  81. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/db_config_double.sh +0 -0
  82. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/db_config_single.sh +0 -0
  83. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  84. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  85. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  86. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/haproxy.cfg +0 -0
  87. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/install_deps.sh +0 -0
  88. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/objstore.yml +0 -0
  89. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/prometheus.yml +0 -0
  90. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/run_ssh.sh +0 -0
  91. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/set_db_config.sh +0 -0
  92. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  93. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/__init__.py +0 -0
  94. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
  95. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/caching_node_monitor.py +0 -0
  96. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/cap_monitor.py +0 -0
  97. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  98. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/device_monitor.py +0 -0
  99. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/health_check_service.py +0 -0
  100. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/install_service.sh +0 -0
  101. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/log_agg_service.py +0 -0
  102. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/lvol_monitor.py +0 -0
  103. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/lvol_stat_collector.py +0 -0
  104. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/main_distr_event_collector.py +0 -0
  105. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  106. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/new_device_discovery.py +0 -0
  107. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/port_stat_collector.py +0 -0
  108. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/remove_service.sh +0 -0
  109. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/service_template.service +0 -0
  110. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
  111. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/storage_node_monitor.py +0 -0
  112. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  113. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/services/tasks_runner_restart.py +0 -0
  114. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/shell_utils.py +0 -0
  115. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/snode_client.py +0 -0
  116. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_core/utils.py +0 -0
  117. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/__init__.py +0 -0
  118. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/app.py +0 -0
  119. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/auth_middleware.py +0 -0
  120. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/__init__.py +0 -0
  121. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
  122. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
  123. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_basic.py +0 -0
  124. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
  125. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
  126. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/snode_ops.py +0 -0
  127. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
  128. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
  129. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_device.py +0 -0
  130. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
  131. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
  132. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_pool.py +0 -0
  133. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
  134. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/caching_node_app.py +0 -0
  135. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/caching_node_app_k8s.py +0 -0
  136. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/node_utils.py +0 -0
  137. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/node_webapp.py +0 -0
  138. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/snode_app.py +0 -0
  139. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/snode_app_k8s.py +0 -0
  140. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/delete.py +0 -0
  141. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy.py +0 -0
  142. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  143. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  144. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/is_up.py +0 -0
  145. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/list_deps.py +0 -0
  146. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/rpac.yaml +0 -0
  147. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/static/tst.py +0 -0
  148. {sbcli_dev-4.0.65 → sbcli_dev-4.0.66}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  149. {sbcli_dev-4.0.65 → 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.65
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.65
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.65
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
@@ -293,7 +294,7 @@ class CLIWrapper:
293
294
  sub_command.add_argument("--ha-type", help='LVol HA type (single, ha), default is cluster HA type',
294
295
  dest='ha_type', choices=["single", "ha", "default"], default='single')
295
296
  sub_command.add_argument("--enable-node-affinity", help='Enable node affinity for storage nodes', action='store_true')
296
- sub_command.add_argument("--qpair-count", help='tcp transport qpair count', type=int, dest='qpair_count', default=256)
297
+
297
298
  # add cluster
298
299
  sub_command = self.add_sub_command(subparser, 'add', 'Add new cluster')
299
300
  sub_command.add_argument("--blk_size", help='The block size in bytes', type=int, choices=[512, 4096], default=512)
@@ -315,7 +316,6 @@ class CLIWrapper:
315
316
  sub_command.add_argument("--ha-type", help='LVol HA type (single, ha), default is cluster HA type',
316
317
  dest='ha_type', choices=["single", "ha", "default"], default='default')
317
318
  sub_command.add_argument("--enable-node-affinity", help='Enable node affinity for storage nodes', action='store_true')
318
- sub_command.add_argument("--qpair-count", help='tcp transport qpair count', type=int, dest='qpair_count', default=256)
319
319
 
320
320
  # Activate cluster
321
321
  sub_command = self.add_sub_command(subparser, 'activate', 'Create distribs and raid0 bdevs on all the storage node and move the cluster to active state')
@@ -694,7 +694,7 @@ class CLIWrapper:
694
694
  if args.debug:
695
695
  self.logger.setLevel(logging.DEBUG)
696
696
  else:
697
- self.logger.setLevel(constants.LOG_LEVEL)
697
+ self.logger.setLevel(logging.INFO)
698
698
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
699
699
 
700
700
  args_dict = args.__dict__
@@ -740,6 +740,7 @@ class CLIWrapper:
740
740
  enable_test_device = args.enable_test_device
741
741
  enable_ha_jm = args.enable_ha_jm
742
742
  number_of_distribs = args.number_of_distribs
743
+ namespace = args.namespace
743
744
 
744
745
  out = storage_ops.add_node(
745
746
  cluster_id=cluster_id,
@@ -758,7 +759,7 @@ class CLIWrapper:
758
759
  jm_percent=jm_percent,
759
760
  number_of_devices=number_of_devices,
760
761
  enable_test_device=enable_test_device,
761
- namespace=None,
762
+ namespace=namespace,
762
763
  number_of_distribs=number_of_distribs,
763
764
  enable_ha_jm=enable_ha_jm
764
765
  )
@@ -1249,11 +1250,10 @@ class CLIWrapper:
1249
1250
  distr_chunk_bs = args.distr_chunk_bs
1250
1251
  ha_type = args.ha_type
1251
1252
  enable_node_affinity = args.enable_node_affinity
1252
- qpair_count = args.qpair_count
1253
1253
 
1254
1254
  return cluster_ops.add_cluster(
1255
1255
  blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn, prov_cap_crit,
1256
- distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity, qpair_count)
1256
+ distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity)
1257
1257
 
1258
1258
  def cluster_create(self, args):
1259
1259
  page_size_in_blocks = args.page_size
@@ -1274,13 +1274,12 @@ class CLIWrapper:
1274
1274
  contact_point = args.contact_point
1275
1275
  grafana_endpoint = args.grafana_endpoint
1276
1276
  enable_node_affinity = args.enable_node_affinity
1277
- qpair_count = args.qpair_count
1278
1277
 
1279
1278
  return cluster_ops.create_cluster(
1280
1279
  blk_size, page_size_in_blocks,
1281
1280
  CLI_PASS, cap_warn, cap_crit, prov_cap_warn, prov_cap_crit,
1282
1281
  ifname, log_del_interval, metrics_retention_period, contact_point, grafana_endpoint,
1283
- distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity, qpair_count)
1282
+ distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity)
1284
1283
 
1285
1284
  def query_yes_no(self, question, default="yes"):
1286
1285
  """Ask a yes/no question via raw_input() and return their answer.
@@ -102,8 +102,7 @@ def _add_graylog_input(cluster_ip, password):
102
102
 
103
103
  def create_cluster(blk_size, page_size_in_blocks, cli_pass,
104
104
  cap_warn, cap_crit, prov_cap_warn, prov_cap_crit, ifname, log_del_interval, metrics_retention_period,
105
- contact_point, grafana_endpoint, distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type,
106
- enable_node_affinity, qpair_count):
105
+ contact_point, grafana_endpoint, distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity):
107
106
  logger.info("Installing dependencies...")
108
107
  ret = scripts.install_deps()
109
108
  logger.info("Installing dependencies > Done")
@@ -170,8 +169,7 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
170
169
  else:
171
170
  c.grafana_endpoint = f"http://{DEV_IP}/grafana"
172
171
  c.enable_node_affinity = enable_node_affinity
173
- c.qpair_count = qpair_count or 256
174
-
172
+
175
173
  alerts_template_folder = os.path.join(TOP_DIR, "simplyblock_core/scripts/alerting/")
176
174
  alert_resources_file = "alert_resources.yaml"
177
175
 
@@ -289,7 +287,7 @@ def deploy_spdk(node_docker, spdk_cpu_mask, spdk_mem):
289
287
 
290
288
 
291
289
  def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn, prov_cap_crit,
292
- distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity, qpair_count):
290
+ distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity):
293
291
  db_controller = DBController()
294
292
  clusters = db_controller.get_clusters()
295
293
  if not clusters:
@@ -321,7 +319,6 @@ def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn
321
319
  cluster.distr_chunk_bs = distr_chunk_bs
322
320
  cluster.ha_type = ha_type
323
321
  cluster.enable_node_affinity = enable_node_affinity
324
- cluster.qpair_count = qpair_count or 256
325
322
  if cap_warn and cap_warn > 0:
326
323
  cluster.cap_warn = cap_warn
327
324
  if cap_crit and cap_crit > 0:
@@ -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)}")
@@ -635,7 +635,6 @@ def add_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
635
635
  ret = rpc_client.subsystem_create(lvol.nqn, 'sbcli-cn', lvol.uuid)
636
636
  logger.debug(ret)
637
637
 
638
- cluster = db_controller.get_cluster_by_id(snode.cluster_id)
639
638
  # add listeners
640
639
  logger.info("adding listeners")
641
640
  for iface in snode.data_nics:
@@ -648,7 +647,7 @@ def add_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
648
647
  if ty['trtype'] == tr_type:
649
648
  found = True
650
649
  if found is False:
651
- ret = rpc_client.transport_create(tr_type, cluster.qpair_count)
650
+ ret = rpc_client.transport_create(tr_type)
652
651
  logger.info("adding listener for %s on IP %s" % (lvol.nqn, iface.ip4_address))
653
652
  ret = rpc_client.listeners_create(lvol.nqn, tr_type, iface.ip4_address, "4420")
654
653
  is_optimized = False
@@ -696,7 +695,6 @@ def recreate_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
696
695
  ret = rpc_client.subsystem_create(lvol.nqn, 'sbcli-cn', lvol.uuid)
697
696
  logger.debug(ret)
698
697
 
699
- cluster = db_controller.get_cluster_by_id(snode.cluster_id)
700
698
  # add listeners
701
699
  logger.info("adding listeners")
702
700
  for iface in snode.data_nics:
@@ -709,7 +707,7 @@ def recreate_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
709
707
  if ty['trtype'] == tr_type:
710
708
  found = True
711
709
  if found is False:
712
- ret = rpc_client.transport_create(tr_type, cluster.qpair_count)
710
+ ret = rpc_client.transport_create(tr_type)
713
711
  logger.info("adding listener for %s on IP %s" % (lvol.nqn, iface.ip4_address))
714
712
  ret = rpc_client.listeners_create(lvol.nqn, tr_type, iface.ip4_address, "4420")
715
713
  is_optimized = False
@@ -307,13 +307,12 @@ def clone(snapshot_id, clone_name, new_size=0):
307
307
  logger.info("creating subsystem %s", subsystem_nqn)
308
308
  ret = rpc_client.subsystem_create(subsystem_nqn, 'sbcli-cn', lvol.uuid)
309
309
 
310
- cluster = db_controller.get_cluster_by_id(snode.cluster_id)
311
310
  # add listeners
312
311
  logger.info("adding listeners")
313
312
  for iface in snode.data_nics:
314
313
  if iface.ip4_address:
315
314
  tr_type = iface.get_transport_type()
316
- ret = rpc_client.transport_create(tr_type, cluster.qpair_count)
315
+ ret = rpc_client.transport_create(tr_type)
317
316
  logger.info("adding listener for %s on IP %s" % (subsystem_nqn, iface.ip4_address))
318
317
  ret = rpc_client.listeners_create(subsystem_nqn, tr_type, iface.ip4_address, "4420")
319
318
 
@@ -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 = {
@@ -50,8 +50,6 @@ class Cluster(BaseModel):
50
50
  "prov_cap_warn": {"type": int, "default": 180},
51
51
  "prov_cap_crit": {"type": int, "default": 190},
52
52
 
53
- "qpair_count": {"type": int, "default": 256},
54
-
55
53
  "secret": {"type": str, "default": ""},
56
54
  "status": {"type": str, "default": ""},
57
55
  "updated_at": {"type": str, "default": ""},
@@ -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": ""},
@@ -119,7 +119,7 @@ class RPCClient:
119
119
  params = {"trtype": trtype}
120
120
  return self._request("nvmf_get_transports", params)
121
121
 
122
- def transport_create(self, trtype, qpair_count=256):
122
+ def transport_create(self, trtype):
123
123
  """
124
124
  [{'trtype': 'TCP', 'max_queue_depth': 128,
125
125
  'max_io_qpairs_per_ctrlr': 127, 'in_capsule_data_size': 4096,
@@ -134,7 +134,7 @@ class RPCClient:
134
134
  """
135
135
  params = {
136
136
  "trtype": trtype,
137
- "max_io_qpairs_per_ctrlr": qpair_count,
137
+ "max_io_qpairs_per_ctrlr": 256,
138
138
  "max_queue_depth": 512,
139
139
  "abort_timeout_sec": 5,
140
140
  "ack_timeout": 512,
@@ -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")