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.
- sbcli_chris-0.0.3/PKG-INFO +86 -0
- sbcli_chris-0.0.3/README.md +49 -0
- sbcli_chris-0.0.3/pyproject.toml +3 -0
- sbcli_chris-0.0.3/requirements.txt +21 -0
- sbcli_chris-0.0.3/sbcli_chris.egg-info/PKG-INFO +86 -0
- sbcli_chris-0.0.3/sbcli_chris.egg-info/SOURCES.txt +162 -0
- sbcli_chris-0.0.3/sbcli_chris.egg-info/dependency_links.txt +1 -0
- sbcli_chris-0.0.3/sbcli_chris.egg-info/entry_points.txt +2 -0
- sbcli_chris-0.0.3/sbcli_chris.egg-info/requires.txt +21 -0
- sbcli_chris-0.0.3/sbcli_chris.egg-info/top_level.txt +3 -0
- sbcli_chris-0.0.3/setup.cfg +4 -0
- sbcli_chris-0.0.3/setup.py +109 -0
- sbcli_chris-0.0.3/simplyblock_cli/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_cli/cli.py +1236 -0
- sbcli_chris-0.0.3/simplyblock_cli/clibase.py +822 -0
- sbcli_chris-0.0.3/simplyblock_cli/main.py +15 -0
- sbcli_chris-0.0.3/simplyblock_core/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_core/cluster_ops.py +1434 -0
- sbcli_chris-0.0.3/simplyblock_core/cnode_client.py +124 -0
- sbcli_chris-0.0.3/simplyblock_core/constants.py +135 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/caching_node_controller.py +800 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/cluster_events.py +71 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/device_controller.py +952 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/device_events.py +45 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/events_controller.py +123 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/health_controller.py +748 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/lvol_controller.py +1593 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/lvol_events.py +45 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/mgmt_events.py +40 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/pool_controller.py +380 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/pool_events.py +31 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/snapshot_controller.py +575 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/snapshot_events.py +33 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/storage_events.py +54 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/tasks_controller.py +259 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/tasks_events.py +34 -0
- sbcli_chris-0.0.3/simplyblock_core/controllers/tcp_ports_events.py +27 -0
- sbcli_chris-0.0.3/simplyblock_core/db_controller.py +312 -0
- sbcli_chris-0.0.3/simplyblock_core/distr_controller.py +330 -0
- sbcli_chris-0.0.3/simplyblock_core/env_var +5 -0
- sbcli_chris-0.0.3/simplyblock_core/mgmt_node_ops.py +206 -0
- sbcli_chris-0.0.3/simplyblock_core/models/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_core/models/base_model.py +199 -0
- sbcli_chris-0.0.3/simplyblock_core/models/caching_node.py +56 -0
- sbcli_chris-0.0.3/simplyblock_core/models/cluster.py +70 -0
- sbcli_chris-0.0.3/simplyblock_core/models/deployer.py +56 -0
- sbcli_chris-0.0.3/simplyblock_core/models/events.py +37 -0
- sbcli_chris-0.0.3/simplyblock_core/models/hublvol.py +15 -0
- sbcli_chris-0.0.3/simplyblock_core/models/iface.py +18 -0
- sbcli_chris-0.0.3/simplyblock_core/models/job_schedule.py +39 -0
- sbcli_chris-0.0.3/simplyblock_core/models/lvol_model.py +63 -0
- sbcli_chris-0.0.3/simplyblock_core/models/mgmt_node.py +12 -0
- sbcli_chris-0.0.3/simplyblock_core/models/nvme_device.py +72 -0
- sbcli_chris-0.0.3/simplyblock_core/models/pool.py +33 -0
- sbcli_chris-0.0.3/simplyblock_core/models/port_stat.py +23 -0
- sbcli_chris-0.0.3/simplyblock_core/models/snapshot.py +23 -0
- sbcli_chris-0.0.3/simplyblock_core/models/stats.py +109 -0
- sbcli_chris-0.0.3/simplyblock_core/models/storage_node.py +215 -0
- sbcli_chris-0.0.3/simplyblock_core/pci_utils.py +28 -0
- sbcli_chris-0.0.3/simplyblock_core/rpc_client.py +1035 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/__init__.py +63 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +116 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/alerting/alert_rules.yaml +725 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/clean_local_storage_deploy.sh +14 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/config_docker.sh +41 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboard.yml +12 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/cluster.json +2356 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/devices.json +2433 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/lvols.json +2542 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/node-exporter.json +23743 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/nodes.json +2732 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/dashboards/pools.json +2399 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/datasource.yml +20 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/db_config_double.sh +3 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/db_config_single.sh +2 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/deploy_fdb.sh +7 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/deploy_stack.sh +44 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +235 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/docker-compose-swarm.yml +337 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/foundation.yml +40 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/haproxy.cfg +89 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/deploy_cluster.sh +24 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/destroy_cluster.sh +31 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +47 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/install_deps.sh +38 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/objstore.yml +3 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/prepare_fdb.sh +12 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/prometheus.yml.j2 +22 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/run_ssh.sh +2 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/set_db_config.sh +3 -0
- sbcli_chris-0.0.3/simplyblock_core/scripts/stack_deploy_wait.sh +182 -0
- sbcli_chris-0.0.3/simplyblock_core/services/__init__.py +125 -0
- sbcli_chris-0.0.3/simplyblock_core/services/cached_lvol_stat_collector.py +88 -0
- sbcli_chris-0.0.3/simplyblock_core/services/caching_node_monitor.py +86 -0
- sbcli_chris-0.0.3/simplyblock_core/services/cap_monitor.py +65 -0
- sbcli_chris-0.0.3/simplyblock_core/services/capacity_and_stats_collector.py +205 -0
- sbcli_chris-0.0.3/simplyblock_core/services/device_monitor.py +47 -0
- sbcli_chris-0.0.3/simplyblock_core/services/health_check_service.py +286 -0
- sbcli_chris-0.0.3/simplyblock_core/services/install_service.sh +34 -0
- sbcli_chris-0.0.3/simplyblock_core/services/lvol_monitor.py +150 -0
- sbcli_chris-0.0.3/simplyblock_core/services/lvol_stat_collector.py +302 -0
- sbcli_chris-0.0.3/simplyblock_core/services/main_distr_event_collector.py +221 -0
- sbcli_chris-0.0.3/simplyblock_core/services/mgmt_node_monitor.py +86 -0
- sbcli_chris-0.0.3/simplyblock_core/services/new_device_discovery.py +56 -0
- sbcli_chris-0.0.3/simplyblock_core/services/remove_service.sh +7 -0
- sbcli_chris-0.0.3/simplyblock_core/services/service_template.service +16 -0
- sbcli_chris-0.0.3/simplyblock_core/services/spdk/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_core/services/spdk/client.py +281 -0
- sbcli_chris-0.0.3/simplyblock_core/services/spdk_http_proxy_server.py +165 -0
- sbcli_chris-0.0.3/simplyblock_core/services/spdk_stats_collector.py +73 -0
- sbcli_chris-0.0.3/simplyblock_core/services/storage_node_monitor.py +362 -0
- sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_failed_migration.py +158 -0
- sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_migration.py +153 -0
- sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_new_dev_migration.py +168 -0
- sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_node_add.py +60 -0
- sbcli_chris-0.0.3/simplyblock_core/services/tasks_runner_restart.py +242 -0
- sbcli_chris-0.0.3/simplyblock_core/shell_utils.py +9 -0
- sbcli_chris-0.0.3/simplyblock_core/snode_client.py +166 -0
- sbcli_chris-0.0.3/simplyblock_core/storage_node_ops.py +3514 -0
- sbcli_chris-0.0.3/simplyblock_core/test/test_utils.py +109 -0
- sbcli_chris-0.0.3/simplyblock_core/utils.py +942 -0
- sbcli_chris-0.0.3/simplyblock_core/workers/cleanup_foundationdb.py +126 -0
- sbcli_chris-0.0.3/simplyblock_web/README.md +999 -0
- sbcli_chris-0.0.3/simplyblock_web/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_web/app.py +53 -0
- sbcli_chris-0.0.3/simplyblock_web/auth_middleware.py +65 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/__init__.py +0 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/caching_node_ops.py +443 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/caching_node_ops_k8s.py +344 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/node_api_basic.py +110 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/node_api_caching_docker.py +168 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/node_api_caching_ks.py +157 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/snode_ops.py +561 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/snode_ops_k8s.py +433 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/swagger_ui_blueprint.py +27 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_caching_node.py +176 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_cluster.py +276 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_deployer.py +421 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_device.py +103 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_lvol.py +299 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_metrics.py +197 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_mgmt_node.py +37 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_pool.py +244 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_snapshot.py +69 -0
- sbcli_chris-0.0.3/simplyblock_web/blueprints/web_api_storage_node.py +303 -0
- sbcli_chris-0.0.3/simplyblock_web/node_utils.py +220 -0
- sbcli_chris-0.0.3/simplyblock_web/node_utils_k8s.py +104 -0
- sbcli_chris-0.0.3/simplyblock_web/node_webapp.py +61 -0
- sbcli_chris-0.0.3/simplyblock_web/requirements.txt +12 -0
- sbcli_chris-0.0.3/simplyblock_web/static/SimplyBlock-API.postman_collection.json +3316 -0
- sbcli_chris-0.0.3/simplyblock_web/static/delete.py +36 -0
- sbcli_chris-0.0.3/simplyblock_web/static/deploy.py +50 -0
- sbcli_chris-0.0.3/simplyblock_web/static/deploy_cnode.yaml +22 -0
- sbcli_chris-0.0.3/simplyblock_web/static/deploy_spdk.yaml +60 -0
- sbcli_chris-0.0.3/simplyblock_web/static/is_up.py +17 -0
- sbcli_chris-0.0.3/simplyblock_web/static/list_deps.py +16 -0
- sbcli_chris-0.0.3/simplyblock_web/static/rpac.yaml +26 -0
- sbcli_chris-0.0.3/simplyblock_web/static/swagger.yaml +20353 -0
- sbcli_chris-0.0.3/simplyblock_web/static/tst.py +11 -0
- sbcli_chris-0.0.3/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +109 -0
- sbcli_chris-0.0.3/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +168 -0
- 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
|
+
[](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml)
|
41
|
+
|
42
|
+
[](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
|
+
[](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml)
|
4
|
+
|
5
|
+
[](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,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
|
+
[](https://github.com/simplyblock-io/sbcli/actions/workflows/docker-image.yml)
|
41
|
+
|
42
|
+
[](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 @@
|
|
1
|
+
|
@@ -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,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
|