sbcli-hmdi 0.0.1__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 (154) hide show
  1. sbcli_hmdi-0.0.1/PKG-INFO +83 -0
  2. sbcli_hmdi-0.0.1/README.md +49 -0
  3. sbcli_hmdi-0.0.1/pyproject.toml +3 -0
  4. sbcli_hmdi-0.0.1/requirements.txt +18 -0
  5. sbcli_hmdi-0.0.1/sbcli_hmdi.egg-info/PKG-INFO +83 -0
  6. sbcli_hmdi-0.0.1/sbcli_hmdi.egg-info/SOURCES.txt +152 -0
  7. sbcli_hmdi-0.0.1/sbcli_hmdi.egg-info/dependency_links.txt +1 -0
  8. sbcli_hmdi-0.0.1/sbcli_hmdi.egg-info/entry_points.txt +2 -0
  9. sbcli_hmdi-0.0.1/sbcli_hmdi.egg-info/requires.txt +18 -0
  10. sbcli_hmdi-0.0.1/sbcli_hmdi.egg-info/top_level.txt +3 -0
  11. sbcli_hmdi-0.0.1/setup.cfg +4 -0
  12. sbcli_hmdi-0.0.1/setup.py +99 -0
  13. sbcli_hmdi-0.0.1/simplyblock_cli/__init__.py +0 -0
  14. sbcli_hmdi-0.0.1/simplyblock_cli/cli.py +1435 -0
  15. sbcli_hmdi-0.0.1/simplyblock_cli/main.py +15 -0
  16. sbcli_hmdi-0.0.1/simplyblock_core/__init__.py +0 -0
  17. sbcli_hmdi-0.0.1/simplyblock_core/cluster_ops.py +1183 -0
  18. sbcli_hmdi-0.0.1/simplyblock_core/cnode_client.py +124 -0
  19. sbcli_hmdi-0.0.1/simplyblock_core/constants.py +129 -0
  20. sbcli_hmdi-0.0.1/simplyblock_core/controllers/__init__.py +0 -0
  21. sbcli_hmdi-0.0.1/simplyblock_core/controllers/caching_node_controller.py +801 -0
  22. sbcli_hmdi-0.0.1/simplyblock_core/controllers/cluster_events.py +71 -0
  23. sbcli_hmdi-0.0.1/simplyblock_core/controllers/device_controller.py +949 -0
  24. sbcli_hmdi-0.0.1/simplyblock_core/controllers/device_events.py +45 -0
  25. sbcli_hmdi-0.0.1/simplyblock_core/controllers/events_controller.py +120 -0
  26. sbcli_hmdi-0.0.1/simplyblock_core/controllers/health_controller.py +518 -0
  27. sbcli_hmdi-0.0.1/simplyblock_core/controllers/lvol_controller.py +1463 -0
  28. sbcli_hmdi-0.0.1/simplyblock_core/controllers/lvol_events.py +45 -0
  29. sbcli_hmdi-0.0.1/simplyblock_core/controllers/mgmt_events.py +40 -0
  30. sbcli_hmdi-0.0.1/simplyblock_core/controllers/pool_controller.py +346 -0
  31. sbcli_hmdi-0.0.1/simplyblock_core/controllers/pool_events.py +31 -0
  32. sbcli_hmdi-0.0.1/simplyblock_core/controllers/snapshot_controller.py +463 -0
  33. sbcli_hmdi-0.0.1/simplyblock_core/controllers/snapshot_events.py +33 -0
  34. sbcli_hmdi-0.0.1/simplyblock_core/controllers/storage_events.py +54 -0
  35. sbcli_hmdi-0.0.1/simplyblock_core/controllers/tasks_controller.py +261 -0
  36. sbcli_hmdi-0.0.1/simplyblock_core/controllers/tasks_events.py +33 -0
  37. sbcli_hmdi-0.0.1/simplyblock_core/db_controller.py +313 -0
  38. sbcli_hmdi-0.0.1/simplyblock_core/distr_controller.py +333 -0
  39. sbcli_hmdi-0.0.1/simplyblock_core/env_var +5 -0
  40. sbcli_hmdi-0.0.1/simplyblock_core/mgmt_node_ops.py +206 -0
  41. sbcli_hmdi-0.0.1/simplyblock_core/models/__init__.py +0 -0
  42. sbcli_hmdi-0.0.1/simplyblock_core/models/base_model.py +195 -0
  43. sbcli_hmdi-0.0.1/simplyblock_core/models/caching_node.py +56 -0
  44. sbcli_hmdi-0.0.1/simplyblock_core/models/cluster.py +69 -0
  45. sbcli_hmdi-0.0.1/simplyblock_core/models/deployer.py +56 -0
  46. sbcli_hmdi-0.0.1/simplyblock_core/models/events.py +37 -0
  47. sbcli_hmdi-0.0.1/simplyblock_core/models/iface.py +18 -0
  48. sbcli_hmdi-0.0.1/simplyblock_core/models/job_schedule.py +39 -0
  49. sbcli_hmdi-0.0.1/simplyblock_core/models/lvol_model.py +61 -0
  50. sbcli_hmdi-0.0.1/simplyblock_core/models/mgmt_node.py +12 -0
  51. sbcli_hmdi-0.0.1/simplyblock_core/models/nvme_device.py +71 -0
  52. sbcli_hmdi-0.0.1/simplyblock_core/models/pool.py +33 -0
  53. sbcli_hmdi-0.0.1/simplyblock_core/models/port_stat.py +23 -0
  54. sbcli_hmdi-0.0.1/simplyblock_core/models/snapshot.py +23 -0
  55. sbcli_hmdi-0.0.1/simplyblock_core/models/stats.py +109 -0
  56. sbcli_hmdi-0.0.1/simplyblock_core/models/storage_node.py +87 -0
  57. sbcli_hmdi-0.0.1/simplyblock_core/pci_utils.py +28 -0
  58. sbcli_hmdi-0.0.1/simplyblock_core/rpc_client.py +984 -0
  59. sbcli_hmdi-0.0.1/simplyblock_core/scripts/__init__.py +63 -0
  60. sbcli_hmdi-0.0.1/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +116 -0
  61. sbcli_hmdi-0.0.1/simplyblock_core/scripts/alerting/alert_rules.yaml +426 -0
  62. sbcli_hmdi-0.0.1/simplyblock_core/scripts/clean_local_storage_deploy.sh +13 -0
  63. sbcli_hmdi-0.0.1/simplyblock_core/scripts/config_docker.sh +28 -0
  64. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboard.yml +12 -0
  65. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboards/cluster.json +2356 -0
  66. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboards/devices.json +2433 -0
  67. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboards/lvols.json +2529 -0
  68. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboards/node-exporter.json +23743 -0
  69. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboards/nodes.json +2522 -0
  70. sbcli_hmdi-0.0.1/simplyblock_core/scripts/dashboards/pools.json +2399 -0
  71. sbcli_hmdi-0.0.1/simplyblock_core/scripts/datasource.yml +20 -0
  72. sbcli_hmdi-0.0.1/simplyblock_core/scripts/db_config_double.sh +3 -0
  73. sbcli_hmdi-0.0.1/simplyblock_core/scripts/db_config_single.sh +2 -0
  74. sbcli_hmdi-0.0.1/simplyblock_core/scripts/deploy_fdb.sh +7 -0
  75. sbcli_hmdi-0.0.1/simplyblock_core/scripts/deploy_stack.sh +44 -0
  76. sbcli_hmdi-0.0.1/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +235 -0
  77. sbcli_hmdi-0.0.1/simplyblock_core/scripts/docker-compose-swarm.yml +326 -0
  78. sbcli_hmdi-0.0.1/simplyblock_core/scripts/foundation.yml +40 -0
  79. sbcli_hmdi-0.0.1/simplyblock_core/scripts/haproxy.cfg +89 -0
  80. sbcli_hmdi-0.0.1/simplyblock_core/scripts/install_deps.sh +30 -0
  81. sbcli_hmdi-0.0.1/simplyblock_core/scripts/objstore.yml +3 -0
  82. sbcli_hmdi-0.0.1/simplyblock_core/scripts/prepare_fdb.sh +12 -0
  83. sbcli_hmdi-0.0.1/simplyblock_core/scripts/prometheus.yml +16 -0
  84. sbcli_hmdi-0.0.1/simplyblock_core/scripts/run_ssh.sh +2 -0
  85. sbcli_hmdi-0.0.1/simplyblock_core/scripts/set_db_config.sh +3 -0
  86. sbcli_hmdi-0.0.1/simplyblock_core/scripts/stack_deploy_wait.sh +182 -0
  87. sbcli_hmdi-0.0.1/simplyblock_core/services/__init__.py +125 -0
  88. sbcli_hmdi-0.0.1/simplyblock_core/services/cached_lvol_stat_collector.py +88 -0
  89. sbcli_hmdi-0.0.1/simplyblock_core/services/caching_node_monitor.py +86 -0
  90. sbcli_hmdi-0.0.1/simplyblock_core/services/cap_monitor.py +54 -0
  91. sbcli_hmdi-0.0.1/simplyblock_core/services/capacity_and_stats_collector.py +194 -0
  92. sbcli_hmdi-0.0.1/simplyblock_core/services/device_monitor.py +43 -0
  93. sbcli_hmdi-0.0.1/simplyblock_core/services/health_check_service.py +252 -0
  94. sbcli_hmdi-0.0.1/simplyblock_core/services/install_service.sh +34 -0
  95. sbcli_hmdi-0.0.1/simplyblock_core/services/log_agg_service.py +66 -0
  96. sbcli_hmdi-0.0.1/simplyblock_core/services/lvol_monitor.py +76 -0
  97. sbcli_hmdi-0.0.1/simplyblock_core/services/lvol_stat_collector.py +234 -0
  98. sbcli_hmdi-0.0.1/simplyblock_core/services/main_distr_event_collector.py +204 -0
  99. sbcli_hmdi-0.0.1/simplyblock_core/services/mgmt_node_monitor.py +86 -0
  100. sbcli_hmdi-0.0.1/simplyblock_core/services/new_device_discovery.py +54 -0
  101. sbcli_hmdi-0.0.1/simplyblock_core/services/port_stat_collector.py +63 -0
  102. sbcli_hmdi-0.0.1/simplyblock_core/services/remove_service.sh +7 -0
  103. sbcli_hmdi-0.0.1/simplyblock_core/services/service_template.service +16 -0
  104. sbcli_hmdi-0.0.1/simplyblock_core/services/spdk_http_proxy_server.py +165 -0
  105. sbcli_hmdi-0.0.1/simplyblock_core/services/storage_node_monitor.py +263 -0
  106. sbcli_hmdi-0.0.1/simplyblock_core/services/tasks_runner_failed_migration.py +158 -0
  107. sbcli_hmdi-0.0.1/simplyblock_core/services/tasks_runner_migration.py +145 -0
  108. sbcli_hmdi-0.0.1/simplyblock_core/services/tasks_runner_new_dev_migration.py +168 -0
  109. sbcli_hmdi-0.0.1/simplyblock_core/services/tasks_runner_node_add.py +60 -0
  110. sbcli_hmdi-0.0.1/simplyblock_core/services/tasks_runner_restart.py +242 -0
  111. sbcli_hmdi-0.0.1/simplyblock_core/shell_utils.py +9 -0
  112. sbcli_hmdi-0.0.1/simplyblock_core/snode_client.py +136 -0
  113. sbcli_hmdi-0.0.1/simplyblock_core/storage_node_ops.py +3326 -0
  114. sbcli_hmdi-0.0.1/simplyblock_core/utils.py +716 -0
  115. sbcli_hmdi-0.0.1/simplyblock_core/workers/cleanup_foundationdb.py +126 -0
  116. sbcli_hmdi-0.0.1/simplyblock_web/README.md +999 -0
  117. sbcli_hmdi-0.0.1/simplyblock_web/__init__.py +0 -0
  118. sbcli_hmdi-0.0.1/simplyblock_web/app.py +58 -0
  119. sbcli_hmdi-0.0.1/simplyblock_web/auth_middleware.py +51 -0
  120. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/__init__.py +0 -0
  121. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/caching_node_ops.py +470 -0
  122. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/caching_node_ops_k8s.py +352 -0
  123. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/node_api_basic.py +110 -0
  124. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/node_api_caching_docker.py +173 -0
  125. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/node_api_caching_ks.py +163 -0
  126. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/snode_ops.py +485 -0
  127. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/snode_ops_k8s.py +458 -0
  128. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_caching_node.py +179 -0
  129. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_cluster.py +183 -0
  130. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_deployer.py +421 -0
  131. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_device.py +103 -0
  132. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_lvol.py +306 -0
  133. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_mgmt_node.py +37 -0
  134. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_pool.py +212 -0
  135. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_snapshot.py +68 -0
  136. sbcli_hmdi-0.0.1/simplyblock_web/blueprints/web_api_storage_node.py +292 -0
  137. sbcli_hmdi-0.0.1/simplyblock_web/caching_node_app.py +33 -0
  138. sbcli_hmdi-0.0.1/simplyblock_web/caching_node_app_k8s.py +33 -0
  139. sbcli_hmdi-0.0.1/simplyblock_web/node_utils.py +172 -0
  140. sbcli_hmdi-0.0.1/simplyblock_web/node_webapp.py +56 -0
  141. sbcli_hmdi-0.0.1/simplyblock_web/requirements.txt +6 -0
  142. sbcli_hmdi-0.0.1/simplyblock_web/snode_app.py +33 -0
  143. sbcli_hmdi-0.0.1/simplyblock_web/snode_app_k8s.py +32 -0
  144. sbcli_hmdi-0.0.1/simplyblock_web/static/delete.py +36 -0
  145. sbcli_hmdi-0.0.1/simplyblock_web/static/deploy.py +50 -0
  146. sbcli_hmdi-0.0.1/simplyblock_web/static/deploy_cnode.yaml +22 -0
  147. sbcli_hmdi-0.0.1/simplyblock_web/static/deploy_spdk.yaml +60 -0
  148. sbcli_hmdi-0.0.1/simplyblock_web/static/is_up.py +17 -0
  149. sbcli_hmdi-0.0.1/simplyblock_web/static/list_deps.py +16 -0
  150. sbcli_hmdi-0.0.1/simplyblock_web/static/rpac.yaml +26 -0
  151. sbcli_hmdi-0.0.1/simplyblock_web/static/tst.py +11 -0
  152. sbcli_hmdi-0.0.1/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +109 -0
  153. sbcli_hmdi-0.0.1/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +161 -0
  154. sbcli_hmdi-0.0.1/simplyblock_web/utils.py +107 -0
@@ -0,0 +1,83 @@
1
+ Metadata-Version: 2.2
2
+ Name: sbcli-hmdi
3
+ Version: 0.0.1
4
+ Summary: CLI for managing SimplyBlock cluster
5
+ Home-page: https://www.simplyblock.io/
6
+ Author: Hamdy
7
+ Author-email: hamdy@simplyblock.io
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: foundationdb
10
+ Requires-Dist: requests
11
+ Requires-Dist: numpy
12
+ Requires-Dist: prettytable>=3.10.0
13
+ Requires-Dist: docker
14
+ Requires-Dist: psutil
15
+ Requires-Dist: py-cpuinfo
16
+ Requires-Dist: pytest
17
+ Requires-Dist: mock
18
+ Requires-Dist: setuptools
19
+ Requires-Dist: flask
20
+ Requires-Dist: kubernetes
21
+ Requires-Dist: PyYAML
22
+ Requires-Dist: urllib3
23
+ Requires-Dist: graypy==2.1.0
24
+ Requires-Dist: boto3
25
+ Requires-Dist: jinja2
26
+ Requires-Dist: argcomplete
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: description
30
+ Dynamic: description-content-type
31
+ Dynamic: home-page
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
34
+
35
+
36
+ # Simply Block
37
+ [![Docker Image Build](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml/badge.svg)](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml)
38
+
39
+ [![Python Unit Testing](https://github.com/simplyblock-io/sbcli/actions/workflows/python-testing.yml/badge.svg)](https://github.com/simplyblock-io/sbcli/actions/workflows/python-testing.yml)
40
+
41
+
42
+ ## Install
43
+ Add the package repo from AWS CodeArtifact using [awscli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
44
+
45
+ ```bash
46
+ aws codeartifact login --tool pip --repository sbcli --domain simplyblock --domain-owner 565979732541 --region eu-west-1
47
+ ```
48
+ Install package
49
+ ```bash
50
+ pip install --extra-index-url https://pypi.org/simple sbcli-dev
51
+ ```
52
+
53
+ # Components
54
+
55
+ ## Simply Block Core
56
+ Contains core logic and controllers for the simplyblock cluster
57
+
58
+ ## Simply Block CLI
59
+ Please see this document
60
+ [README.md](../main/simplyblock_cli/README.md)
61
+
62
+
63
+ ## Simply Block Web API
64
+ Please see this document
65
+ [README.md](../main/simplyblock_web/README.md)
66
+
67
+
68
+
69
+ ### local development
70
+
71
+ FoundationDB requires a client library (libfdb_c.dylib) for the Python bindings to interact with the database.
72
+ Depending on the OS architecture, please install the appropriate version from the official github repo
73
+
74
+ ```
75
+ wget https://github.com/apple/foundationdb/releases/download/7.3.3/FoundationDB-7.3.3_arm64.pkg
76
+ ```
77
+
78
+ setup the code on a management node and the webApp code can be developed by building the `docker-compose-dev.yml` file.
79
+
80
+
81
+ ```
82
+ sudo docker compose -f docker-compose-dev.yml up --build -d
83
+ ```
@@ -0,0 +1,49 @@
1
+
2
+ # Simply Block
3
+ [![Docker Image Build](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml/badge.svg)](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml)
4
+
5
+ [![Python Unit Testing](https://github.com/simplyblock-io/sbcli/actions/workflows/python-testing.yml/badge.svg)](https://github.com/simplyblock-io/sbcli/actions/workflows/python-testing.yml)
6
+
7
+
8
+ ## Install
9
+ Add the package repo from AWS CodeArtifact using [awscli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
10
+
11
+ ```bash
12
+ aws codeartifact login --tool pip --repository sbcli --domain simplyblock --domain-owner 565979732541 --region eu-west-1
13
+ ```
14
+ Install package
15
+ ```bash
16
+ pip install --extra-index-url https://pypi.org/simple sbcli-dev
17
+ ```
18
+
19
+ # Components
20
+
21
+ ## Simply Block Core
22
+ Contains core logic and controllers for the simplyblock cluster
23
+
24
+ ## Simply Block CLI
25
+ Please see this document
26
+ [README.md](../main/simplyblock_cli/README.md)
27
+
28
+
29
+ ## Simply Block Web API
30
+ Please see this document
31
+ [README.md](../main/simplyblock_web/README.md)
32
+
33
+
34
+
35
+ ### local development
36
+
37
+ FoundationDB requires a client library (libfdb_c.dylib) for the Python bindings to interact with the database.
38
+ Depending on the OS architecture, please install the appropriate version from the official github repo
39
+
40
+ ```
41
+ wget https://github.com/apple/foundationdb/releases/download/7.3.3/FoundationDB-7.3.3_arm64.pkg
42
+ ```
43
+
44
+ setup the code on a management node and the webApp code can be developed by building the `docker-compose-dev.yml` file.
45
+
46
+
47
+ ```
48
+ sudo docker compose -f docker-compose-dev.yml up --build -d
49
+ ```
@@ -0,0 +1,3 @@
1
+ [build-system]
2
+ requires = ['setuptools>=42']
3
+ build-backend = 'setuptools.build_meta'
@@ -0,0 +1,18 @@
1
+ foundationdb
2
+ requests
3
+ numpy
4
+ prettytable>=3.10.0
5
+ docker
6
+ psutil
7
+ py-cpuinfo
8
+ pytest
9
+ mock
10
+ setuptools
11
+ flask
12
+ kubernetes
13
+ PyYAML
14
+ urllib3
15
+ graypy==2.1.0
16
+ boto3
17
+ jinja2
18
+ argcomplete
@@ -0,0 +1,83 @@
1
+ Metadata-Version: 2.2
2
+ Name: sbcli-hmdi
3
+ Version: 0.0.1
4
+ Summary: CLI for managing SimplyBlock cluster
5
+ Home-page: https://www.simplyblock.io/
6
+ Author: Hamdy
7
+ Author-email: hamdy@simplyblock.io
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: foundationdb
10
+ Requires-Dist: requests
11
+ Requires-Dist: numpy
12
+ Requires-Dist: prettytable>=3.10.0
13
+ Requires-Dist: docker
14
+ Requires-Dist: psutil
15
+ Requires-Dist: py-cpuinfo
16
+ Requires-Dist: pytest
17
+ Requires-Dist: mock
18
+ Requires-Dist: setuptools
19
+ Requires-Dist: flask
20
+ Requires-Dist: kubernetes
21
+ Requires-Dist: PyYAML
22
+ Requires-Dist: urllib3
23
+ Requires-Dist: graypy==2.1.0
24
+ Requires-Dist: boto3
25
+ Requires-Dist: jinja2
26
+ Requires-Dist: argcomplete
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: description
30
+ Dynamic: description-content-type
31
+ Dynamic: home-page
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
34
+
35
+
36
+ # Simply Block
37
+ [![Docker Image Build](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml/badge.svg)](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml)
38
+
39
+ [![Python Unit Testing](https://github.com/simplyblock-io/sbcli/actions/workflows/python-testing.yml/badge.svg)](https://github.com/simplyblock-io/sbcli/actions/workflows/python-testing.yml)
40
+
41
+
42
+ ## Install
43
+ Add the package repo from AWS CodeArtifact using [awscli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
44
+
45
+ ```bash
46
+ aws codeartifact login --tool pip --repository sbcli --domain simplyblock --domain-owner 565979732541 --region eu-west-1
47
+ ```
48
+ Install package
49
+ ```bash
50
+ pip install --extra-index-url https://pypi.org/simple sbcli-dev
51
+ ```
52
+
53
+ # Components
54
+
55
+ ## Simply Block Core
56
+ Contains core logic and controllers for the simplyblock cluster
57
+
58
+ ## Simply Block CLI
59
+ Please see this document
60
+ [README.md](../main/simplyblock_cli/README.md)
61
+
62
+
63
+ ## Simply Block Web API
64
+ Please see this document
65
+ [README.md](../main/simplyblock_web/README.md)
66
+
67
+
68
+
69
+ ### local development
70
+
71
+ FoundationDB requires a client library (libfdb_c.dylib) for the Python bindings to interact with the database.
72
+ Depending on the OS architecture, please install the appropriate version from the official github repo
73
+
74
+ ```
75
+ wget https://github.com/apple/foundationdb/releases/download/7.3.3/FoundationDB-7.3.3_arm64.pkg
76
+ ```
77
+
78
+ setup the code on a management node and the webApp code can be developed by building the `docker-compose-dev.yml` file.
79
+
80
+
81
+ ```
82
+ sudo docker compose -f docker-compose-dev.yml up --build -d
83
+ ```
@@ -0,0 +1,152 @@
1
+ README.md
2
+ pyproject.toml
3
+ requirements.txt
4
+ setup.py
5
+ sbcli_hmdi.egg-info/PKG-INFO
6
+ sbcli_hmdi.egg-info/SOURCES.txt
7
+ sbcli_hmdi.egg-info/dependency_links.txt
8
+ sbcli_hmdi.egg-info/entry_points.txt
9
+ sbcli_hmdi.egg-info/requires.txt
10
+ sbcli_hmdi.egg-info/top_level.txt
11
+ simplyblock_cli/__init__.py
12
+ simplyblock_cli/cli.py
13
+ simplyblock_cli/main.py
14
+ simplyblock_core/__init__.py
15
+ simplyblock_core/cluster_ops.py
16
+ simplyblock_core/cnode_client.py
17
+ simplyblock_core/constants.py
18
+ simplyblock_core/db_controller.py
19
+ simplyblock_core/distr_controller.py
20
+ simplyblock_core/env_var
21
+ simplyblock_core/mgmt_node_ops.py
22
+ simplyblock_core/pci_utils.py
23
+ simplyblock_core/rpc_client.py
24
+ simplyblock_core/shell_utils.py
25
+ simplyblock_core/snode_client.py
26
+ simplyblock_core/storage_node_ops.py
27
+ simplyblock_core/utils.py
28
+ simplyblock_core/controllers/__init__.py
29
+ simplyblock_core/controllers/caching_node_controller.py
30
+ simplyblock_core/controllers/cluster_events.py
31
+ simplyblock_core/controllers/device_controller.py
32
+ simplyblock_core/controllers/device_events.py
33
+ simplyblock_core/controllers/events_controller.py
34
+ simplyblock_core/controllers/health_controller.py
35
+ simplyblock_core/controllers/lvol_controller.py
36
+ simplyblock_core/controllers/lvol_events.py
37
+ simplyblock_core/controllers/mgmt_events.py
38
+ simplyblock_core/controllers/pool_controller.py
39
+ simplyblock_core/controllers/pool_events.py
40
+ simplyblock_core/controllers/snapshot_controller.py
41
+ simplyblock_core/controllers/snapshot_events.py
42
+ simplyblock_core/controllers/storage_events.py
43
+ simplyblock_core/controllers/tasks_controller.py
44
+ simplyblock_core/controllers/tasks_events.py
45
+ simplyblock_core/models/__init__.py
46
+ simplyblock_core/models/base_model.py
47
+ simplyblock_core/models/caching_node.py
48
+ simplyblock_core/models/cluster.py
49
+ simplyblock_core/models/deployer.py
50
+ simplyblock_core/models/events.py
51
+ simplyblock_core/models/iface.py
52
+ simplyblock_core/models/job_schedule.py
53
+ simplyblock_core/models/lvol_model.py
54
+ simplyblock_core/models/mgmt_node.py
55
+ simplyblock_core/models/nvme_device.py
56
+ simplyblock_core/models/pool.py
57
+ simplyblock_core/models/port_stat.py
58
+ simplyblock_core/models/snapshot.py
59
+ simplyblock_core/models/stats.py
60
+ simplyblock_core/models/storage_node.py
61
+ simplyblock_core/scripts/__init__.py
62
+ simplyblock_core/scripts/clean_local_storage_deploy.sh
63
+ simplyblock_core/scripts/config_docker.sh
64
+ simplyblock_core/scripts/dashboard.yml
65
+ simplyblock_core/scripts/datasource.yml
66
+ simplyblock_core/scripts/db_config_double.sh
67
+ simplyblock_core/scripts/db_config_single.sh
68
+ simplyblock_core/scripts/deploy_fdb.sh
69
+ simplyblock_core/scripts/deploy_stack.sh
70
+ simplyblock_core/scripts/docker-compose-swarm-monitoring.yml
71
+ simplyblock_core/scripts/docker-compose-swarm.yml
72
+ simplyblock_core/scripts/foundation.yml
73
+ simplyblock_core/scripts/haproxy.cfg
74
+ simplyblock_core/scripts/install_deps.sh
75
+ simplyblock_core/scripts/objstore.yml
76
+ simplyblock_core/scripts/prepare_fdb.sh
77
+ simplyblock_core/scripts/prometheus.yml
78
+ simplyblock_core/scripts/run_ssh.sh
79
+ simplyblock_core/scripts/set_db_config.sh
80
+ simplyblock_core/scripts/stack_deploy_wait.sh
81
+ simplyblock_core/scripts/alerting/alert_resources.yaml.j2
82
+ simplyblock_core/scripts/alerting/alert_rules.yaml
83
+ simplyblock_core/scripts/dashboards/cluster.json
84
+ simplyblock_core/scripts/dashboards/devices.json
85
+ simplyblock_core/scripts/dashboards/lvols.json
86
+ simplyblock_core/scripts/dashboards/node-exporter.json
87
+ simplyblock_core/scripts/dashboards/nodes.json
88
+ simplyblock_core/scripts/dashboards/pools.json
89
+ simplyblock_core/services/__init__.py
90
+ simplyblock_core/services/cached_lvol_stat_collector.py
91
+ simplyblock_core/services/caching_node_monitor.py
92
+ simplyblock_core/services/cap_monitor.py
93
+ simplyblock_core/services/capacity_and_stats_collector.py
94
+ simplyblock_core/services/device_monitor.py
95
+ simplyblock_core/services/health_check_service.py
96
+ simplyblock_core/services/install_service.sh
97
+ simplyblock_core/services/log_agg_service.py
98
+ simplyblock_core/services/lvol_monitor.py
99
+ simplyblock_core/services/lvol_stat_collector.py
100
+ simplyblock_core/services/main_distr_event_collector.py
101
+ simplyblock_core/services/mgmt_node_monitor.py
102
+ simplyblock_core/services/new_device_discovery.py
103
+ simplyblock_core/services/port_stat_collector.py
104
+ simplyblock_core/services/remove_service.sh
105
+ simplyblock_core/services/service_template.service
106
+ simplyblock_core/services/spdk_http_proxy_server.py
107
+ simplyblock_core/services/storage_node_monitor.py
108
+ simplyblock_core/services/tasks_runner_failed_migration.py
109
+ simplyblock_core/services/tasks_runner_migration.py
110
+ simplyblock_core/services/tasks_runner_new_dev_migration.py
111
+ simplyblock_core/services/tasks_runner_node_add.py
112
+ simplyblock_core/services/tasks_runner_restart.py
113
+ simplyblock_core/workers/cleanup_foundationdb.py
114
+ simplyblock_web/README.md
115
+ simplyblock_web/__init__.py
116
+ simplyblock_web/app.py
117
+ simplyblock_web/auth_middleware.py
118
+ simplyblock_web/caching_node_app.py
119
+ simplyblock_web/caching_node_app_k8s.py
120
+ simplyblock_web/node_utils.py
121
+ simplyblock_web/node_webapp.py
122
+ simplyblock_web/requirements.txt
123
+ simplyblock_web/snode_app.py
124
+ simplyblock_web/snode_app_k8s.py
125
+ simplyblock_web/utils.py
126
+ simplyblock_web/blueprints/__init__.py
127
+ simplyblock_web/blueprints/caching_node_ops.py
128
+ simplyblock_web/blueprints/caching_node_ops_k8s.py
129
+ simplyblock_web/blueprints/node_api_basic.py
130
+ simplyblock_web/blueprints/node_api_caching_docker.py
131
+ simplyblock_web/blueprints/node_api_caching_ks.py
132
+ simplyblock_web/blueprints/snode_ops.py
133
+ simplyblock_web/blueprints/snode_ops_k8s.py
134
+ simplyblock_web/blueprints/web_api_caching_node.py
135
+ simplyblock_web/blueprints/web_api_cluster.py
136
+ simplyblock_web/blueprints/web_api_deployer.py
137
+ simplyblock_web/blueprints/web_api_device.py
138
+ simplyblock_web/blueprints/web_api_lvol.py
139
+ simplyblock_web/blueprints/web_api_mgmt_node.py
140
+ simplyblock_web/blueprints/web_api_pool.py
141
+ simplyblock_web/blueprints/web_api_snapshot.py
142
+ simplyblock_web/blueprints/web_api_storage_node.py
143
+ simplyblock_web/static/delete.py
144
+ simplyblock_web/static/deploy.py
145
+ simplyblock_web/static/deploy_cnode.yaml
146
+ simplyblock_web/static/deploy_spdk.yaml
147
+ simplyblock_web/static/is_up.py
148
+ simplyblock_web/static/list_deps.py
149
+ simplyblock_web/static/rpac.yaml
150
+ simplyblock_web/static/tst.py
151
+ simplyblock_web/templates/caching_deploy_spdk.yaml.j2
152
+ simplyblock_web/templates/storage_deploy_spdk.yaml.j2
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ sbcli-hmdi = simplyblock_cli.cli:main
@@ -0,0 +1,18 @@
1
+ foundationdb
2
+ requests
3
+ numpy
4
+ prettytable>=3.10.0
5
+ docker
6
+ psutil
7
+ py-cpuinfo
8
+ pytest
9
+ mock
10
+ setuptools
11
+ flask
12
+ kubernetes
13
+ PyYAML
14
+ urllib3
15
+ graypy==2.1.0
16
+ boto3
17
+ jinja2
18
+ argcomplete
@@ -0,0 +1,3 @@
1
+ simplyblock_cli
2
+ simplyblock_core
3
+ simplyblock_web
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,99 @@
1
+ import os
2
+
3
+ from setuptools import setup, find_packages
4
+
5
+ from setuptools.command.install import install as _install
6
+
7
+
8
+ def _post_install():
9
+ from subprocess import getstatusoutput
10
+ _, out = getstatusoutput('activate-global-python-argcomplete --user')
11
+ print(out)
12
+
13
+ if os.environ.get("SHELL") and os.environ.get("HOME"):
14
+ if "zsh" in os.environ.get("SHELL", ""):
15
+ path = f"{os.environ.get('HOME')}/.zshenv"
16
+ else:
17
+ path = f"{os.environ.get('HOME')}/.bash_completion"
18
+ if os.path.isfile(path):
19
+ _, out = getstatusoutput(f'source {path}')
20
+
21
+
22
+ class install(_install):
23
+ def run(self):
24
+ _install.run(self)
25
+ self.execute(_post_install, (), msg="Running post install task")
26
+
27
+
28
+ def get_env_var(name, default=None):
29
+ if not name:
30
+ return False
31
+ with open("simplyblock_core/env_var", "r", encoding="utf-8") as fh:
32
+ lines = fh.readlines()
33
+ data = {}
34
+ for line in lines:
35
+ if not line or line.startswith("#"):
36
+ continue
37
+ try:
38
+ k, v = line.split("=")
39
+ data[k.strip()] = v.strip()
40
+ except:
41
+ pass
42
+ return data.get(name, default)
43
+
44
+
45
+ def gen_data_files(*dirs):
46
+ results = []
47
+ for src_dir in dirs:
48
+ files = [f for f in os.listdir(src_dir) if os.path.isfile(f"{src_dir}/{f}") and f != ".DS_Store"]
49
+ if not files:
50
+ return []
51
+ results.append((src_dir, [f"{src_dir}/{f}" for f in files]))
52
+ dirs = [f for f in os.listdir(src_dir) if os.path.isdir(f"{src_dir}/{f}")]
53
+ for dir in dirs:
54
+ results.extend(gen_data_files(os.path.join(src_dir, dir)))
55
+ return results
56
+
57
+
58
+ def get_long_description():
59
+ with open("README.md", "r", encoding="utf-8") as fh:
60
+ return fh.read()
61
+
62
+
63
+ def get_requirements():
64
+ with open("requirements.txt", "r", encoding="utf-8") as fh:
65
+ return fh.readlines()
66
+
67
+
68
+ COMMAND_NAME = get_env_var("SIMPLY_BLOCK_COMMAND_NAME", "sbcli")
69
+ VERSION = get_env_var("SIMPLY_BLOCK_VERSION", "1")
70
+
71
+ data_files = gen_data_files("simplyblock_core","simplyblock_web")
72
+ data_files.append(('', ["requirements.txt"]))
73
+ # data_files.append(('/etc/simplyblock', ["requirements.txt"]))
74
+
75
+
76
+ setup(
77
+ name=COMMAND_NAME,
78
+ version=VERSION,
79
+ packages=find_packages(exclude=["e2e*"]),
80
+ url='https://www.simplyblock.io/',
81
+ author='Hamdy',
82
+ author_email='hamdy@simplyblock.io',
83
+ description='CLI for managing SimplyBlock cluster',
84
+ long_description=get_long_description(),
85
+ long_description_content_type="text/markdown",
86
+ install_requires=get_requirements(),
87
+ entry_points={
88
+ 'console_scripts': [
89
+ f'{COMMAND_NAME}=simplyblock_cli.cli:main',
90
+ ]
91
+ },
92
+ include_package_data=True,
93
+ data_files=data_files,
94
+ package_data={
95
+ '': ["/etc/simplyblock/requirements.txt"],
96
+ '/etc/simplyblock': ["requirements.txt"]
97
+ },
98
+ cmdclass={'install': install},
99
+ )
File without changes