sbcli-dev 19.2.30__tar.gz → 19.2.32__tar.gz

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 (257) hide show
  1. {sbcli_dev-19.2.30/sbcli_dev.egg-info → sbcli_dev-19.2.32}/PKG-INFO +1 -3
  2. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/pyproject.toml +1 -1
  3. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32/sbcli_dev.egg-info}/PKG-INFO +1 -3
  4. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/sbcli_dev.egg-info/SOURCES.txt +35 -11
  5. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/sbcli_dev.egg-info/top_level.txt +1 -0
  6. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_cli/cli.py +50 -3
  7. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_cli/clibase.py +233 -9
  8. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/cluster_ops.py +129 -80
  9. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/constants.py +32 -15
  10. sbcli_dev-19.2.32/simplyblock_core/controllers/backup_controller.py +468 -0
  11. sbcli_dev-19.2.32/simplyblock_core/controllers/backup_events.py +47 -0
  12. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/cluster_events.py +0 -28
  13. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/device_controller.py +4 -7
  14. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/device_events.py +0 -20
  15. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/health_controller.py +36 -3
  16. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/lvol_controller.py +360 -113
  17. sbcli_dev-19.2.32/simplyblock_core/controllers/lvol_events.py +45 -0
  18. sbcli_dev-19.2.32/simplyblock_core/controllers/migration_controller.py +496 -0
  19. sbcli_dev-19.2.32/simplyblock_core/controllers/migration_events.py +79 -0
  20. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/pool_controller.py +2 -20
  21. sbcli_dev-19.2.32/simplyblock_core/controllers/pool_events.py +31 -0
  22. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/snapshot_controller.py +126 -34
  23. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/snapshot_events.py +2 -2
  24. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/storage_events.py +2 -66
  25. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/tasks_controller.py +94 -9
  26. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/db_controller.py +95 -1
  27. sbcli_dev-19.2.32/simplyblock_core/env_var +5 -0
  28. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/mgmt_node_ops.py +8 -2
  29. sbcli_dev-19.2.32/simplyblock_core/models/backup.py +82 -0
  30. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/cluster.py +7 -3
  31. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/job_schedule.py +4 -0
  32. sbcli_dev-19.2.32/simplyblock_core/models/lvol_migration.py +124 -0
  33. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/lvol_model.py +1 -0
  34. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/pool.py +0 -6
  35. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/storage_node.py +7 -4
  36. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/rpc_client.py +232 -19
  37. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/Chart.yaml +2 -2
  38. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/app_configmap.yaml +5 -8
  39. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/app_ingress.yaml +2 -4
  40. sbcli_dev-19.2.32/simplyblock_core/scripts/charts/templates/app_k8s.yaml +1209 -0
  41. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/app_sa.yaml +5 -12
  42. sbcli_dev-19.2.32/simplyblock_core/scripts/charts/templates/dashboards.yaml +27307 -0
  43. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/foundationdb.yaml +3 -1
  44. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/mongodb.yaml +2 -2
  45. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/monitoring_configmap.yaml +19 -6
  46. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/monitoring_ingress.yaml +3 -4
  47. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/monitoring_k8s.yaml +118 -30
  48. sbcli_dev-19.2.32/simplyblock_core/scripts/charts/templates/monitoring_secret.yaml +23 -0
  49. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/monitoring_svc.yaml +30 -5
  50. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/values.yaml +28 -56
  51. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/health_check_service.py +32 -22
  52. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/lvol_monitor.py +82 -39
  53. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/lvol_stat_collector.py +20 -12
  54. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/main_distr_event_collector.py +9 -4
  55. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/snapshot_monitor.py +41 -18
  56. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/spdk_http_proxy_server.py +0 -3
  57. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/storage_node_monitor.py +16 -15
  58. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_cluster_status.py +1 -1
  59. sbcli_dev-19.2.32/simplyblock_core/services/tasks_runner_backup.py +340 -0
  60. sbcli_dev-19.2.32/simplyblock_core/services/tasks_runner_backup_merge.py +33 -0
  61. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_jc_comp.py +0 -2
  62. sbcli_dev-19.2.32/simplyblock_core/services/tasks_runner_lvol_migration.py +1591 -0
  63. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_migration.py +25 -14
  64. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_port_allow.py +47 -37
  65. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_restart.py +3 -2
  66. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_sync_lvol_del.py +22 -7
  67. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/snode_client.py +25 -6
  68. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/storage_node_ops.py +555 -189
  69. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/test/test_utils.py +1 -0
  70. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/utils/__init__.py +378 -398
  71. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/internal/storage_node/docker.py +78 -5
  72. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/internal/storage_node/kubernetes.py +53 -41
  73. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/__init__.py +0 -24
  74. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/cluster.py +3 -56
  75. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/storage_node.py +10 -0
  76. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/__init__.py +8 -4
  77. sbcli_dev-19.2.32/simplyblock_web/api/v2/backup.py +126 -0
  78. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/cluster.py +13 -31
  79. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/device.py +8 -22
  80. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/dtos.py +120 -92
  81. sbcli_dev-19.2.32/simplyblock_web/api/v2/migration.py +65 -0
  82. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/pool.py +11 -23
  83. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/storage_node.py +20 -39
  84. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/task.py +8 -7
  85. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/volume.py +41 -14
  86. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/auth_middleware.py +0 -4
  87. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/node_configure.py +20 -27
  88. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/node_utils_k8s.py +1 -1
  89. sbcli_dev-19.2.32/simplyblock_web/static/openapi.json +4250 -0
  90. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/templates/oc_storage_core_isolation.yaml.j2 +7 -7
  91. sbcli_dev-19.2.32/simplyblock_web/templates/oc_storage_cpu_topology.yaml.j2 +99 -0
  92. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/templates/storage_core_isolation.yaml.j2 +9 -9
  93. sbcli_dev-19.2.32/simplyblock_web/templates/storage_cpu_topology.yaml.j2 +122 -0
  94. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +56 -24
  95. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/templates/storage_init_job.yaml.j2 +5 -4
  96. sbcli_dev-19.2.32/simplyblock_web/test/__init__.py +0 -0
  97. sbcli_dev-19.2.32/tests/__init__.py +0 -0
  98. sbcli_dev-19.2.32/tests/migration/__init__.py +0 -0
  99. sbcli_dev-19.2.32/tests/migration/conftest.py +458 -0
  100. sbcli_dev-19.2.32/tests/migration/db_setup.py +270 -0
  101. sbcli_dev-19.2.32/tests/migration/mock_rpc_server.py +846 -0
  102. sbcli_dev-19.2.32/tests/migration/test_complex_tree.py +691 -0
  103. sbcli_dev-19.2.32/tests/migration/test_ctl.py +370 -0
  104. sbcli_dev-19.2.32/tests/migration/test_migration_flow.py +796 -0
  105. sbcli_dev-19.2.32/tests/migration/test_scalability.py +552 -0
  106. sbcli_dev-19.2.32/tests/migration/test_unit_controller.py +694 -0
  107. sbcli_dev-19.2.32/tests/migration/test_unit_model.py +125 -0
  108. sbcli_dev-19.2.32/tests/migration/test_unit_runner_helpers.py +360 -0
  109. sbcli_dev-19.2.32/tests/migration/topology_loader.py +635 -0
  110. sbcli_dev-19.2.32/tests/test_backup.py +999 -0
  111. sbcli_dev-19.2.32/tests/test_dual_fault_tolerance.py +803 -0
  112. sbcli_dev-19.2.32/tests/test_dual_ft_e2e.py +1324 -0
  113. sbcli_dev-19.2.32/tests/test_imports.py +87 -0
  114. sbcli_dev-19.2.32/tests/test_nvmeof_security.py +749 -0
  115. sbcli_dev-19.2.32/tests/test_nvmeof_security_e2e.py +782 -0
  116. sbcli_dev-19.2.32/tests/test_port_allocation.py +984 -0
  117. sbcli_dev-19.2.30/LICENSE +0 -21
  118. sbcli_dev-19.2.30/simplyblock_core/controllers/lvol_events.py +0 -119
  119. sbcli_dev-19.2.30/simplyblock_core/controllers/pool_events.py +0 -53
  120. sbcli_dev-19.2.30/simplyblock_core/env_var +0 -6
  121. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockdevices.yaml +0 -135
  122. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblocklvols.yaml +0 -144
  123. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockpools.yaml +0 -96
  124. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockstorageclusters.yaml +0 -173
  125. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockstoragenodes.yaml +0 -204
  126. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblocktasks.yaml +0 -84
  127. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/_helpers.tpl +0 -21
  128. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/app_k8s.yaml +0 -497
  129. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/dashboards.yaml +0 -12515
  130. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/monitoring_secret.yaml +0 -23
  131. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/simplyblock-manager.yaml +0 -196
  132. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/simplyblock_customresource.yaml +0 -145
  133. sbcli_dev-19.2.30/simplyblock_web/static/openapi.json +0 -1
  134. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/README.md +0 -0
  135. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/requirements.txt +0 -0
  136. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  137. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/sbcli_dev.egg-info/entry_points.txt +0 -0
  138. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/sbcli_dev.egg-info/requires.txt +0 -0
  139. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/setup.cfg +0 -0
  140. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/setup.py +0 -0
  141. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_cli/__init__.py +0 -0
  142. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_cli/main.py +0 -0
  143. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/__init__.py +0 -0
  144. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/__init__.py +0 -0
  145. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/events_controller.py +0 -0
  146. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/mgmt_events.py +0 -0
  147. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/qos_controller.py +0 -0
  148. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/tasks_events.py +0 -0
  149. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
  150. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/distr_controller.py +0 -0
  151. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/fw_api_client.py +0 -0
  152. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/__init__.py +0 -0
  153. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/base_model.py +0 -0
  154. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/events.py +0 -0
  155. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/hublvol.py +0 -0
  156. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/iface.py +0 -0
  157. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/mgmt_node.py +0 -0
  158. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/nvme_device.py +0 -0
  159. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/port_stat.py +0 -0
  160. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/qos.py +0 -0
  161. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/snapshot.py +0 -0
  162. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/models/stats.py +0 -0
  163. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/prom_client.py +0 -0
  164. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/__init__.py +0 -0
  165. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  166. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  167. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/.helmignore +0 -0
  168. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbbackups.yaml +0 -0
  169. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbclusters.yaml +0 -0
  170. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbrestores.yaml +0 -0
  171. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/app_svc.yaml +0 -0
  172. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/clusterrole.yaml +0 -0
  173. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/csi-hostpath-driverinfo.yaml +0 -0
  174. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/csi-hostpath-plugin.yaml +0 -0
  175. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/charts/templates/storage_class.yaml +0 -0
  176. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  177. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/config_docker.sh +0 -0
  178. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboard.yml +0 -0
  179. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  180. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  181. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  182. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  183. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  184. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  185. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/datasource.yml +0 -0
  186. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/db_config_double.sh +0 -0
  187. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/db_config_single.sh +0 -0
  188. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  189. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  190. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  191. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
  192. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/foundation.yml +0 -0
  193. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/haproxy.cfg +0 -0
  194. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/helpers/__init__.py +0 -0
  195. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/helpers/deploy_cluster.sh +0 -0
  196. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/helpers/destroy_cluster.sh +0 -0
  197. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +0 -0
  198. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/install_deps.sh +0 -0
  199. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/objstore.yml +0 -0
  200. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  201. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
  202. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/run_ssh.sh +0 -0
  203. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/set_db_config.sh +0 -0
  204. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  205. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/__init__.py +0 -0
  206. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/cap_monitor.py +0 -0
  207. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
  208. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/device_monitor.py +0 -0
  209. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/install_service.sh +0 -0
  210. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  211. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/new_device_discovery.py +0 -0
  212. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/remove_service.sh +0 -0
  213. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/service_template.service +0 -0
  214. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
  215. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
  216. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
  217. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/shell_utils.py +0 -0
  218. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/test/test_models.py +0 -0
  219. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/utils/helpers.py +0 -0
  220. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/utils/pci.py +0 -0
  221. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  222. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/README.md +0 -0
  223. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/__init__.py +0 -0
  224. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/__init__.py +0 -0
  225. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/internal/__init__.py +0 -0
  226. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/internal/node_api_basic.py +0 -0
  227. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/internal/storage_node/__init__.py +0 -0
  228. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/device.py +0 -0
  229. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/lvol.py +0 -0
  230. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/metrics.py +0 -0
  231. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/mgmt_node.py +0 -0
  232. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/pool.py +0 -0
  233. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/snapshot.py +0 -0
  234. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/static/swagger.yaml +0 -0
  235. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v1/swagger_ui.py +0 -0
  236. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/management_node.py +0 -0
  237. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/snapshot.py +0 -0
  238. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/api/v2/util.py +0 -0
  239. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/app.py +0 -0
  240. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/node_utils.py +0 -0
  241. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/node_webapp.py +0 -0
  242. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/delete.py +0 -0
  243. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/deploy.py +0 -0
  244. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  245. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  246. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/is_up.py +0 -0
  247. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/list_deps.py +0 -0
  248. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/rpac.yaml +0 -0
  249. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/static/tst.py +0 -0
  250. /sbcli_dev-19.2.30/simplyblock_web/test/__init__.py → /sbcli_dev-19.2.32/simplyblock_web/templates/Untitled-1.j2 +0 -0
  251. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  252. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/templates/ubuntu_kernel_extra.yaml.j2 +0 -0
  253. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/test/conftest.py +0 -0
  254. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/test/pytest.ini +0 -0
  255. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/test/requirements.txt +0 -0
  256. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/test/util.py +0 -0
  257. {sbcli_dev-19.2.30 → sbcli_dev-19.2.32}/simplyblock_web/utils.py +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 19.2.30
3
+ Version: 19.2.32
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
7
7
  Author-email: hamdy@simplyblock.io
8
8
  Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
9
  Requires-Dist: foundationdb==7.3.63
11
10
  Requires-Dist: requests
12
11
  Requires-Dist: prettytable>=3.10.0
@@ -39,7 +38,6 @@ Dynamic: author-email
39
38
  Dynamic: description
40
39
  Dynamic: description-content-type
41
40
  Dynamic: home-page
42
- Dynamic: license-file
43
41
  Dynamic: requires-dist
44
42
  Dynamic: summary
45
43
 
@@ -12,4 +12,4 @@ exclude = ['simplyblock_web/test']
12
12
 
13
13
  [tool.pytest.ini_options]
14
14
  pythonpath = "."
15
- testpaths = ['simplyblock_core/test', 'simplyblock_web/test']
15
+ testpaths = ['simplyblock_core/test', 'simplyblock_web/test', 'tests']
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 19.2.30
3
+ Version: 19.2.32
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
7
7
  Author-email: hamdy@simplyblock.io
8
8
  Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
9
  Requires-Dist: foundationdb==7.3.63
11
10
  Requires-Dist: requests
12
11
  Requires-Dist: prettytable>=3.10.0
@@ -39,7 +38,6 @@ Dynamic: author-email
39
38
  Dynamic: description
40
39
  Dynamic: description-content-type
41
40
  Dynamic: home-page
42
- Dynamic: license-file
43
41
  Dynamic: requires-dist
44
42
  Dynamic: summary
45
43
 
@@ -1,4 +1,3 @@
1
- LICENSE
2
1
  README.md
3
2
  pyproject.toml
4
3
  requirements.txt
@@ -27,6 +26,8 @@ simplyblock_core/shell_utils.py
27
26
  simplyblock_core/snode_client.py
28
27
  simplyblock_core/storage_node_ops.py
29
28
  simplyblock_core/controllers/__init__.py
29
+ simplyblock_core/controllers/backup_controller.py
30
+ simplyblock_core/controllers/backup_events.py
30
31
  simplyblock_core/controllers/cluster_events.py
31
32
  simplyblock_core/controllers/device_controller.py
32
33
  simplyblock_core/controllers/device_events.py
@@ -35,6 +36,8 @@ simplyblock_core/controllers/health_controller.py
35
36
  simplyblock_core/controllers/lvol_controller.py
36
37
  simplyblock_core/controllers/lvol_events.py
37
38
  simplyblock_core/controllers/mgmt_events.py
39
+ simplyblock_core/controllers/migration_controller.py
40
+ simplyblock_core/controllers/migration_events.py
38
41
  simplyblock_core/controllers/pool_controller.py
39
42
  simplyblock_core/controllers/pool_events.py
40
43
  simplyblock_core/controllers/qos_controller.py
@@ -45,12 +48,14 @@ simplyblock_core/controllers/tasks_controller.py
45
48
  simplyblock_core/controllers/tasks_events.py
46
49
  simplyblock_core/controllers/tcp_ports_events.py
47
50
  simplyblock_core/models/__init__.py
51
+ simplyblock_core/models/backup.py
48
52
  simplyblock_core/models/base_model.py
49
53
  simplyblock_core/models/cluster.py
50
54
  simplyblock_core/models/events.py
51
55
  simplyblock_core/models/hublvol.py
52
56
  simplyblock_core/models/iface.py
53
57
  simplyblock_core/models/job_schedule.py
58
+ simplyblock_core/models/lvol_migration.py
54
59
  simplyblock_core/models/lvol_model.py
55
60
  simplyblock_core/models/mgmt_node.py
56
61
  simplyblock_core/models/nvme_device.py
@@ -88,13 +93,6 @@ simplyblock_core/scripts/charts/values.yaml
88
93
  simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbbackups.yaml
89
94
  simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbclusters.yaml
90
95
  simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbrestores.yaml
91
- simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockdevices.yaml
92
- simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblocklvols.yaml
93
- simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockpools.yaml
94
- simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockstorageclusters.yaml
95
- simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockstoragenodes.yaml
96
- simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblocktasks.yaml
97
- simplyblock_core/scripts/charts/templates/_helpers.tpl
98
96
  simplyblock_core/scripts/charts/templates/app_configmap.yaml
99
97
  simplyblock_core/scripts/charts/templates/app_ingress.yaml
100
98
  simplyblock_core/scripts/charts/templates/app_k8s.yaml
@@ -111,8 +109,6 @@ simplyblock_core/scripts/charts/templates/monitoring_ingress.yaml
111
109
  simplyblock_core/scripts/charts/templates/monitoring_k8s.yaml
112
110
  simplyblock_core/scripts/charts/templates/monitoring_secret.yaml
113
111
  simplyblock_core/scripts/charts/templates/monitoring_svc.yaml
114
- simplyblock_core/scripts/charts/templates/simplyblock-manager.yaml
115
- simplyblock_core/scripts/charts/templates/simplyblock_customresource.yaml
116
112
  simplyblock_core/scripts/charts/templates/storage_class.yaml
117
113
  simplyblock_core/scripts/dashboards/cluster.json
118
114
  simplyblock_core/scripts/dashboards/devices.json
@@ -141,8 +137,11 @@ simplyblock_core/services/snapshot_monitor.py
141
137
  simplyblock_core/services/spdk_http_proxy_server.py
142
138
  simplyblock_core/services/storage_node_monitor.py
143
139
  simplyblock_core/services/tasks_cluster_status.py
140
+ simplyblock_core/services/tasks_runner_backup.py
141
+ simplyblock_core/services/tasks_runner_backup_merge.py
144
142
  simplyblock_core/services/tasks_runner_failed_migration.py
145
143
  simplyblock_core/services/tasks_runner_jc_comp.py
144
+ simplyblock_core/services/tasks_runner_lvol_migration.py
146
145
  simplyblock_core/services/tasks_runner_migration.py
147
146
  simplyblock_core/services/tasks_runner_new_dev_migration.py
148
147
  simplyblock_core/services/tasks_runner_node_add.py
@@ -182,10 +181,12 @@ simplyblock_web/api/v1/storage_node.py
182
181
  simplyblock_web/api/v1/swagger_ui.py
183
182
  simplyblock_web/api/v1/static/swagger.yaml
184
183
  simplyblock_web/api/v2/__init__.py
184
+ simplyblock_web/api/v2/backup.py
185
185
  simplyblock_web/api/v2/cluster.py
186
186
  simplyblock_web/api/v2/device.py
187
187
  simplyblock_web/api/v2/dtos.py
188
188
  simplyblock_web/api/v2/management_node.py
189
+ simplyblock_web/api/v2/migration.py
189
190
  simplyblock_web/api/v2/pool.py
190
191
  simplyblock_web/api/v2/snapshot.py
191
192
  simplyblock_web/api/v2/storage_node.py
@@ -201,9 +202,12 @@ simplyblock_web/static/list_deps.py
201
202
  simplyblock_web/static/openapi.json
202
203
  simplyblock_web/static/rpac.yaml
203
204
  simplyblock_web/static/tst.py
205
+ simplyblock_web/templates/Untitled-1.j2
204
206
  simplyblock_web/templates/caching_deploy_spdk.yaml.j2
205
207
  simplyblock_web/templates/oc_storage_core_isolation.yaml.j2
208
+ simplyblock_web/templates/oc_storage_cpu_topology.yaml.j2
206
209
  simplyblock_web/templates/storage_core_isolation.yaml.j2
210
+ simplyblock_web/templates/storage_cpu_topology.yaml.j2
207
211
  simplyblock_web/templates/storage_deploy_spdk.yaml.j2
208
212
  simplyblock_web/templates/storage_init_job.yaml.j2
209
213
  simplyblock_web/templates/ubuntu_kernel_extra.yaml.j2
@@ -211,4 +215,24 @@ simplyblock_web/test/__init__.py
211
215
  simplyblock_web/test/conftest.py
212
216
  simplyblock_web/test/pytest.ini
213
217
  simplyblock_web/test/requirements.txt
214
- simplyblock_web/test/util.py
218
+ simplyblock_web/test/util.py
219
+ tests/__init__.py
220
+ tests/test_backup.py
221
+ tests/test_dual_fault_tolerance.py
222
+ tests/test_dual_ft_e2e.py
223
+ tests/test_imports.py
224
+ tests/test_nvmeof_security.py
225
+ tests/test_nvmeof_security_e2e.py
226
+ tests/test_port_allocation.py
227
+ tests/migration/__init__.py
228
+ tests/migration/conftest.py
229
+ tests/migration/db_setup.py
230
+ tests/migration/mock_rpc_server.py
231
+ tests/migration/test_complex_tree.py
232
+ tests/migration/test_ctl.py
233
+ tests/migration/test_migration_flow.py
234
+ tests/migration/test_scalability.py
235
+ tests/migration/test_unit_controller.py
236
+ tests/migration/test_unit_model.py
237
+ tests/migration/test_unit_runner_helpers.py
238
+ tests/migration/topology_loader.py
@@ -1,3 +1,4 @@
1
1
  simplyblock_cli
2
2
  simplyblock_core
3
3
  simplyblock_web
4
+ tests
@@ -6,7 +6,7 @@ import sys
6
6
  import traceback
7
7
 
8
8
  from simplyblock_cli.clibase import CLIWrapperBase, range_type, size_type
9
- from simplyblock_core import utils
9
+ from simplyblock_core import utils, constants
10
10
 
11
11
  class CLIWrapper(CLIWrapperBase):
12
12
 
@@ -78,6 +78,11 @@ class CLIWrapper(CLIWrapperBase):
78
78
  if self.developer_mode:
79
79
  self.init_storage_node__set(subparser)
80
80
  self.init_storage_node__new_device_from_failed(subparser)
81
+ self.init_storage_node__list_snapshots(subparser)
82
+ self.init_storage_node__list_lvols(subparser)
83
+ self.init_storage_node__repair_lvstore(subparser)
84
+ if self.developer_mode:
85
+ self.init_storage_node__lvs_dump_tree(subparser)
81
86
 
82
87
 
83
88
  def init_storage_node__deploy(self, subparser):
@@ -88,7 +93,7 @@ class CLIWrapper(CLIWrapperBase):
88
93
  def init_storage_node__configure(self, subparser):
89
94
  subcommand = self.add_sub_command(subparser, 'configure', 'Prepare a configuration file to be used when adding the storage node')
90
95
  argument = subcommand.add_argument('--max-lvol', help='Max logical volume per storage node', type=int, dest='max_lvol', required=True)
91
- argument = subcommand.add_argument('--max-size', help='Maximum amount of GB to be utilized on this storage node', type=str, dest='max_prov', required=False)
96
+ argument = subcommand.add_argument('--max-size', help='Maximum amount of Huge Pages to be set on the node', type=str, dest='max_prov', required=False)
92
97
  argument = subcommand.add_argument('--nodes-per-socket', help='number of each node to be added per each socket.', type=int, default=1, dest='nodes_per_socket')
93
98
  argument = subcommand.add_argument('--sockets-to-use', help='The system socket to use when adding the storage nodes', type=str, default='0', dest='sockets_to_use')
94
99
  argument = subcommand.add_argument('--cores-percentage', help='The percentage of cores to be used for spdk (0-99)', type=range_type(0, 99), default=0, dest='cores_percentage')
@@ -96,7 +101,10 @@ class CLIWrapper(CLIWrapperBase):
96
101
  argument = subcommand.add_argument('--pci-blocked', help='Comma separated list of PCI addresses of Nvme devices to not use for storage devices', type=str, default='', dest='pci_blocked', required=False)
97
102
  argument = subcommand.add_argument('--device-model', help='NVMe SSD model string, example: --model PM1628, --device-model and --size-range must be set together', type=str, default='', dest='device_model', required=False)
98
103
  argument = subcommand.add_argument('--size-range', help='NVMe SSD device size range separated by -, can be X(m,g,t) or bytes as integer, example: --size-range 50G-1T or --size-range 1232345-67823987, --device-model and --size-range must be set together', type=str, default='', dest='size_range', required=False)
104
+ argument = subcommand.add_argument('--nvme-names', help='Comma separated list of nvme namespace names like nvme0n1,nvme1n1...', type=str, default='', dest='nvme_names', required=False)
99
105
  argument = subcommand.add_argument('--force', help='Force format detected or passed nvme pci address to 4K and clean partitions', dest='force', action='store_true')
106
+ argument = subcommand.add_argument('--calculate-hp-only', help='Calculate the minimum required huge pages, it depends on the following params: --cores-percentage, --sockets-to-use, --max-lvol, --nodes-per-socket, --number-of-devices', dest='calculate_hp_only', action='store_true')
107
+ argument = subcommand.add_argument('--number-of-devices', help='number of devices that will be used on this host, For calculating huge pages memory only', type=int, dest='number_of_devices')
100
108
 
101
109
  def init_storage_node__configure_upgrade(self, subparser):
102
110
  subcommand = self.add_sub_command(subparser, 'configure-upgrade', 'Upgrade the automated configuration file with new changes of cpu mask or storage devices')
@@ -114,6 +122,7 @@ class CLIWrapper(CLIWrapperBase):
114
122
  subcommand.add_argument('node_addr', help='Address of storage node api to add, like <node-ip>:5000', type=str)
115
123
  subcommand.add_argument('ifname', help='Management interface name', type=str)
116
124
  argument = subcommand.add_argument('--journal-partition', help='1: auto-create small partitions for journal on nvme devices. 0: use a separate (the smallest) nvme device of the node for journal. The journal needs a maximum of 3 percent of total available raw disk space.', type=int, default=1, dest='partitions')
125
+ argument = subcommand.add_argument('--format-4k', help='Force format nvme devices with 4K', dest='format_4k', action='store_true')
117
126
  if self.developer_mode:
118
127
  argument = subcommand.add_argument('--jm-percent', help='Number in percent to use for JM from each device', type=int, default=3, dest='jm_percent')
119
128
  argument = subcommand.add_argument('--data-nics', help='Storage network interface names. currently one interface is supported.', type=str, dest='data_nics', nargs='+')
@@ -310,6 +319,27 @@ class CLIWrapper(CLIWrapperBase):
310
319
  subcommand = self.add_sub_command(subparser, 'new-device-from-failed', 'Adds a new device to from failed device information')
311
320
  subcommand.add_argument('device_id', help='Device id', type=str)
312
321
 
322
+ def init_storage_node__list_snapshots(self, subparser):
323
+ subcommand = self.add_sub_command(subparser, 'list-snapshots', 'List snapshots on a storage node')
324
+ subcommand.add_argument('node_id', help='Node id', type=str)
325
+ argument = subcommand.add_argument('--json', help='Print json output', dest='json', action='store_true')
326
+
327
+ def init_storage_node__list_lvols(self, subparser):
328
+ subcommand = self.add_sub_command(subparser, 'list-lvols', 'List lvols on a storage node')
329
+ subcommand.add_argument('node_id', help='Node id', type=str)
330
+ argument = subcommand.add_argument('--json', help='Print json output', dest='json', action='store_true')
331
+
332
+ def init_storage_node__repair_lvstore(self, subparser):
333
+ subcommand = self.add_sub_command(subparser, 'repair-lvstore', 'Try repair any inconsistencies in lvstore on a storage node')
334
+ subcommand.add_argument('node_id', help='Node id', type=str)
335
+ argument = subcommand.add_argument('--validate-only', help='Validate only, do not perform any repair actions', dest='validate_only', action='store_true')
336
+ argument = subcommand.add_argument('--force-remove-inconsistent', help='Force remove any inconsistent lvols or snapshots', dest='force_remove_inconsistent', action='store_true')
337
+ argument = subcommand.add_argument('--force_remove_wrong_ref', help='Force remove lvols or snapshots with wrong reference count', dest='force_remove_wrong_ref', action='store_true')
338
+
339
+ def init_storage_node__lvs_dump_tree(self, subparser):
340
+ subcommand = self.add_sub_command(subparser, 'lvs-dump-tree', 'dump lvstore tree for debugging')
341
+ subcommand.add_argument('node_id', help='Node id', type=str)
342
+
313
343
 
314
344
  def init_cluster(self):
315
345
  subparser = self.add_command('cluster', 'Cluster commands')
@@ -384,6 +414,7 @@ class CLIWrapper(CLIWrapperBase):
384
414
  argument = subcommand.add_argument('--name', '-n', help='Assigns a name to the newly created cluster.', type=str, dest='name')
385
415
  argument = subcommand.add_argument('--qpair-count', help='NVMe/TCP transport qpair count per logical volume', type=range_type(0, 128), default=32, dest='qpair_count')
386
416
  argument = subcommand.add_argument('--client-qpair-count', help='default NVMe/TCP transport qpair count per logical volume for client', type=range_type(0, 128), default=3, dest='client_qpair_count')
417
+ argument = subcommand.add_argument('--client-data-nic', help='Network interface name from client to use for LVol connection.', type=str, dest='client_data_nic')
387
418
 
388
419
  def init_cluster__add(self, subparser):
389
420
  subcommand = self.add_sub_command(subparser, 'add', 'Adds a new cluster')
@@ -411,6 +442,7 @@ class CLIWrapper(CLIWrapperBase):
411
442
  argument = subcommand.add_argument('--inflight-io-threshold', help='The number of inflight IOs allowed before the IO queuing starts', type=int, default=4, dest='inflight_io_threshold')
412
443
  argument = subcommand.add_argument('--strict-node-anti-affinity', help='Enable strict node anti affinity for storage nodes. Never more than one chunk is placed on a node. This requires a minimum of _data-chunks-in-stripe + parity-chunks-in-stripe + 1_ nodes in the cluster."', dest='strict_node_anti_affinity', action='store_true')
413
444
  argument = subcommand.add_argument('--name', '-n', help='Assigns a name to the newly created cluster.', type=str, dest='name')
445
+ argument = subcommand.add_argument('--client-data-nic', help='Network interface name from client to use for LVol connection.', type=str, dest='client_data_nic')
414
446
 
415
447
  def init_cluster__activate(self, subparser):
416
448
  subcommand = self.add_sub_command(subparser, 'activate', 'Activates a cluster.')
@@ -482,7 +514,6 @@ class CLIWrapper(CLIWrapperBase):
482
514
  subcommand = self.add_sub_command(subparser, 'update', 'Updates a cluster to new version')
483
515
  subcommand.add_argument('cluster_id', help='Cluster id', type=str).completer = self._completer_get_cluster_list
484
516
  argument = subcommand.add_argument('--cp-only', help='Update the control plane only', type=bool, default=False, dest='mgmt_only')
485
- argument = subcommand.add_argument('--restart', help='Restart the management services', type=bool, default=False, dest='restart')
486
517
  argument = subcommand.add_argument('--spdk-image', help='Restart the storage nodes using the provided image', type=str, dest='spdk_image')
487
518
  argument = subcommand.add_argument('--mgmt-image', help='Restart the management services using the provided image', type=str, dest='mgmt_image')
488
519
 
@@ -804,6 +835,10 @@ class CLIWrapper(CLIWrapperBase):
804
835
  else:
805
836
  self.logger.setLevel(logging.INFO)
806
837
 
838
+ if args.version:
839
+ print(f"simplyblock version: {constants.SIMPLY_BLOCK_VERSION}")
840
+ return True
841
+
807
842
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
808
843
 
809
844
  ret = False
@@ -937,6 +972,18 @@ class CLIWrapper(CLIWrapperBase):
937
972
  ret = self.storage_node__set(sub_command, args)
938
973
  elif sub_command in ['new-device-from-failed']:
939
974
  ret = self.storage_node__new_device_from_failed(sub_command, args)
975
+ elif sub_command in ['list-snapshots']:
976
+ ret = self.storage_node__list_snapshots(sub_command, args)
977
+ elif sub_command in ['list-lvols']:
978
+ ret = self.storage_node__list_lvols(sub_command, args)
979
+ elif sub_command in ['repair-lvstore']:
980
+ ret = self.storage_node__repair_lvstore(sub_command, args)
981
+ elif sub_command in ['lvs-dump-tree']:
982
+ if not self.developer_mode:
983
+ print("This command is private.")
984
+ ret = False
985
+ else:
986
+ ret = self.storage_node__lvs_dump_tree(sub_command, args)
940
987
  else:
941
988
  self.parser.print_help()
942
989