sbcli-dev 19.2.27__tar.gz → 19.2.30__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 (229) hide show
  1. {sbcli_dev-19.2.27/sbcli_dev.egg-info → sbcli_dev-19.2.30}/PKG-INFO +2 -1
  2. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/requirements.txt +1 -0
  3. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30/sbcli_dev.egg-info}/PKG-INFO +2 -1
  4. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/sbcli_dev.egg-info/SOURCES.txt +11 -0
  5. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/sbcli_dev.egg-info/requires.txt +1 -0
  6. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_cli/cli.py +22 -9
  7. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_cli/clibase.py +59 -33
  8. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/cluster_ops.py +138 -80
  9. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/constants.py +19 -8
  10. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/cluster_events.py +28 -0
  11. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/device_controller.py +217 -144
  12. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/device_events.py +20 -0
  13. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/health_controller.py +148 -83
  14. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/lvol_controller.py +24 -25
  15. sbcli_dev-19.2.30/simplyblock_core/controllers/lvol_events.py +119 -0
  16. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/pool_controller.py +32 -10
  17. sbcli_dev-19.2.30/simplyblock_core/controllers/pool_events.py +53 -0
  18. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/snapshot_controller.py +10 -1
  19. sbcli_dev-19.2.30/simplyblock_core/controllers/storage_events.py +150 -0
  20. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/tasks_controller.py +34 -20
  21. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/db_controller.py +9 -3
  22. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/distr_controller.py +55 -40
  23. sbcli_dev-19.2.30/simplyblock_core/env_var +6 -0
  24. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/fw_api_client.py +3 -2
  25. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/mgmt_node_ops.py +2 -8
  26. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/cluster.py +3 -0
  27. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/nvme_device.py +36 -7
  28. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/pool.py +6 -0
  29. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/storage_node.py +78 -5
  30. sbcli_dev-19.2.30/simplyblock_core/prom_client.py +130 -0
  31. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/rpc_client.py +29 -12
  32. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/Chart.yaml +2 -3
  33. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockdevices.yaml +135 -0
  34. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblocklvols.yaml +144 -0
  35. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockpools.yaml +96 -0
  36. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockstorageclusters.yaml +173 -0
  37. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblockstoragenodes.yaml +204 -0
  38. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/crds/simplyblock.simplyblock.io_simplyblocktasks.yaml +84 -0
  39. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/_helpers.tpl +21 -0
  40. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/app_configmap.yaml +8 -5
  41. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/app_ingress.yaml +4 -2
  42. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/app_k8s.yaml +497 -0
  43. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/app_sa.yaml +12 -5
  44. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/csi-hostpath-plugin.yaml +0 -2
  45. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/dashboards.yaml +12515 -0
  46. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/foundationdb.yaml +0 -1
  47. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/mongodb.yaml +3 -1
  48. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/monitoring_configmap.yaml +3 -11
  49. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/monitoring_ingress.yaml +4 -3
  50. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/monitoring_k8s.yaml +32 -118
  51. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/monitoring_secret.yaml +23 -0
  52. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/monitoring_svc.yaml +5 -30
  53. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/simplyblock-manager.yaml +196 -0
  54. sbcli_dev-19.2.30/simplyblock_core/scripts/charts/templates/simplyblock_customresource.yaml +145 -0
  55. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/values.yaml +56 -17
  56. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/config_docker.sh +1 -1
  57. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/docker-compose-swarm.yml +1 -0
  58. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/haproxy.cfg +10 -0
  59. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/install_deps.sh +3 -3
  60. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/capacity_and_stats_collector.py +37 -19
  61. sbcli_dev-19.2.30/simplyblock_core/services/health_check_service.py +284 -0
  62. sbcli_dev-19.2.30/simplyblock_core/services/lvol_monitor.py +370 -0
  63. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/lvol_stat_collector.py +63 -55
  64. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/main_distr_event_collector.py +50 -44
  65. sbcli_dev-19.2.30/simplyblock_core/services/snapshot_monitor.py +264 -0
  66. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/spdk_http_proxy_server.py +67 -7
  67. sbcli_dev-19.2.30/simplyblock_core/services/storage_node_monitor.py +447 -0
  68. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_runner_failed_migration.py +6 -2
  69. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_runner_jc_comp.py +11 -5
  70. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_runner_migration.py +14 -17
  71. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_runner_new_dev_migration.py +6 -2
  72. sbcli_dev-19.2.30/simplyblock_core/services/tasks_runner_node_add.py +79 -0
  73. sbcli_dev-19.2.30/simplyblock_core/services/tasks_runner_port_allow.py +260 -0
  74. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_runner_restart.py +34 -18
  75. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_runner_sync_lvol_del.py +6 -0
  76. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/snode_client.py +13 -6
  77. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/storage_node_ops.py +427 -364
  78. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/test/test_utils.py +54 -1
  79. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/utils/__init__.py +771 -70
  80. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/internal/storage_node/docker.py +16 -7
  81. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/internal/storage_node/kubernetes.py +12 -5
  82. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/__init__.py +24 -0
  83. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/cluster.py +56 -1
  84. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/pool.py +8 -27
  85. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/storage_node.py +5 -0
  86. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/__init__.py +4 -0
  87. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/cluster.py +31 -12
  88. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/device.py +22 -8
  89. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/dtos.py +92 -16
  90. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/pool.py +25 -13
  91. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/storage_node.py +41 -18
  92. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/task.py +7 -8
  93. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/volume.py +13 -6
  94. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/auth_middleware.py +4 -0
  95. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/node_configure.py +113 -65
  96. sbcli_dev-19.2.30/simplyblock_web/static/openapi.json +1 -0
  97. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/templates/storage_core_isolation.yaml.j2 +6 -6
  98. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +31 -6
  99. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/templates/storage_init_job.yaml.j2 +22 -9
  100. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/utils.py +1 -1
  101. sbcli_dev-19.2.27/simplyblock_core/controllers/lvol_events.py +0 -45
  102. sbcli_dev-19.2.27/simplyblock_core/controllers/pool_events.py +0 -31
  103. sbcli_dev-19.2.27/simplyblock_core/controllers/storage_events.py +0 -74
  104. sbcli_dev-19.2.27/simplyblock_core/env_var +0 -6
  105. sbcli_dev-19.2.27/simplyblock_core/scripts/charts/templates/app_k8s.yaml +0 -1149
  106. sbcli_dev-19.2.27/simplyblock_core/scripts/charts/templates/dashboards.yaml +0 -27307
  107. sbcli_dev-19.2.27/simplyblock_core/scripts/charts/templates/monitoring_secret.yaml +0 -23
  108. sbcli_dev-19.2.27/simplyblock_core/services/health_check_service.py +0 -264
  109. sbcli_dev-19.2.27/simplyblock_core/services/lvol_monitor.py +0 -353
  110. sbcli_dev-19.2.27/simplyblock_core/services/snapshot_monitor.py +0 -267
  111. sbcli_dev-19.2.27/simplyblock_core/services/storage_node_monitor.py +0 -420
  112. sbcli_dev-19.2.27/simplyblock_core/services/tasks_runner_node_add.py +0 -58
  113. sbcli_dev-19.2.27/simplyblock_core/services/tasks_runner_port_allow.py +0 -227
  114. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/LICENSE +0 -0
  115. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/README.md +0 -0
  116. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/pyproject.toml +0 -0
  117. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/sbcli_dev.egg-info/dependency_links.txt +0 -0
  118. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/sbcli_dev.egg-info/entry_points.txt +0 -0
  119. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/sbcli_dev.egg-info/top_level.txt +0 -0
  120. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/setup.cfg +0 -0
  121. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/setup.py +0 -0
  122. {sbcli_dev-19.2.27/simplyblock_web/test → sbcli_dev-19.2.30/simplyblock_cli}/__init__.py +0 -0
  123. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_cli/main.py +0 -0
  124. {sbcli_dev-19.2.27/simplyblock_web → sbcli_dev-19.2.30/simplyblock_core}/__init__.py +0 -0
  125. {sbcli_dev-19.2.27/simplyblock_core/scripts/helpers → sbcli_dev-19.2.30/simplyblock_core/controllers}/__init__.py +0 -0
  126. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/events_controller.py +0 -0
  127. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/mgmt_events.py +0 -0
  128. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/qos_controller.py +0 -0
  129. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/snapshot_events.py +0 -0
  130. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/tasks_events.py +0 -0
  131. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
  132. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/__init__.py +0 -0
  133. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/base_model.py +0 -0
  134. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/events.py +0 -0
  135. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/hublvol.py +0 -0
  136. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/iface.py +0 -0
  137. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/job_schedule.py +0 -0
  138. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/lvol_model.py +0 -0
  139. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/mgmt_node.py +0 -0
  140. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/port_stat.py +0 -0
  141. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/qos.py +0 -0
  142. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/snapshot.py +0 -0
  143. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/models/stats.py +0 -0
  144. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/__init__.py +0 -0
  145. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
  146. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
  147. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/.helmignore +0 -0
  148. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbbackups.yaml +0 -0
  149. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbclusters.yaml +0 -0
  150. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbrestores.yaml +0 -0
  151. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/app_svc.yaml +0 -0
  152. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/clusterrole.yaml +0 -0
  153. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/csi-hostpath-driverinfo.yaml +0 -0
  154. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/charts/templates/storage_class.yaml +0 -0
  155. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
  156. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboard.yml +0 -0
  157. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
  158. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboards/devices.json +0 -0
  159. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
  160. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
  161. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
  162. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/dashboards/pools.json +0 -0
  163. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/datasource.yml +0 -0
  164. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/db_config_double.sh +0 -0
  165. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/db_config_single.sh +0 -0
  166. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
  167. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/deploy_stack.sh +0 -0
  168. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
  169. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/foundation.yml +0 -0
  170. {sbcli_dev-19.2.27/simplyblock_core/controllers → sbcli_dev-19.2.30/simplyblock_core/scripts/helpers}/__init__.py +0 -0
  171. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/helpers/deploy_cluster.sh +0 -0
  172. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/helpers/destroy_cluster.sh +0 -0
  173. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +0 -0
  174. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/objstore.yml +0 -0
  175. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
  176. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
  177. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/run_ssh.sh +0 -0
  178. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/set_db_config.sh +0 -0
  179. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
  180. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/__init__.py +0 -0
  181. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/cap_monitor.py +0 -0
  182. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/device_monitor.py +0 -0
  183. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/install_service.sh +0 -0
  184. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
  185. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/new_device_discovery.py +0 -0
  186. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/remove_service.sh +0 -0
  187. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/service_template.service +0 -0
  188. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/services/tasks_cluster_status.py +0 -0
  189. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/shell_utils.py +0 -0
  190. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/test/test_models.py +0 -0
  191. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/utils/helpers.py +0 -0
  192. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/utils/pci.py +0 -0
  193. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
  194. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/README.md +0 -0
  195. {sbcli_dev-19.2.27/simplyblock_core → sbcli_dev-19.2.30/simplyblock_web}/__init__.py +0 -0
  196. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/__init__.py +0 -0
  197. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/internal/__init__.py +0 -0
  198. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/internal/node_api_basic.py +0 -0
  199. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/internal/storage_node/__init__.py +0 -0
  200. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/device.py +0 -0
  201. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/lvol.py +0 -0
  202. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/metrics.py +0 -0
  203. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/mgmt_node.py +0 -0
  204. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/snapshot.py +0 -0
  205. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/static/swagger.yaml +0 -0
  206. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v1/swagger_ui.py +0 -0
  207. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/management_node.py +0 -0
  208. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/snapshot.py +0 -0
  209. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/api/v2/util.py +0 -0
  210. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/app.py +0 -0
  211. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/node_utils.py +0 -0
  212. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/node_utils_k8s.py +0 -0
  213. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/node_webapp.py +0 -0
  214. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/delete.py +0 -0
  215. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/deploy.py +0 -0
  216. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/deploy_cnode.yaml +0 -0
  217. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/deploy_spdk.yaml +0 -0
  218. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/is_up.py +0 -0
  219. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/list_deps.py +0 -0
  220. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/rpac.yaml +0 -0
  221. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/static/tst.py +0 -0
  222. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
  223. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/templates/oc_storage_core_isolation.yaml.j2 +0 -0
  224. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/templates/ubuntu_kernel_extra.yaml.j2 +0 -0
  225. {sbcli_dev-19.2.27/simplyblock_cli → sbcli_dev-19.2.30/simplyblock_web/test}/__init__.py +0 -0
  226. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/test/conftest.py +0 -0
  227. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/test/pytest.ini +0 -0
  228. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/test/requirements.txt +0 -0
  229. {sbcli_dev-19.2.27 → sbcli_dev-19.2.30}/simplyblock_web/test/util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 19.2.27
3
+ Version: 19.2.30
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -33,6 +33,7 @@ Requires-Dist: flask-openapi3
33
33
  Requires-Dist: jsonschema
34
34
  Requires-Dist: fastapi
35
35
  Requires-Dist: uvicorn
36
+ Requires-Dist: prometheus_api_client
36
37
  Dynamic: author
37
38
  Dynamic: author-email
38
39
  Dynamic: description
@@ -24,3 +24,4 @@ flask-openapi3
24
24
  jsonschema
25
25
  fastapi
26
26
  uvicorn
27
+ prometheus_api_client
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sbcli-dev
3
- Version: 19.2.27
3
+ Version: 19.2.30
4
4
  Summary: CLI for managing SimplyBlock cluster
5
5
  Home-page: https://www.simplyblock.io/
6
6
  Author: Hamdy
@@ -33,6 +33,7 @@ Requires-Dist: flask-openapi3
33
33
  Requires-Dist: jsonschema
34
34
  Requires-Dist: fastapi
35
35
  Requires-Dist: uvicorn
36
+ Requires-Dist: prometheus_api_client
36
37
  Dynamic: author
37
38
  Dynamic: author-email
38
39
  Dynamic: description
@@ -21,6 +21,7 @@ simplyblock_core/distr_controller.py
21
21
  simplyblock_core/env_var
22
22
  simplyblock_core/fw_api_client.py
23
23
  simplyblock_core/mgmt_node_ops.py
24
+ simplyblock_core/prom_client.py
24
25
  simplyblock_core/rpc_client.py
25
26
  simplyblock_core/shell_utils.py
26
27
  simplyblock_core/snode_client.py
@@ -87,6 +88,13 @@ simplyblock_core/scripts/charts/values.yaml
87
88
  simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbbackups.yaml
88
89
  simplyblock_core/scripts/charts/crds/apps.foundationdb.org_foundationdbclusters.yaml
89
90
  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
90
98
  simplyblock_core/scripts/charts/templates/app_configmap.yaml
91
99
  simplyblock_core/scripts/charts/templates/app_ingress.yaml
92
100
  simplyblock_core/scripts/charts/templates/app_k8s.yaml
@@ -103,6 +111,8 @@ simplyblock_core/scripts/charts/templates/monitoring_ingress.yaml
103
111
  simplyblock_core/scripts/charts/templates/monitoring_k8s.yaml
104
112
  simplyblock_core/scripts/charts/templates/monitoring_secret.yaml
105
113
  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
106
116
  simplyblock_core/scripts/charts/templates/storage_class.yaml
107
117
  simplyblock_core/scripts/dashboards/cluster.json
108
118
  simplyblock_core/scripts/dashboards/devices.json
@@ -188,6 +198,7 @@ simplyblock_web/static/deploy_cnode.yaml
188
198
  simplyblock_web/static/deploy_spdk.yaml
189
199
  simplyblock_web/static/is_up.py
190
200
  simplyblock_web/static/list_deps.py
201
+ simplyblock_web/static/openapi.json
191
202
  simplyblock_web/static/rpac.yaml
192
203
  simplyblock_web/static/tst.py
193
204
  simplyblock_web/templates/caching_deploy_spdk.yaml.j2
@@ -24,3 +24,4 @@ flask-openapi3
24
24
  jsonschema
25
25
  fastapi
26
26
  uvicorn
27
+ prometheus_api_client
@@ -5,7 +5,7 @@ import logging
5
5
  import sys
6
6
  import traceback
7
7
 
8
- from simplyblock_cli.clibase import CLIWrapperBase, range_type, regex_type, size_type
8
+ from simplyblock_cli.clibase import CLIWrapperBase, range_type, size_type
9
9
  from simplyblock_core import utils
10
10
 
11
11
  class CLIWrapper(CLIWrapperBase):
@@ -36,6 +36,7 @@ class CLIWrapper(CLIWrapperBase):
36
36
  self.init_storage_node__configure(subparser)
37
37
  self.init_storage_node__configure_upgrade(subparser)
38
38
  self.init_storage_node__deploy_cleaner(subparser)
39
+ self.init_storage_node__clean_devices(subparser)
39
40
  self.init_storage_node__add_node(subparser)
40
41
  self.init_storage_node__delete(subparser)
41
42
  self.init_storage_node__remove(subparser)
@@ -51,7 +52,6 @@ class CLIWrapper(CLIWrapperBase):
51
52
  if self.developer_mode:
52
53
  self.init_storage_node__device_testing_mode(subparser)
53
54
  self.init_storage_node__get_device(subparser)
54
- self.init_storage_node__reset_device(subparser)
55
55
  self.init_storage_node__restart_device(subparser)
56
56
  self.init_storage_node__add_device(subparser)
57
57
  self.init_storage_node__remove_device(subparser)
@@ -77,6 +77,7 @@ class CLIWrapper(CLIWrapperBase):
77
77
  self.init_storage_node__dump_lvstore(subparser)
78
78
  if self.developer_mode:
79
79
  self.init_storage_node__set(subparser)
80
+ self.init_storage_node__new_device_from_failed(subparser)
80
81
 
81
82
 
82
83
  def init_storage_node__deploy(self, subparser):
@@ -87,11 +88,15 @@ class CLIWrapper(CLIWrapperBase):
87
88
  def init_storage_node__configure(self, subparser):
88
89
  subcommand = self.add_sub_command(subparser, 'configure', 'Prepare a configuration file to be used when adding the storage node')
89
90
  argument = subcommand.add_argument('--max-lvol', help='Max logical volume per storage node', type=int, dest='max_lvol', required=True)
90
- argument = subcommand.add_argument('--max-size', help='Maximum amount of GB to be utilized on this storage node', type=str, dest='max_prov', 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)
91
92
  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')
92
93
  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
+ 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')
93
95
  argument = subcommand.add_argument('--pci-allowed', help='Comma separated list of PCI addresses of Nvme devices to use for storage devices.', type=str, default='', dest='pci_allowed', required=False)
94
96
  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
+ 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
+ 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)
99
+ argument = subcommand.add_argument('--force', help='Force format detected or passed nvme pci address to 4K and clean partitions', dest='force', action='store_true')
95
100
 
96
101
  def init_storage_node__configure_upgrade(self, subparser):
97
102
  subcommand = self.add_sub_command(subparser, 'configure-upgrade', 'Upgrade the automated configuration file with new changes of cpu mask or storage devices')
@@ -99,6 +104,10 @@ class CLIWrapper(CLIWrapperBase):
99
104
  def init_storage_node__deploy_cleaner(self, subparser):
100
105
  subcommand = self.add_sub_command(subparser, 'deploy-cleaner', 'Cleans a previous simplyblock deploy (local run)')
101
106
 
107
+ def init_storage_node__clean_devices(self, subparser):
108
+ subcommand = self.add_sub_command(subparser, 'clean-devices', 'clean devices stored in /etc/simplyblock/sn_config_file (local run)')
109
+ argument = subcommand.add_argument('--config-path', help='Config path to read stored nvme devices from', type=str, default='/etc/simplyblock/sn_config_file', dest='config_path', required=False)
110
+
102
111
  def init_storage_node__add_node(self, subparser):
103
112
  subcommand = self.add_sub_command(subparser, 'add-node', 'Adds a storage node by its IP address')
104
113
  subcommand.add_argument('cluster_id', help='Cluster id', type=str)
@@ -210,13 +219,10 @@ class CLIWrapper(CLIWrapperBase):
210
219
  subcommand = self.add_sub_command(subparser, 'get-device', 'Gets storage device by its id')
211
220
  subcommand.add_argument('device_id', help='Device id', type=str)
212
221
 
213
- def init_storage_node__reset_device(self, subparser):
214
- subcommand = self.add_sub_command(subparser, 'reset-device', 'Resets a storage device')
215
- subcommand.add_argument('device_id', help='Device id', type=str)
216
-
217
222
  def init_storage_node__restart_device(self, subparser):
218
223
  subcommand = self.add_sub_command(subparser, 'restart-device', 'Restarts a storage device')
219
224
  subcommand.add_argument('device_id', help='Device id', type=str)
225
+ argument = subcommand.add_argument('--force', help='Force remove', dest='force', action='store_true')
220
226
 
221
227
  def init_storage_node__add_device(self, subparser):
222
228
  subcommand = self.add_sub_command(subparser, 'add-device', 'Adds a new storage device')
@@ -276,6 +282,7 @@ class CLIWrapper(CLIWrapperBase):
276
282
  subcommand = self.add_sub_command(subparser, 'restart-jm-device', 'Restarts a journaling device')
277
283
  subcommand.add_argument('jm_device_id', help='Journaling device id', type=str)
278
284
  argument = subcommand.add_argument('--force', help='Force device remove', dest='force', action='store_true')
285
+ argument = subcommand.add_argument('--format', help='Format the Alceml device used for JM device', dest='format', action='store_true')
279
286
 
280
287
  def init_storage_node__send_cluster_map(self, subparser):
281
288
  subcommand = self.add_sub_command(subparser, 'send-cluster-map', 'Sends a new cluster map')
@@ -299,6 +306,10 @@ class CLIWrapper(CLIWrapperBase):
299
306
  subcommand.add_argument('attr_name', help='attr_name', type=str)
300
307
  subcommand.add_argument('attr_value', help='attr_value', type=str)
301
308
 
309
+ def init_storage_node__new_device_from_failed(self, subparser):
310
+ subcommand = self.add_sub_command(subparser, 'new-device-from-failed', 'Adds a new device to from failed device information')
311
+ subcommand.add_argument('device_id', help='Device id', type=str)
312
+
302
313
 
303
314
  def init_cluster(self):
304
315
  subparser = self.add_command('cluster', 'Cluster commands')
@@ -809,6 +820,8 @@ class CLIWrapper(CLIWrapperBase):
809
820
  ret = self.storage_node__configure_upgrade(sub_command, args)
810
821
  elif sub_command in ['deploy-cleaner']:
811
822
  ret = self.storage_node__deploy_cleaner(sub_command, args)
823
+ elif sub_command in ['clean-devices']:
824
+ ret = self.storage_node__clean_devices(sub_command, args)
812
825
  elif sub_command in ['add-node']:
813
826
  if not self.developer_mode:
814
827
  args.jm_percent = 3
@@ -860,8 +873,6 @@ class CLIWrapper(CLIWrapperBase):
860
873
  ret = self.storage_node__device_testing_mode(sub_command, args)
861
874
  elif sub_command in ['get-device']:
862
875
  ret = self.storage_node__get_device(sub_command, args)
863
- elif sub_command in ['reset-device']:
864
- ret = self.storage_node__reset_device(sub_command, args)
865
876
  elif sub_command in ['restart-device']:
866
877
  ret = self.storage_node__restart_device(sub_command, args)
867
878
  elif sub_command in ['add-device']:
@@ -924,6 +935,8 @@ class CLIWrapper(CLIWrapperBase):
924
935
  ret = False
925
936
  else:
926
937
  ret = self.storage_node__set(sub_command, args)
938
+ elif sub_command in ['new-device-from-failed']:
939
+ ret = self.storage_node__new_device_from_failed(sub_command, args)
927
940
  else:
928
941
  self.parser.print_help()
929
942
 
@@ -87,8 +87,7 @@ class CLIWrapperBase:
87
87
  def storage_node__configure(self, sub_command, args):
88
88
  if not args.max_lvol:
89
89
  self.parser.error(f"Mandatory argument '--max-lvol' not provided for {sub_command}")
90
- if not args.max_prov:
91
- self.parser.error(f"Mandatory argument '--max-size' not provided for {sub_command}")
90
+ max_size = getattr(args, "max_prov") or 0
92
91
  sockets_to_use = [0]
93
92
  if args.sockets_to_use:
94
93
  try:
@@ -101,21 +100,38 @@ class CLIWrapperBase:
101
100
  self.parser.error(f"nodes_per_socket {args.nodes_per_socket}must be either 1 or 2")
102
101
  if args.pci_allowed and args.pci_blocked:
103
102
  self.parser.error("pci-allowed and pci-blocked cannot be both specified")
104
- max_prov = utils.parse_size(args.max_prov, assume_unit='G')
103
+ max_prov = utils.parse_size(max_size, assume_unit='G')
105
104
  pci_allowed = []
106
105
  pci_blocked = []
107
106
  if args.pci_allowed:
108
107
  pci_allowed = [str(x) for x in args.pci_allowed.split(',')]
109
108
  if args.pci_blocked:
110
109
  pci_blocked = [str(x) for x in args.pci_blocked.split(',')]
111
-
112
- return storage_ops.generate_automated_deployment_config(args.max_lvol, max_prov, sockets_to_use,
113
- args.nodes_per_socket, pci_allowed, pci_blocked)
110
+ if (args.device_model and not args.size_range) or (not args.device_model and args.size_range):
111
+ self.parser.error("device_model and size_range must be set together")
112
+ use_pci_allowed = bool(args.pci_allowed)
113
+ use_pci_blocked = bool(args.pci_blocked)
114
+ use_model_range = bool(args.device_model and args.size_range)
115
+ if sum([use_pci_allowed, use_pci_blocked, use_model_range]) > 1:
116
+ self.parser.error(
117
+ "Options --pci-allowed, --pci-blocked, and "
118
+ "(--device-model with --size-range) are mutually exclusive; choose only one."
119
+ )
120
+ cores_percentage = int(args.cores_percentage)
121
+
122
+ return storage_ops.generate_automated_deployment_config(
123
+ args.max_lvol, max_prov, sockets_to_use,args.nodes_per_socket,
124
+ pci_allowed, pci_blocked, force=args.force, device_model=args.device_model,
125
+ size_range=args.size_range, cores_percentage=cores_percentage)
114
126
 
115
127
  def storage_node__deploy_cleaner(self, sub_command, args):
116
128
  storage_ops.deploy_cleaner()
117
129
  return True # remove once CLI changed to exceptions
118
130
 
131
+ def storage_node__clean_devices(self, sub_command, args):
132
+ storage_ops.clean_devices(args.config_path)
133
+ return True # remove once CLI changed to exceptions
134
+
119
135
  def storage_node__add_node(self, sub_command, args):
120
136
  cluster_id = args.cluster_id
121
137
  node_addr = args.node_addr
@@ -134,26 +150,29 @@ class CLIWrapperBase:
134
150
  enable_ha_jm = args.enable_ha_jm
135
151
  namespace = args.namespace
136
152
  ha_jm_count = args.ha_jm_count
137
-
138
- out = storage_ops.add_node(
139
- cluster_id=cluster_id,
140
- node_addr=node_addr,
141
- iface_name=ifname,
142
- data_nics_list=data_nics,
143
- max_snap=max_snap,
144
- spdk_image=spdk_image,
145
- spdk_debug=spdk_debug,
146
- small_bufsize=small_bufsize,
147
- large_bufsize=large_bufsize,
148
- num_partitions_per_dev=num_partitions_per_dev,
149
- jm_percent=jm_percent,
150
- enable_test_device=enable_test_device,
151
- namespace=namespace,
152
- enable_ha_jm=enable_ha_jm,
153
- id_device_by_nqn=args.id_device_by_nqn,
154
- partition_size=args.partition_size,
155
- ha_jm_count=ha_jm_count,
156
- )
153
+ try:
154
+ out = storage_ops.add_node(
155
+ cluster_id=cluster_id,
156
+ node_addr=node_addr,
157
+ iface_name=ifname,
158
+ data_nics_list=data_nics,
159
+ max_snap=max_snap,
160
+ spdk_image=spdk_image,
161
+ spdk_debug=spdk_debug,
162
+ small_bufsize=small_bufsize,
163
+ large_bufsize=large_bufsize,
164
+ num_partitions_per_dev=num_partitions_per_dev,
165
+ jm_percent=jm_percent,
166
+ enable_test_device=enable_test_device,
167
+ namespace=namespace,
168
+ enable_ha_jm=enable_ha_jm,
169
+ id_device_by_nqn=args.id_device_by_nqn,
170
+ partition_size=args.partition_size,
171
+ ha_jm_count=ha_jm_count,
172
+ )
173
+ except Exception as e:
174
+ print(e)
175
+ return False
157
176
 
158
177
  return out
159
178
 
@@ -184,11 +203,15 @@ class CLIWrapperBase:
184
203
  large_bufsize = args.large_bufsize
185
204
  ssd_pcie = args.ssd_pcie
186
205
 
187
- return storage_ops.restart_storage_node(
188
- node_id, max_lvol, max_snap, max_prov,
189
- spdk_image, spdk_debug,
190
- small_bufsize, large_bufsize, node_ip=args.node_ip, reattach_volume=reattach_volume, force=args.force,
191
- new_ssd_pcie=ssd_pcie, force_lvol_recreate=args.force_lvol_recreate)
206
+ try:
207
+ return storage_ops.restart_storage_node(
208
+ node_id, max_lvol, max_snap, max_prov,
209
+ spdk_image, spdk_debug,
210
+ small_bufsize, large_bufsize, node_ip=args.node_ip, reattach_volume=reattach_volume, force=args.force,
211
+ new_ssd_pcie=ssd_pcie, force_lvol_recreate=args.force_lvol_recreate)
212
+ except Exception as e:
213
+ print(e)
214
+ return False
192
215
 
193
216
  def storage_node__shutdown(self, sub_command, args):
194
217
  return storage_ops.shutdown_storage_node(args.node_id, args.force)
@@ -233,7 +256,7 @@ class CLIWrapperBase:
233
256
  return device_controller.reset_storage_device(args.device_id)
234
257
 
235
258
  def storage_node__restart_device(self, sub_command, args):
236
- return device_controller.restart_device(args.device_id)
259
+ return device_controller.restart_device(args.device_id, args.force)
237
260
 
238
261
  def storage_node__add_device(self, sub_command, args):
239
262
  return device_controller.add_device(args.device_id)
@@ -292,7 +315,7 @@ class CLIWrapperBase:
292
315
  return device_controller.remove_jm_device(args.jm_device_id, args.force)
293
316
 
294
317
  def storage_node__restart_jm_device(self, sub_command, args):
295
- return device_controller.restart_jm_device(args.jm_device_id, args.force)
318
+ return device_controller.restart_jm_device(args.jm_device_id, args.force, args.format)
296
319
 
297
320
  def storage_node__send_cluster_map(self, sub_command, args):
298
321
  node_id = args.node_id
@@ -310,6 +333,9 @@ class CLIWrapperBase:
310
333
  node_id = args.node_id
311
334
  return storage_ops.dump_lvstore(node_id)
312
335
 
336
+ def storage_node__new_device_from_failed(self, sub_command, args):
337
+ return device_controller.new_device_from_failed(args.device_id)
338
+
313
339
  def storage_node__set(self, sub_command, args):
314
340
  return storage_ops.set_value(args.node_id, args.attr_name, args.attr_value)
315
341