sbcli-dev 18.0.0__tar.gz → 18.0.2__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_dev-18.0.0 → sbcli_dev-18.0.2}/PKG-INFO +1 -1
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/db_controller.py +50 -21
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/env_var +2 -2
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/hublvol.py +1 -1
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/storage_node.py +0 -1
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/utils.py +1 -1
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/README.md +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/pyproject.toml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/requirements.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/setup.cfg +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/setup.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_cli/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_cli/cli.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_cli/clibase.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/cluster_ops.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/constants.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/device_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/health_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/lvol_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/snapshot_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/distr_controller.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/caching_node.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/cluster.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/job_schedule.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/nvme_device.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/rpc_client.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/foundation.yml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/helpers/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/helpers/deploy_cluster.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/helpers/destroy_cluster.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/spdk/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/spdk/client.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/spdk_stats_collector.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/storage_node_monitor.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_migration.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/snode_client.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/storage_node_ops.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/test/test_models.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/test/test_utils.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/README.md +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/app.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_metrics.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/node_configure.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/node_utils_k8s.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/node_webapp.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/requirements.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/swagger.yaml +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/api/test_lvol.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/api/test_pool.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/api/test_snapshot.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/conftest.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/pytest.ini +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/requirements.txt +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/test/util.py +0 -0
- {sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/utils.py +0 -0
|
@@ -3,7 +3,7 @@ import logging
|
|
|
3
3
|
import os.path
|
|
4
4
|
|
|
5
5
|
import fdb
|
|
6
|
-
from typing import List
|
|
6
|
+
from typing import List, Optional
|
|
7
7
|
|
|
8
8
|
from simplyblock_core import constants
|
|
9
9
|
from simplyblock_core.models.caching_node import CachingNode
|
|
@@ -65,6 +65,13 @@ class DBController(metaclass=Singleton):
|
|
|
65
65
|
nodes.append(n)
|
|
66
66
|
return sorted(nodes, key=lambda x: x.create_dt)
|
|
67
67
|
|
|
68
|
+
def get_storage_node_by_system_id(self, system_id) -> Optional[StorageNode]:
|
|
69
|
+
nodes = StorageNode().read_from_db(self.kv_store)
|
|
70
|
+
for node in nodes:
|
|
71
|
+
if node.system_uuid == system_id:
|
|
72
|
+
return node
|
|
73
|
+
return None
|
|
74
|
+
|
|
68
75
|
def get_storage_nodes_by_system_id(self, system_id) -> List[StorageNode]:
|
|
69
76
|
return [
|
|
70
77
|
node for node
|
|
@@ -79,10 +86,11 @@ class DBController(metaclass=Singleton):
|
|
|
79
86
|
if node.hostname == hostname
|
|
80
87
|
]
|
|
81
88
|
|
|
82
|
-
def get_storage_node_by_id(self, id) -> StorageNode:
|
|
89
|
+
def get_storage_node_by_id(self, id) -> Optional[StorageNode]:
|
|
83
90
|
ret = StorageNode().read_from_db(self.kv_store, id)
|
|
84
91
|
if ret:
|
|
85
92
|
return ret[0]
|
|
93
|
+
return None
|
|
86
94
|
|
|
87
95
|
# todo: change this function for multi cluster
|
|
88
96
|
def get_caching_nodes(self) -> List[CachingNode]:
|
|
@@ -90,29 +98,40 @@ class DBController(metaclass=Singleton):
|
|
|
90
98
|
ret = sorted(ret, key=lambda x: x.create_dt)
|
|
91
99
|
return ret
|
|
92
100
|
|
|
93
|
-
def get_caching_node_by_id(self, id) -> CachingNode:
|
|
101
|
+
def get_caching_node_by_id(self, id) -> Optional[CachingNode]:
|
|
94
102
|
ret = CachingNode().read_from_db(self.kv_store, id)
|
|
95
103
|
if ret:
|
|
96
104
|
return ret[0]
|
|
105
|
+
return None
|
|
97
106
|
|
|
98
|
-
def get_caching_node_by_system_id(self, system_id) ->
|
|
107
|
+
def get_caching_node_by_system_id(self, system_id) -> Optional[CachingNode]:
|
|
99
108
|
nodes = CachingNode().read_from_db(self.kv_store)
|
|
100
109
|
for node in nodes:
|
|
101
110
|
if node.system_uuid == system_id:
|
|
102
111
|
return node
|
|
112
|
+
return None
|
|
103
113
|
|
|
104
|
-
def get_caching_node_by_hostname(self, hostname) -> CachingNode:
|
|
114
|
+
def get_caching_node_by_hostname(self, hostname) -> Optional[CachingNode]:
|
|
105
115
|
nodes = self.get_caching_nodes()
|
|
106
116
|
for node in nodes:
|
|
107
117
|
if node.hostname == hostname:
|
|
108
118
|
return node
|
|
119
|
+
return None
|
|
120
|
+
|
|
121
|
+
def get_storage_node_by_hostname(self, hostname) -> Optional[StorageNode]:
|
|
122
|
+
nodes = self.get_storage_nodes()
|
|
123
|
+
for node in nodes:
|
|
124
|
+
if node.hostname == hostname:
|
|
125
|
+
return node
|
|
126
|
+
return None
|
|
109
127
|
|
|
110
|
-
def get_storage_device_by_id(self, id) -> NVMeDevice:
|
|
128
|
+
def get_storage_device_by_id(self, id) -> Optional[NVMeDevice]:
|
|
111
129
|
nodes = self.get_storage_nodes()
|
|
112
130
|
for node in nodes:
|
|
113
131
|
for dev in node.nvme_devices:
|
|
114
132
|
if dev.get_id() == id:
|
|
115
133
|
return dev
|
|
134
|
+
return None
|
|
116
135
|
|
|
117
136
|
def get_pools(self, cluster_id=None) -> List[Pool]:
|
|
118
137
|
pools = []
|
|
@@ -124,16 +143,18 @@ class DBController(metaclass=Singleton):
|
|
|
124
143
|
pools = Pool().read_from_db(self.kv_store)
|
|
125
144
|
return pools
|
|
126
145
|
|
|
127
|
-
def get_pool_by_id(self, id) -> Pool:
|
|
146
|
+
def get_pool_by_id(self, id) -> Optional[Pool]:
|
|
128
147
|
ret = Pool().read_from_db(self.kv_store, id)
|
|
129
148
|
if ret:
|
|
130
149
|
return ret[0]
|
|
150
|
+
return None
|
|
131
151
|
|
|
132
|
-
def get_pool_by_name(self, name) -> Pool:
|
|
152
|
+
def get_pool_by_name(self, name) -> Optional[Pool]:
|
|
133
153
|
pools = Pool().read_from_db(self.kv_store)
|
|
134
154
|
for pool in pools:
|
|
135
155
|
if pool.pool_name == name:
|
|
136
156
|
return pool
|
|
157
|
+
return None
|
|
137
158
|
|
|
138
159
|
def get_lvols(self, cluster_id=None) -> List[LVol]:
|
|
139
160
|
lvols = self.get_all_lvols()
|
|
@@ -181,25 +202,29 @@ class DBController(metaclass=Singleton):
|
|
|
181
202
|
ret = SnapShot().read_from_db(self.kv_store)
|
|
182
203
|
return ret
|
|
183
204
|
|
|
184
|
-
def get_snapshot_by_id(self, id) -> SnapShot:
|
|
205
|
+
def get_snapshot_by_id(self, id) -> Optional[SnapShot]:
|
|
185
206
|
ret = SnapShot().read_from_db(self.kv_store, id)
|
|
186
207
|
if ret:
|
|
187
208
|
return ret[0]
|
|
209
|
+
return None
|
|
188
210
|
|
|
189
|
-
def get_lvol_by_id(self, id) -> LVol:
|
|
211
|
+
def get_lvol_by_id(self, id) -> Optional[LVol]:
|
|
190
212
|
lvols = LVol().read_from_db(self.kv_store, id=id)
|
|
191
213
|
if lvols:
|
|
192
214
|
return lvols[0]
|
|
215
|
+
return None
|
|
193
216
|
|
|
194
|
-
def get_lvol_by_name(self, lvol_name) -> LVol:
|
|
217
|
+
def get_lvol_by_name(self, lvol_name) -> Optional[LVol]:
|
|
195
218
|
for lvol in self.get_lvols():
|
|
196
219
|
if lvol.lvol_name == lvol_name:
|
|
197
220
|
return lvol
|
|
221
|
+
return None
|
|
198
222
|
|
|
199
|
-
def get_mgmt_node_by_id(self, id) -> MgmtNode:
|
|
223
|
+
def get_mgmt_node_by_id(self, id) -> Optional[MgmtNode]:
|
|
200
224
|
ret = MgmtNode().read_from_db(self.kv_store, id)
|
|
201
225
|
if ret:
|
|
202
226
|
return ret[0]
|
|
227
|
+
return None
|
|
203
228
|
|
|
204
229
|
def get_mgmt_nodes(self, cluster_id=None) -> List[MgmtNode]:
|
|
205
230
|
nodes = MgmtNode().read_from_db(self.kv_store)
|
|
@@ -207,11 +232,12 @@ class DBController(metaclass=Singleton):
|
|
|
207
232
|
nodes = [n for n in nodes if n.cluster_id == cluster_id]
|
|
208
233
|
return sorted(nodes, key=lambda x: x.create_dt)
|
|
209
234
|
|
|
210
|
-
def get_mgmt_node_by_hostname(self, hostname) -> MgmtNode:
|
|
235
|
+
def get_mgmt_node_by_hostname(self, hostname) -> Optional[MgmtNode]:
|
|
211
236
|
nodes = self.get_mgmt_nodes()
|
|
212
237
|
for node in nodes:
|
|
213
238
|
if node.hostname == hostname:
|
|
214
239
|
return node
|
|
240
|
+
return None
|
|
215
241
|
|
|
216
242
|
def get_lvol_stats(self, lvol, limit=20) -> List[LVolStatObject]:
|
|
217
243
|
if isinstance(lvol, str):
|
|
@@ -257,18 +283,20 @@ class DBController(metaclass=Singleton):
|
|
|
257
283
|
def get_clusters(self) -> List[Cluster]:
|
|
258
284
|
return Cluster().read_from_db(self.kv_store)
|
|
259
285
|
|
|
260
|
-
def get_cluster_by_id(self, cluster_id) -> Cluster:
|
|
286
|
+
def get_cluster_by_id(self, cluster_id) -> Optional[Cluster]:
|
|
261
287
|
ret = Cluster().read_from_db(self.kv_store, id=cluster_id)
|
|
262
288
|
if ret:
|
|
263
289
|
return ret[0]
|
|
290
|
+
return None
|
|
264
291
|
|
|
265
292
|
def get_deployers(self) -> List[Deployer]:
|
|
266
293
|
return Deployer().read_from_db(self.kv_store)
|
|
267
294
|
|
|
268
|
-
def get_deployer_by_id(self, deployer_id) -> Deployer:
|
|
295
|
+
def get_deployer_by_id(self, deployer_id) -> Optional[Deployer]:
|
|
269
296
|
ret = Deployer().read_from_db(self.kv_store, id=deployer_id)
|
|
270
297
|
if ret:
|
|
271
298
|
return ret[0]
|
|
299
|
+
return None
|
|
272
300
|
|
|
273
301
|
def get_port_stats(self, node_id, port_id, limit=20) -> List[PortStat]:
|
|
274
302
|
stats = PortStat().read_from_db(self.kv_store, id="%s/%s" % (node_id, port_id), limit=limit, reverse=True)
|
|
@@ -280,10 +308,11 @@ class DBController(metaclass=Singleton):
|
|
|
280
308
|
def get_job_tasks(self, cluster_id, reverse=True, limit=0) -> List[JobSchedule]:
|
|
281
309
|
return JobSchedule().read_from_db(self.kv_store, id=cluster_id, reverse=reverse, limit=limit)
|
|
282
310
|
|
|
283
|
-
def get_task_by_id(self, task_id) -> JobSchedule:
|
|
311
|
+
def get_task_by_id(self, task_id) -> Optional[JobSchedule]:
|
|
284
312
|
for task in self.get_job_tasks(" "):
|
|
285
313
|
if task.uuid == task_id:
|
|
286
314
|
return task
|
|
315
|
+
return None
|
|
287
316
|
|
|
288
317
|
def get_snapshots_by_node_id(self, node_id) -> List[SnapShot]:
|
|
289
318
|
ret = []
|
|
@@ -295,15 +324,15 @@ class DBController(metaclass=Singleton):
|
|
|
295
324
|
|
|
296
325
|
def get_snode_size(self, node_id) -> int:
|
|
297
326
|
snode = self.get_storage_node_by_id(node_id)
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
return total_node_capacity
|
|
327
|
+
if snode is None:
|
|
328
|
+
raise KeyError('Node not found')
|
|
329
|
+
return sum(dev.size for dev in snode.nvme_devices)
|
|
302
330
|
|
|
303
|
-
def get_jm_device_by_id(self, jm_id) -> JMDevice:
|
|
331
|
+
def get_jm_device_by_id(self, jm_id) -> Optional[JMDevice]:
|
|
304
332
|
for node in self.get_storage_nodes():
|
|
305
333
|
if node.jm_device and node.jm_device.get_id() == jm_id:
|
|
306
334
|
return node.jm_device
|
|
335
|
+
return None
|
|
307
336
|
|
|
308
337
|
def get_primary_storage_nodes_by_cluster_id(self, cluster_id) -> List[StorageNode]:
|
|
309
338
|
ret = StorageNode().read_from_db(self.kv_store)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
SIMPLY_BLOCK_COMMAND_NAME=sbcli-dev
|
|
2
|
-
SIMPLY_BLOCK_VERSION=18.0.
|
|
2
|
+
SIMPLY_BLOCK_VERSION=18.0.2
|
|
3
3
|
|
|
4
4
|
SIMPLY_BLOCK_DOCKER_IMAGE=public.ecr.aws/simply-block/simplyblock:main
|
|
5
|
-
SIMPLY_BLOCK_SPDK_ULTRA_IMAGE=public.ecr.aws/simply-block/ultra:main-latest
|
|
5
|
+
SIMPLY_BLOCK_SPDK_ULTRA_IMAGE=public.ecr.aws/simply-block/ultra:main-latest
|
|
@@ -162,7 +162,6 @@ class StorageNode(BaseNodeObject):
|
|
|
162
162
|
'bdev_name': f'{self.lvstore}/hublvol',
|
|
163
163
|
'model_number': str(uuid4()),
|
|
164
164
|
'nguid': utils.generate_hex_string(16),
|
|
165
|
-
'nvmf_port': utils.next_free_port(self.cluster_id),
|
|
166
165
|
'nvmf_port': utils.next_free_hublvol_port(self.cluster_id),
|
|
167
166
|
})
|
|
168
167
|
|
|
@@ -1088,7 +1088,7 @@ def next_free_hublvol_port(cluster_id):
|
|
|
1088
1088
|
from simplyblock_core.db_controller import DBController
|
|
1089
1089
|
db_controller = DBController()
|
|
1090
1090
|
|
|
1091
|
-
port =
|
|
1091
|
+
port = 9060
|
|
1092
1092
|
used_ports = []
|
|
1093
1093
|
for node in db_controller.get_storage_nodes_by_cluster_id(cluster_id):
|
|
1094
1094
|
if node.hublvol and node.hublvol.nvmf_port > 0:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/controllers/caching_node_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/clean_local_storage_deploy.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/dashboards/node-exporter.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/cached_lvol_stat_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/capacity_and_stats_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/main_distr_event_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_failed_migration.py
RENAMED
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_core/services/tasks_runner_new_dev_migration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sbcli_dev-18.0.0 → sbcli_dev-18.0.2}/simplyblock_web/static/SimplyBlock-API.postman_collection.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|