sbcli-chris 0.0.3__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 (164) hide show
  1. sbcli_chris-0.0.3/PKG-INFO +86 -0
  2. sbcli_chris-0.0.3/README.md +49 -0
  3. sbcli_chris-0.0.3/pyproject.toml +3 -0
  4. sbcli_chris-0.0.3/requirements.txt +21 -0
  5. sbcli_chris-0.0.3/sbcli_chris.egg-info/PKG-INFO +86 -0
  6. sbcli_chris-0.0.3/sbcli_chris.egg-info/SOURCES.txt +162 -0
  7. sbcli_chris-0.0.3/sbcli_chris.egg-info/dependency_links.txt +1 -0
  8. sbcli_chris-0.0.3/sbcli_chris.egg-info/entry_points.txt +2 -0
  9. sbcli_chris-0.0.3/sbcli_chris.egg-info/requires.txt +21 -0
  10. sbcli_chris-0.0.3/sbcli_chris.egg-info/top_level.txt +3 -0
  11. sbcli_chris-0.0.3/setup.cfg +4 -0
  12. sbcli_chris-0.0.3/setup.py +109 -0
  13. sbcli_chris-0.0.3/simplyblock_cli/__init__.py +0 -0
  14. sbcli_chris-0.0.3/simplyblock_cli/cli.py +1236 -0
  15. sbcli_chris-0.0.3/simplyblock_cli/clibase.py +822 -0
  16. sbcli_chris-0.0.3/simplyblock_cli/main.py +15 -0
  17. sbcli_chris-0.0.3/simplyblock_core/__init__.py +0 -0
  18. sbcli_chris-0.0.3/simplyblock_core/cluster_ops.py +1434 -0
  19. sbcli_chris-0.0.3/simplyblock_core/cnode_client.py +124 -0
  20. sbcli_chris-0.0.3/simplyblock_core/constants.py +135 -0
  21. sbcli_chris-0.0.3/simplyblock_core/controllers/__init__.py +0 -0
  22. sbcli_chris-0.0.3/simplyblock_core/controllers/caching_node_controller.py +800 -0
  23. sbcli_chris-0.0.3/simplyblock_core/controllers/cluster_events.py +71 -0
  24. sbcli_chris-0.0.3/simplyblock_core/controllers/device_controller.py +952 -0
  25. sbcli_chris-0.0.3/simplyblock_core/controllers/device_events.py +45 -0
  26. sbcli_chris-0.0.3/simplyblock_core/controllers/events_controller.py +123 -0
  27. sbcli_chris-0.0.3/simplyblock_core/controllers/health_controller.py +748 -0
  28. sbcli_chris-0.0.3/simplyblock_core/controllers/lvol_controller.py +1593 -0
  29. sbcli_chris-0.0.3/simplyblock_core/controllers/lvol_events.py +45 -0
  30. sbcli_chris-0.0.3/simplyblock_core/controllers/mgmt_events.py +40 -0
  31. sbcli_chris-0.0.3/simplyblock_core/controllers/pool_controller.py +380 -0
  32. sbcli_chris-0.0.3/simplyblock_core/controllers/pool_events.py +31 -0
  33. sbcli_chris-0.0.3/simplyblock_core/controllers/snapshot_controller.py +575 -0
  34. sbcli_chris-0.0.3/simplyblock_core/controllers/snapshot_events.py +33 -0
  35. sbcli_chris-0.0.3/simplyblock_core/controllers/storage_events.py +54 -0
  36. sbcli_chris-0.0.3/simplyblock_core/controllers/tasks_controller.py +259 -0
  37. sbcli_chris-0.0.3/simplyblock_core/controllers/tasks_events.py +34 -0
  38. sbcli_chris-0.0.3/simplyblock_core/controllers/tcp_ports_events.py +27 -0
  39. sbcli_chris-0.0.3/simplyblock_core/db_controller.py +312 -0
  40. sbcli_chris-0.0.3/simplyblock_core/distr_controller.py +330 -0
  41. sbcli_chris-0.0.3/simplyblock_core/env_var +5 -0
  42. sbcli_chris-0.0.3/simplyblock_core/mgmt_node_ops.py +206 -0
  43. sbcli_chris-0.0.3/simplyblock_core/models/__init__.py +0 -0
  44. sbcli_chris-0.0.3/simplyblock_core/models/base_model.py +199 -0
  45. sbcli_chris-0.0.3/simplyblock_core/models/caching_node.py +56 -0
  46. sbcli_chris-0.0.3/simplyblock_core/models/cluster.py +70 -0
  47. sbcli_chris-0.0.3/simplyblock_core/models/deployer.py +56 -0
  48. sbcli_chris-0.0.3/simplyblock_core/models/events.py +37 -0
  49. sbcli_chris-0.0.3/simplyblock_core/models/hublvol.py +15 -0
  50. sbcli_chris-0.0.3/simplyblock_core/models/iface.py +18 -0
  51. sbcli_chris-0.0.3/simplyblock_core/models/job_schedule.py +39 -0
  52. sbcli_chris-0.0.3/simplyblock_core/models/lvol_model.py +63 -0
  53. sbcli_chris-0.0.3/simplyblock_core/models/mgmt_node.py +12 -0
  54. sbcli_chris-0.0.3/simplyblock_core/models/nvme_device.py +72 -0
  55. sbcli_chris-0.0.3/simplyblock_core/models/pool.py +33 -0
  56. sbcli_chris-0.0.3/simplyblock_core/models/port_stat.py +23 -0
  57. sbcli_chris-0.0.3/simplyblock_core/models/snapshot.py +23 -0
  58. sbcli_chris-0.0.3/simplyblock_core/models/stats.py +109 -0
  59. sbcli_chris-0.0.3/simplyblock_core/models/storage_node.py +215 -0
  60. sbcli_chris-0.0.3/simplyblock_core/pci_utils.py +28 -0
  61. sbcli_chris-0.0.3/simplyblock_core/rpc_client.py +1035 -0
  62. sbcli_chris-0.0.3/simplyblock_core/scripts/__init__.py +63 -0
  63. sbcli_chris-0.0.3/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +116 -0
  64. sbcli_chris-0.0.3/simplyblock_core/scripts/alerting/alert_rules.yaml +725 -0
  65. sbcli_chris-0.0.3/simplyblock_core/scripts/clean_local_storage_deploy.sh +14 -0
  66. sbcli_chris-0.0.3/simplyblock_core/scripts/config_docker.sh +41 -0
  67. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboard.yml +12 -0
  68. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/cluster.json +2356 -0
  69. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/devices.json +2433 -0
  70. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/lvols.json +2542 -0
  71. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/node-exporter.json +23743 -0
  72. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/nodes.json +2732 -0
  73. sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/pools.json +2399 -0
  74. sbcli_chris-0.0.3/simplyblock_core/scripts/datasource.yml +20 -0
  75. sbcli_chris-0.0.3/simplyblock_core/scripts/db_config_double.sh +3 -0
  76. sbcli_chris-0.0.3/simplyblock_core/scripts/db_config_single.sh +2 -0
  77. sbcli_chris-0.0.3/simplyblock_core/scripts/deploy_fdb.sh +7 -0
  78. sbcli_chris-0.0.3/simplyblock_core/scripts/deploy_stack.sh +44 -0
  79. sbcli_chris-0.0.3/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +235 -0
  80. sbcli_chris-0.0.3/simplyblock_core/scripts/docker-compose-swarm.yml +337 -0
  81. sbcli_chris-0.0.3/simplyblock_core/scripts/foundation.yml +40 -0
  82. sbcli_chris-0.0.3/simplyblock_core/scripts/haproxy.cfg +89 -0
  83. sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/__init__.py +0 -0
  84. sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/deploy_cluster.sh +24 -0
  85. sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/destroy_cluster.sh +31 -0
  86. sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +47 -0
  87. sbcli_chris-0.0.3/simplyblock_core/scripts/install_deps.sh +38 -0
  88. sbcli_chris-0.0.3/simplyblock_core/scripts/objstore.yml +3 -0
  89. sbcli_chris-0.0.3/simplyblock_core/scripts/prepare_fdb.sh +12 -0
  90. sbcli_chris-0.0.3/simplyblock_core/scripts/prometheus.yml.j2 +22 -0
  91. sbcli_chris-0.0.3/simplyblock_core/scripts/run_ssh.sh +2 -0
  92. sbcli_chris-0.0.3/simplyblock_core/scripts/set_db_config.sh +3 -0
  93. sbcli_chris-0.0.3/simplyblock_core/scripts/stack_deploy_wait.sh +182 -0
  94. sbcli_chris-0.0.3/simplyblock_core/services/__init__.py +125 -0
  95. sbcli_chris-0.0.3/simplyblock_core/services/cached_lvol_stat_collector.py +88 -0
  96. sbcli_chris-0.0.3/simplyblock_core/services/caching_node_monitor.py +86 -0
  97. sbcli_chris-0.0.3/simplyblock_core/services/cap_monitor.py +65 -0
  98. sbcli_chris-0.0.3/simplyblock_core/services/capacity_and_stats_collector.py +205 -0
  99. sbcli_chris-0.0.3/simplyblock_core/services/device_monitor.py +47 -0
  100. sbcli_chris-0.0.3/simplyblock_core/services/health_check_service.py +286 -0
  101. sbcli_chris-0.0.3/simplyblock_core/services/install_service.sh +34 -0
  102. sbcli_chris-0.0.3/simplyblock_core/services/lvol_monitor.py +150 -0
  103. sbcli_chris-0.0.3/simplyblock_core/services/lvol_stat_collector.py +302 -0
  104. sbcli_chris-0.0.3/simplyblock_core/services/main_distr_event_collector.py +221 -0
  105. sbcli_chris-0.0.3/simplyblock_core/services/mgmt_node_monitor.py +86 -0
  106. sbcli_chris-0.0.3/simplyblock_core/services/new_device_discovery.py +56 -0
  107. sbcli_chris-0.0.3/simplyblock_core/services/remove_service.sh +7 -0
  108. sbcli_chris-0.0.3/simplyblock_core/services/service_template.service +16 -0
  109. sbcli_chris-0.0.3/simplyblock_core/services/spdk/__init__.py +0 -0
  110. sbcli_chris-0.0.3/simplyblock_core/services/spdk/client.py +281 -0
  111. sbcli_chris-0.0.3/simplyblock_core/services/spdk_http_proxy_server.py +165 -0
  112. sbcli_chris-0.0.3/simplyblock_core/services/spdk_stats_collector.py +73 -0
  113. sbcli_chris-0.0.3/simplyblock_core/services/storage_node_monitor.py +362 -0
  114. sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_failed_migration.py +158 -0
  115. sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_migration.py +153 -0
  116. sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_new_dev_migration.py +168 -0
  117. sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_node_add.py +60 -0
  118. sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_restart.py +242 -0
  119. sbcli_chris-0.0.3/simplyblock_core/shell_utils.py +9 -0
  120. sbcli_chris-0.0.3/simplyblock_core/snode_client.py +166 -0
  121. sbcli_chris-0.0.3/simplyblock_core/storage_node_ops.py +3514 -0
  122. sbcli_chris-0.0.3/simplyblock_core/test/test_utils.py +109 -0
  123. sbcli_chris-0.0.3/simplyblock_core/utils.py +942 -0
  124. sbcli_chris-0.0.3/simplyblock_core/workers/cleanup_foundationdb.py +126 -0
  125. sbcli_chris-0.0.3/simplyblock_web/README.md +999 -0
  126. sbcli_chris-0.0.3/simplyblock_web/__init__.py +0 -0
  127. sbcli_chris-0.0.3/simplyblock_web/app.py +53 -0
  128. sbcli_chris-0.0.3/simplyblock_web/auth_middleware.py +65 -0
  129. sbcli_chris-0.0.3/simplyblock_web/blueprints/__init__.py +0 -0
  130. sbcli_chris-0.0.3/simplyblock_web/blueprints/caching_node_ops.py +443 -0
  131. sbcli_chris-0.0.3/simplyblock_web/blueprints/caching_node_ops_k8s.py +344 -0
  132. sbcli_chris-0.0.3/simplyblock_web/blueprints/node_api_basic.py +110 -0
  133. sbcli_chris-0.0.3/simplyblock_web/blueprints/node_api_caching_docker.py +168 -0
  134. sbcli_chris-0.0.3/simplyblock_web/blueprints/node_api_caching_ks.py +157 -0
  135. sbcli_chris-0.0.3/simplyblock_web/blueprints/snode_ops.py +561 -0
  136. sbcli_chris-0.0.3/simplyblock_web/blueprints/snode_ops_k8s.py +433 -0
  137. sbcli_chris-0.0.3/simplyblock_web/blueprints/swagger_ui_blueprint.py +27 -0
  138. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_caching_node.py +176 -0
  139. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_cluster.py +276 -0
  140. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_deployer.py +421 -0
  141. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_device.py +103 -0
  142. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_lvol.py +299 -0
  143. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_metrics.py +197 -0
  144. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_mgmt_node.py +37 -0
  145. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_pool.py +244 -0
  146. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_snapshot.py +69 -0
  147. sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_storage_node.py +303 -0
  148. sbcli_chris-0.0.3/simplyblock_web/node_utils.py +220 -0
  149. sbcli_chris-0.0.3/simplyblock_web/node_utils_k8s.py +104 -0
  150. sbcli_chris-0.0.3/simplyblock_web/node_webapp.py +61 -0
  151. sbcli_chris-0.0.3/simplyblock_web/requirements.txt +12 -0
  152. sbcli_chris-0.0.3/simplyblock_web/static/SimplyBlock-API.postman_collection.json +3316 -0
  153. sbcli_chris-0.0.3/simplyblock_web/static/delete.py +36 -0
  154. sbcli_chris-0.0.3/simplyblock_web/static/deploy.py +50 -0
  155. sbcli_chris-0.0.3/simplyblock_web/static/deploy_cnode.yaml +22 -0
  156. sbcli_chris-0.0.3/simplyblock_web/static/deploy_spdk.yaml +60 -0
  157. sbcli_chris-0.0.3/simplyblock_web/static/is_up.py +17 -0
  158. sbcli_chris-0.0.3/simplyblock_web/static/list_deps.py +16 -0
  159. sbcli_chris-0.0.3/simplyblock_web/static/rpac.yaml +26 -0
  160. sbcli_chris-0.0.3/simplyblock_web/static/swagger.yaml +20353 -0
  161. sbcli_chris-0.0.3/simplyblock_web/static/tst.py +11 -0
  162. sbcli_chris-0.0.3/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +109 -0
  163. sbcli_chris-0.0.3/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +168 -0
  164. sbcli_chris-0.0.3/simplyblock_web/utils.py +86 -0
@@ -0,0 +1,86 @@
1
+ Metadata-Version: 2.4
2
+ Name: sbcli-chris
3
+ Version: 0.0.3
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==7.3.3
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
+ Requires-Dist: jc
28
+ Requires-Dist: sentry-sdk
29
+ Requires-Dist: prometheus_client
30
+ Dynamic: author
31
+ Dynamic: author-email
32
+ Dynamic: description
33
+ Dynamic: description-content-type
34
+ Dynamic: home-page
35
+ Dynamic: requires-dist
36
+ Dynamic: summary
37
+
38
+
39
+ # Simply Block
40
+ [![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)
41
+
42
+ [![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)
43
+
44
+
45
+ ## Install
46
+ Add the package repo from AWS CodeArtifact using [awscli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
47
+
48
+ ```bash
49
+ aws codeartifact login --tool pip --repository sbcli --domain simplyblock --domain-owner 565979732541 --region eu-west-1
50
+ ```
51
+ Install package
52
+ ```bash
53
+ pip install --extra-index-url https://pypi.org/simple sbcli-dev
54
+ ```
55
+
56
+ # Components
57
+
58
+ ## Simply Block Core
59
+ Contains core logic and controllers for the simplyblock cluster
60
+
61
+ ## Simply Block CLI
62
+ Please see this document
63
+ [README.md](../main/simplyblock_cli/README.md)
64
+
65
+
66
+ ## Simply Block Web API
67
+ Please see this document
68
+ [README.md](../main/simplyblock_web/README.md)
69
+
70
+
71
+
72
+ ### local development
73
+
74
+ FoundationDB requires a client library (libfdb_c.dylib) for the Python bindings to interact with the database.
75
+ Depending on the OS architecture, please install the appropriate version from the official github repo
76
+
77
+ ```
78
+ wget https://github.com/apple/foundationdb/releases/download/7.3.3/FoundationDB-7.3.3_arm64.pkg
79
+ ```
80
+
81
+ setup the code on a management node and the webApp code can be developed by building the `docker-compose-dev.yml` file.
82
+
83
+
84
+ ```
85
+ sudo docker compose -f docker-compose-dev.yml up --build -d
86
+ ```
@@ -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,21 @@
1
+ foundationdb==7.3.3
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
19
+ jc
20
+ sentry-sdk
21
+ prometheus_client
@@ -0,0 +1,86 @@
1
+ Metadata-Version: 2.4
2
+ Name: sbcli-chris
3
+ Version: 0.0.3
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==7.3.3
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
+ Requires-Dist: jc
28
+ Requires-Dist: sentry-sdk
29
+ Requires-Dist: prometheus_client
30
+ Dynamic: author
31
+ Dynamic: author-email
32
+ Dynamic: description
33
+ Dynamic: description-content-type
34
+ Dynamic: home-page
35
+ Dynamic: requires-dist
36
+ Dynamic: summary
37
+
38
+
39
+ # Simply Block
40
+ [![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)
41
+
42
+ [![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)
43
+
44
+
45
+ ## Install
46
+ Add the package repo from AWS CodeArtifact using [awscli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
47
+
48
+ ```bash
49
+ aws codeartifact login --tool pip --repository sbcli --domain simplyblock --domain-owner 565979732541 --region eu-west-1
50
+ ```
51
+ Install package
52
+ ```bash
53
+ pip install --extra-index-url https://pypi.org/simple sbcli-dev
54
+ ```
55
+
56
+ # Components
57
+
58
+ ## Simply Block Core
59
+ Contains core logic and controllers for the simplyblock cluster
60
+
61
+ ## Simply Block CLI
62
+ Please see this document
63
+ [README.md](../main/simplyblock_cli/README.md)
64
+
65
+
66
+ ## Simply Block Web API
67
+ Please see this document
68
+ [README.md](../main/simplyblock_web/README.md)
69
+
70
+
71
+
72
+ ### local development
73
+
74
+ FoundationDB requires a client library (libfdb_c.dylib) for the Python bindings to interact with the database.
75
+ Depending on the OS architecture, please install the appropriate version from the official github repo
76
+
77
+ ```
78
+ wget https://github.com/apple/foundationdb/releases/download/7.3.3/FoundationDB-7.3.3_arm64.pkg
79
+ ```
80
+
81
+ setup the code on a management node and the webApp code can be developed by building the `docker-compose-dev.yml` file.
82
+
83
+
84
+ ```
85
+ sudo docker compose -f docker-compose-dev.yml up --build -d
86
+ ```
@@ -0,0 +1,162 @@
1
+ README.md
2
+ pyproject.toml
3
+ requirements.txt
4
+ setup.py
5
+ sbcli_chris.egg-info/PKG-INFO
6
+ sbcli_chris.egg-info/SOURCES.txt
7
+ sbcli_chris.egg-info/dependency_links.txt
8
+ sbcli_chris.egg-info/entry_points.txt
9
+ sbcli_chris.egg-info/requires.txt
10
+ sbcli_chris.egg-info/top_level.txt
11
+ simplyblock_cli/__init__.py
12
+ simplyblock_cli/cli.py
13
+ simplyblock_cli/clibase.py
14
+ simplyblock_cli/main.py
15
+ simplyblock_core/__init__.py
16
+ simplyblock_core/cluster_ops.py
17
+ simplyblock_core/cnode_client.py
18
+ simplyblock_core/constants.py
19
+ simplyblock_core/db_controller.py
20
+ simplyblock_core/distr_controller.py
21
+ simplyblock_core/env_var
22
+ simplyblock_core/mgmt_node_ops.py
23
+ simplyblock_core/pci_utils.py
24
+ simplyblock_core/rpc_client.py
25
+ simplyblock_core/shell_utils.py
26
+ simplyblock_core/snode_client.py
27
+ simplyblock_core/storage_node_ops.py
28
+ simplyblock_core/utils.py
29
+ simplyblock_core/controllers/__init__.py
30
+ simplyblock_core/controllers/caching_node_controller.py
31
+ simplyblock_core/controllers/cluster_events.py
32
+ simplyblock_core/controllers/device_controller.py
33
+ simplyblock_core/controllers/device_events.py
34
+ simplyblock_core/controllers/events_controller.py
35
+ simplyblock_core/controllers/health_controller.py
36
+ simplyblock_core/controllers/lvol_controller.py
37
+ simplyblock_core/controllers/lvol_events.py
38
+ simplyblock_core/controllers/mgmt_events.py
39
+ simplyblock_core/controllers/pool_controller.py
40
+ simplyblock_core/controllers/pool_events.py
41
+ simplyblock_core/controllers/snapshot_controller.py
42
+ simplyblock_core/controllers/snapshot_events.py
43
+ simplyblock_core/controllers/storage_events.py
44
+ simplyblock_core/controllers/tasks_controller.py
45
+ simplyblock_core/controllers/tasks_events.py
46
+ simplyblock_core/controllers/tcp_ports_events.py
47
+ simplyblock_core/models/__init__.py
48
+ simplyblock_core/models/base_model.py
49
+ simplyblock_core/models/caching_node.py
50
+ simplyblock_core/models/cluster.py
51
+ simplyblock_core/models/deployer.py
52
+ simplyblock_core/models/events.py
53
+ simplyblock_core/models/hublvol.py
54
+ simplyblock_core/models/iface.py
55
+ simplyblock_core/models/job_schedule.py
56
+ simplyblock_core/models/lvol_model.py
57
+ simplyblock_core/models/mgmt_node.py
58
+ simplyblock_core/models/nvme_device.py
59
+ simplyblock_core/models/pool.py
60
+ simplyblock_core/models/port_stat.py
61
+ simplyblock_core/models/snapshot.py
62
+ simplyblock_core/models/stats.py
63
+ simplyblock_core/models/storage_node.py
64
+ simplyblock_core/scripts/__init__.py
65
+ simplyblock_core/scripts/clean_local_storage_deploy.sh
66
+ simplyblock_core/scripts/config_docker.sh
67
+ simplyblock_core/scripts/dashboard.yml
68
+ simplyblock_core/scripts/datasource.yml
69
+ simplyblock_core/scripts/db_config_double.sh
70
+ simplyblock_core/scripts/db_config_single.sh
71
+ simplyblock_core/scripts/deploy_fdb.sh
72
+ simplyblock_core/scripts/deploy_stack.sh
73
+ simplyblock_core/scripts/docker-compose-swarm-monitoring.yml
74
+ simplyblock_core/scripts/docker-compose-swarm.yml
75
+ simplyblock_core/scripts/foundation.yml
76
+ simplyblock_core/scripts/haproxy.cfg
77
+ simplyblock_core/scripts/install_deps.sh
78
+ simplyblock_core/scripts/objstore.yml
79
+ simplyblock_core/scripts/prepare_fdb.sh
80
+ simplyblock_core/scripts/prometheus.yml.j2
81
+ simplyblock_core/scripts/run_ssh.sh
82
+ simplyblock_core/scripts/set_db_config.sh
83
+ simplyblock_core/scripts/stack_deploy_wait.sh
84
+ simplyblock_core/scripts/alerting/alert_resources.yaml.j2
85
+ simplyblock_core/scripts/alerting/alert_rules.yaml
86
+ simplyblock_core/scripts/dashboards/cluster.json
87
+ simplyblock_core/scripts/dashboards/devices.json
88
+ simplyblock_core/scripts/dashboards/lvols.json
89
+ simplyblock_core/scripts/dashboards/node-exporter.json
90
+ simplyblock_core/scripts/dashboards/nodes.json
91
+ simplyblock_core/scripts/dashboards/pools.json
92
+ simplyblock_core/scripts/helpers/__init__.py
93
+ simplyblock_core/scripts/helpers/deploy_cluster.sh
94
+ simplyblock_core/scripts/helpers/destroy_cluster.sh
95
+ simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py
96
+ simplyblock_core/services/__init__.py
97
+ simplyblock_core/services/cached_lvol_stat_collector.py
98
+ simplyblock_core/services/caching_node_monitor.py
99
+ simplyblock_core/services/cap_monitor.py
100
+ simplyblock_core/services/capacity_and_stats_collector.py
101
+ simplyblock_core/services/device_monitor.py
102
+ simplyblock_core/services/health_check_service.py
103
+ simplyblock_core/services/install_service.sh
104
+ simplyblock_core/services/lvol_monitor.py
105
+ simplyblock_core/services/lvol_stat_collector.py
106
+ simplyblock_core/services/main_distr_event_collector.py
107
+ simplyblock_core/services/mgmt_node_monitor.py
108
+ simplyblock_core/services/new_device_discovery.py
109
+ simplyblock_core/services/remove_service.sh
110
+ simplyblock_core/services/service_template.service
111
+ simplyblock_core/services/spdk_http_proxy_server.py
112
+ simplyblock_core/services/spdk_stats_collector.py
113
+ simplyblock_core/services/storage_node_monitor.py
114
+ simplyblock_core/services/tasks_runner_failed_migration.py
115
+ simplyblock_core/services/tasks_runner_migration.py
116
+ simplyblock_core/services/tasks_runner_new_dev_migration.py
117
+ simplyblock_core/services/tasks_runner_node_add.py
118
+ simplyblock_core/services/tasks_runner_restart.py
119
+ simplyblock_core/services/spdk/__init__.py
120
+ simplyblock_core/services/spdk/client.py
121
+ simplyblock_core/test/test_utils.py
122
+ simplyblock_core/workers/cleanup_foundationdb.py
123
+ simplyblock_web/README.md
124
+ simplyblock_web/__init__.py
125
+ simplyblock_web/app.py
126
+ simplyblock_web/auth_middleware.py
127
+ simplyblock_web/node_utils.py
128
+ simplyblock_web/node_utils_k8s.py
129
+ simplyblock_web/node_webapp.py
130
+ simplyblock_web/requirements.txt
131
+ simplyblock_web/utils.py
132
+ simplyblock_web/blueprints/__init__.py
133
+ simplyblock_web/blueprints/caching_node_ops.py
134
+ simplyblock_web/blueprints/caching_node_ops_k8s.py
135
+ simplyblock_web/blueprints/node_api_basic.py
136
+ simplyblock_web/blueprints/node_api_caching_docker.py
137
+ simplyblock_web/blueprints/node_api_caching_ks.py
138
+ simplyblock_web/blueprints/snode_ops.py
139
+ simplyblock_web/blueprints/snode_ops_k8s.py
140
+ simplyblock_web/blueprints/swagger_ui_blueprint.py
141
+ simplyblock_web/blueprints/web_api_caching_node.py
142
+ simplyblock_web/blueprints/web_api_cluster.py
143
+ simplyblock_web/blueprints/web_api_deployer.py
144
+ simplyblock_web/blueprints/web_api_device.py
145
+ simplyblock_web/blueprints/web_api_lvol.py
146
+ simplyblock_web/blueprints/web_api_metrics.py
147
+ simplyblock_web/blueprints/web_api_mgmt_node.py
148
+ simplyblock_web/blueprints/web_api_pool.py
149
+ simplyblock_web/blueprints/web_api_snapshot.py
150
+ simplyblock_web/blueprints/web_api_storage_node.py
151
+ simplyblock_web/static/SimplyBlock-API.postman_collection.json
152
+ simplyblock_web/static/delete.py
153
+ simplyblock_web/static/deploy.py
154
+ simplyblock_web/static/deploy_cnode.yaml
155
+ simplyblock_web/static/deploy_spdk.yaml
156
+ simplyblock_web/static/is_up.py
157
+ simplyblock_web/static/list_deps.py
158
+ simplyblock_web/static/rpac.yaml
159
+ simplyblock_web/static/swagger.yaml
160
+ simplyblock_web/static/tst.py
161
+ simplyblock_web/templates/caching_deploy_spdk.yaml.j2
162
+ simplyblock_web/templates/storage_deploy_spdk.yaml.j2
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ sbcli-chris = simplyblock_cli.cli:main
@@ -0,0 +1,21 @@
1
+ foundationdb==7.3.3
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
19
+ jc
20
+ sentry-sdk
21
+ prometheus_client
@@ -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,109 @@
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
+ if out:
12
+ print(out)
13
+
14
+ if os.environ.get("SHELL") and os.environ.get("HOME"):
15
+ path = f"{os.environ.get('HOME')}/.bash_completion"
16
+ if os.path.isfile(path):
17
+ _, out = getstatusoutput(f'source {path}')
18
+ found = False
19
+ if os.path.exists(os.environ.get("HOME")+"/.bashrc"):
20
+ with open(os.environ.get("HOME")+"/.bashrc", "r") as bashrc:
21
+ for line in bashrc.readlines():
22
+ line = line.strip()
23
+ if not line.startswith("#") and f"source {path}" in line:
24
+ found = True
25
+ break
26
+ if not found:
27
+ with open(os.environ.get("HOME") + "/.bashrc", "a") as bashrc:
28
+ bashrc.writelines([f"\nsource {path}\n"])
29
+
30
+
31
+ class install(_install):
32
+ def run(self):
33
+ _install.run(self)
34
+ self.execute(_post_install, (), msg="Running post install task")
35
+
36
+
37
+ def get_env_var(name, default=None):
38
+ if not name:
39
+ return False
40
+ with open("simplyblock_core/env_var", "r", encoding="utf-8") as fh:
41
+ lines = fh.readlines()
42
+ data = {}
43
+ for line in lines:
44
+ if not line or line.startswith("#"):
45
+ continue
46
+ try:
47
+ k, v = line.split("=")
48
+ data[k.strip()] = v.strip()
49
+ except:
50
+ pass
51
+ return data.get(name, default)
52
+
53
+
54
+ def gen_data_files(*dirs):
55
+ results = []
56
+ for src_dir in dirs:
57
+ files = [f for f in os.listdir(src_dir) if os.path.isfile(f"{src_dir}/{f}") and f != ".DS_Store"]
58
+ if not files:
59
+ return []
60
+ results.append((src_dir, [f"{src_dir}/{f}" for f in files]))
61
+ dirs = [f for f in os.listdir(src_dir) if os.path.isdir(f"{src_dir}/{f}")]
62
+ for dir in dirs:
63
+ results.extend(gen_data_files(os.path.join(src_dir, dir)))
64
+ return results
65
+
66
+
67
+ def get_long_description():
68
+ with open("README.md", "r", encoding="utf-8") as fh:
69
+ return fh.read()
70
+
71
+
72
+ def get_requirements():
73
+ with open("requirements.txt", "r", encoding="utf-8") as fh:
74
+ return fh.readlines()
75
+
76
+
77
+ COMMAND_NAME = get_env_var("SIMPLY_BLOCK_COMMAND_NAME", "sbcli")
78
+ VERSION = get_env_var("SIMPLY_BLOCK_VERSION", "1")
79
+
80
+ data_files = gen_data_files("simplyblock_core","simplyblock_web")
81
+ data_files.append(('', ["requirements.txt"]))
82
+ # data_files.append(('/etc/simplyblock', ["requirements.txt"]))
83
+
84
+
85
+ setup(
86
+ name=COMMAND_NAME,
87
+ version=VERSION,
88
+ requires_python='>= 3.9',
89
+ packages=find_packages(exclude=["e2e*"]),
90
+ url='https://www.simplyblock.io/',
91
+ author='Hamdy',
92
+ author_email='hamdy@simplyblock.io',
93
+ description='CLI for managing SimplyBlock cluster',
94
+ long_description=get_long_description(),
95
+ long_description_content_type="text/markdown",
96
+ install_requires=get_requirements(),
97
+ entry_points={
98
+ 'console_scripts': [
99
+ f'{COMMAND_NAME}=simplyblock_cli.cli:main',
100
+ ]
101
+ },
102
+ include_package_data=True,
103
+ data_files=data_files,
104
+ package_data={
105
+ '': ["/etc/simplyblock/requirements.txt"],
106
+ '/etc/simplyblock': ["requirements.txt"]
107
+ },
108
+ # cmdclass={'install': install},
109
+ )
File without changes