sbcli-pre 25.5.6__tar.gz → 25.5.7__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-pre-25.5.6 → sbcli-pre-25.5.7}/PKG-INFO +1 -1
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/sbcli_pre.egg-info/PKG-INFO +1 -1
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/env_var +1 -1
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/snode_ops_k8s.py +5 -6
- sbcli-pre-25.5.7/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +198 -0
- sbcli-pre-25.5.6/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -205
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/README.md +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/pyproject.toml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/requirements.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/sbcli_pre.egg-info/SOURCES.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/sbcli_pre.egg-info/dependency_links.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/sbcli_pre.egg-info/entry_points.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/sbcli_pre.egg-info/requires.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/sbcli_pre.egg-info/top_level.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/setup.cfg +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/setup.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_cli/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_cli/cli.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_cli/clibase.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_cli/main.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/cluster_ops.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/cnode_client.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/constants.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/device_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/health_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/lvol_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/snapshot_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/db_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/distr_controller.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/base_model.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/caching_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/cluster.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/deployer.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/events.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/hublvol.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/iface.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/job_schedule.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/nvme_device.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/pool.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/stats.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/models/storage_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/pci_utils.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/rpc_client.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/foundation.yml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/helpers/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/helpers/deploy_cluster.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/helpers/destroy_cluster.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/helpers/nvme_disconnect_by_ip.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/prometheus.yml.j2 +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/service_template.service +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/spdk/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/spdk/client.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/storage_node_monitor.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_cluster_status.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_runner_migration.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/shell_utils.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/snode_client.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/storage_node_ops.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/test/test_models.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/test/test_utils.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/utils.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/README.md +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/app.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_metrics.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/node_configure.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/node_utils.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/node_utils_k8s.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/node_webapp.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/delete.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/deploy.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/is_up.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/swagger.yaml +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/static/tst.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/api/test_lvol.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/api/test_pool.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/api/test_snapshot.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/api/test_storage_node.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/conftest.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/pytest.ini +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/requirements.txt +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/test/util.py +0 -0
- {sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_web/utils.py +0 -0
@@ -360,12 +360,12 @@ def spdk_process_start(body: SPDKParams):
|
|
360
360
|
}
|
361
361
|
dep = yaml.safe_load(template.render(values))
|
362
362
|
logger.debug(dep)
|
363
|
-
|
364
|
-
resp =
|
365
|
-
msg = f"
|
363
|
+
k8s_core_v1 = core_utils.get_k8s_core_client()
|
364
|
+
resp = k8s_core_v1.create_namespaced_pod(body=dep, namespace=namespace)
|
365
|
+
msg = f"Pod created: '{resp.metadata.name}' in namespace '{namespace}"
|
366
366
|
logger.info(msg)
|
367
367
|
except:
|
368
|
-
return utils.get_response(False, f"
|
368
|
+
return utils.get_response(False, f"Pod failed:\n{traceback.format_exc()}")
|
369
369
|
|
370
370
|
return utils.get_response(msg)
|
371
371
|
|
@@ -376,11 +376,10 @@ def spdk_process_start(body: SPDKParams):
|
|
376
376
|
})}}},
|
377
377
|
})
|
378
378
|
def spdk_process_kill():
|
379
|
-
k8s_apps_v1 = core_utils.get_k8s_apps_client()
|
380
379
|
k8s_core_v1 = core_utils.get_k8s_core_client()
|
381
380
|
try:
|
382
381
|
namespace = node_utils_k8s.get_namespace()
|
383
|
-
resp =
|
382
|
+
resp = k8s_core_v1.delete_namespaced_pod(deployment_name, namespace)
|
384
383
|
retries = 10
|
385
384
|
while retries > 0:
|
386
385
|
resp = k8s_core_v1.list_namespaced_pod(namespace)
|
@@ -0,0 +1,198 @@
|
|
1
|
+
apiVersion: v1
|
2
|
+
kind: Pod
|
3
|
+
metadata:
|
4
|
+
name: snode-spdk-deployment-{{ HOSTNAME }}
|
5
|
+
namespace: {{ NAMESPACE }}
|
6
|
+
labels:
|
7
|
+
app: spdk-app-{{ HOSTNAME }}
|
8
|
+
spec:
|
9
|
+
restartPolicy: Never
|
10
|
+
serviceAccountName: simplyblock-storage-node-sa
|
11
|
+
nodeSelector:
|
12
|
+
kubernetes.io/hostname: {{ HOSTNAME }}
|
13
|
+
hostNetwork: true
|
14
|
+
tolerations:
|
15
|
+
- effect: NoSchedule
|
16
|
+
operator: Exists
|
17
|
+
- effect: NoExecute
|
18
|
+
operator: Exists
|
19
|
+
volumes:
|
20
|
+
- name: socket-dir
|
21
|
+
emptyDir:
|
22
|
+
medium: "Memory"
|
23
|
+
- name: host-sys
|
24
|
+
hostPath:
|
25
|
+
path: /sys
|
26
|
+
- name: host-proc
|
27
|
+
hostPath:
|
28
|
+
path: /proc
|
29
|
+
- name: host-rootfs
|
30
|
+
hostPath:
|
31
|
+
path: /
|
32
|
+
- name: foundationdb
|
33
|
+
hostPath:
|
34
|
+
path: /var/foundationdb
|
35
|
+
- name: etc-simplyblock
|
36
|
+
hostPath:
|
37
|
+
path: /var/simplyblock
|
38
|
+
- name: host-modules
|
39
|
+
hostPath:
|
40
|
+
path: /lib/modules
|
41
|
+
- name: dev-vol
|
42
|
+
hostPath:
|
43
|
+
path: /dev
|
44
|
+
- name: hugepage
|
45
|
+
emptyDir:
|
46
|
+
medium: HugePages
|
47
|
+
- name: script-volume
|
48
|
+
emptyDir: {}
|
49
|
+
- name: varlog
|
50
|
+
hostPath:
|
51
|
+
path: /var/log
|
52
|
+
- name: dockercontainerlogdirectory
|
53
|
+
hostPath:
|
54
|
+
path: /var/log/pods
|
55
|
+
|
56
|
+
initContainers:
|
57
|
+
- name: copy-script
|
58
|
+
image: public.ecr.aws/simply-block/busybox
|
59
|
+
command: ["sh", "-c", "echo \"{{ FDB_CONNECTION }}\" > /etc/foundationdb/fdb.cluster"]
|
60
|
+
volumeMounts:
|
61
|
+
- name: foundationdb
|
62
|
+
mountPath: /etc/foundationdb
|
63
|
+
|
64
|
+
- name: apply-config-to-node
|
65
|
+
image: alpine:3.19
|
66
|
+
command:
|
67
|
+
- /bin/sh
|
68
|
+
- -c
|
69
|
+
- |
|
70
|
+
set -e
|
71
|
+
echo "Installing tools..."
|
72
|
+
apk add --no-cache iproute2 curl grep
|
73
|
+
|
74
|
+
NODE_IP=$(ip route get 1.1.1.1 | grep -oE 'src [0-9.]+' | awk '{print $2}')
|
75
|
+
echo "Detected node IP: ${NODE_IP}"
|
76
|
+
|
77
|
+
echo "Sending config to ${NODE_IP}..."
|
78
|
+
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST http://${NODE_IP}:5000/snode/apply_config \
|
79
|
+
-H "Content-Type: application/json" \
|
80
|
+
-d '{}')
|
81
|
+
|
82
|
+
echo "Response code: ${RESPONSE}"
|
83
|
+
if [ "$RESPONSE" -lt 200 ] || [ "$RESPONSE" -ge 300 ]; then
|
84
|
+
echo "Failed to send config to ${NODE_IP}, exiting."
|
85
|
+
exit 1
|
86
|
+
fi
|
87
|
+
|
88
|
+
containers:
|
89
|
+
- name: spdk-container
|
90
|
+
image: {{ SPDK_IMAGE }}
|
91
|
+
imagePullPolicy: "Always"
|
92
|
+
command:
|
93
|
+
- sh
|
94
|
+
- -c
|
95
|
+
- |
|
96
|
+
if [ ! -e /dev/fd ]; then
|
97
|
+
ln -s /proc/self/fd /dev/fd
|
98
|
+
fi
|
99
|
+
/root/scripts/run_distr_with_ssd.sh "{{ L_CORES }}" "{{ SPDK_MEM }}"
|
100
|
+
env:
|
101
|
+
- name: SSD_PCIE
|
102
|
+
value: "{{ SSD_PCIE }}"
|
103
|
+
- name: PCI_ALLOWED
|
104
|
+
value: "{{ PCI_ALLOWED }}"
|
105
|
+
- name: TOTAL_HP
|
106
|
+
value: "{{ TOTAL_HP }}"
|
107
|
+
- name: RPC_PORT
|
108
|
+
value: "{{ RPC_PORT }}"
|
109
|
+
- name: SPDKCSI_SECRET
|
110
|
+
valueFrom:
|
111
|
+
secretKeyRef:
|
112
|
+
name: simplyblock-csi-secret
|
113
|
+
key: secret.json
|
114
|
+
- name: CLUSTER_CONFIG
|
115
|
+
valueFrom:
|
116
|
+
configMapKeyRef:
|
117
|
+
name: simplyblock-csi-cm
|
118
|
+
key: config.json
|
119
|
+
lifecycle:
|
120
|
+
postStart:
|
121
|
+
exec:
|
122
|
+
command: ["/bin/sh", "-c", "sudo modprobe nbd || echo failed to modprobe nbd"]
|
123
|
+
securityContext:
|
124
|
+
privileged: true
|
125
|
+
volumeMounts:
|
126
|
+
- name: socket-dir
|
127
|
+
mountPath: /var/tmp
|
128
|
+
- name: host-sys
|
129
|
+
mountPath: /sys
|
130
|
+
- name: host-modules
|
131
|
+
mountPath: /lib/modules
|
132
|
+
- name: dev-vol
|
133
|
+
mountPath: /dev
|
134
|
+
- name: script-volume
|
135
|
+
mountPath: /script
|
136
|
+
- name: etc-simplyblock
|
137
|
+
mountPath: /etc/simplyblock
|
138
|
+
resources:
|
139
|
+
limits:
|
140
|
+
hugepages-2Mi: {{ MEM_GEGA }}Gi
|
141
|
+
memory: {{ MEM2_GEGA }}Gi
|
142
|
+
requests:
|
143
|
+
hugepages-2Mi: {{ MEM_GEGA }}Gi
|
144
|
+
|
145
|
+
- name: spdk-proxy-container
|
146
|
+
image: {{ SIMPLYBLOCK_DOCKER_IMAGE }}
|
147
|
+
imagePullPolicy: "Always"
|
148
|
+
command: ["python", "simplyblock_core/services/spdk_http_proxy_server.py"]
|
149
|
+
volumeMounts:
|
150
|
+
- name: socket-dir
|
151
|
+
mountPath: /var/tmp
|
152
|
+
env:
|
153
|
+
- name: SERVER_IP
|
154
|
+
value: "{{ SERVER_IP }}"
|
155
|
+
- name: RPC_PORT
|
156
|
+
value: "{{ RPC_PORT }}"
|
157
|
+
- name: RPC_USERNAME
|
158
|
+
value: "{{ RPC_USERNAME }}"
|
159
|
+
- name: RPC_PASSWORD
|
160
|
+
value: "{{ RPC_PASSWORD }}"
|
161
|
+
- name: MULTI_THREADING_ENABLED
|
162
|
+
value: "True"
|
163
|
+
- name: TIMEOUT
|
164
|
+
value: "300"
|
165
|
+
|
166
|
+
- name: fluentd
|
167
|
+
image: public.ecr.aws/simply-block/fluentd-kubernetes-daemonset:v1.17.1-debian-graylog-1.2
|
168
|
+
imagePullPolicy: "Always"
|
169
|
+
env:
|
170
|
+
- name: K8S_NODE_NAME
|
171
|
+
valueFrom:
|
172
|
+
fieldRef:
|
173
|
+
fieldPath: spec.nodeName
|
174
|
+
- name: FLUENT_GRAYLOG_HOST
|
175
|
+
value: "{{ GRAYLOG_SERVER_IP }}"
|
176
|
+
- name: FLUENT_GRAYLOG_PORT
|
177
|
+
value: "12202"
|
178
|
+
- name: FLUENT_GRAYLOG_PROTOCOL
|
179
|
+
value: "tcp"
|
180
|
+
- name: FLUENTD_SYSTEMD_CONF
|
181
|
+
value: "disable"
|
182
|
+
- name: FLUENT_CONTAINER_TAIL_EXCLUDE_PATH
|
183
|
+
value: /var/log/pods/fluent*
|
184
|
+
- name: FLUENT_CONTAINER_TAIL_PARSER_TYPE
|
185
|
+
value: /^(?<time>.+) (?<stream>stdout|stderr)( (?<logtag>.))? (?<log>.*)$/
|
186
|
+
resources:
|
187
|
+
requests:
|
188
|
+
cpu: 200m
|
189
|
+
memory: 0.5Gi
|
190
|
+
limits:
|
191
|
+
cpu: 1000m
|
192
|
+
memory: 1Gi
|
193
|
+
volumeMounts:
|
194
|
+
- name: varlog
|
195
|
+
mountPath: /var/log
|
196
|
+
- name: dockercontainerlogdirectory
|
197
|
+
mountPath: /var/log/pods
|
198
|
+
readOnly: true
|
@@ -1,205 +0,0 @@
|
|
1
|
-
apiVersion: apps/v1
|
2
|
-
kind: Deployment
|
3
|
-
metadata:
|
4
|
-
name: snode-spdk-deployment-{{ HOSTNAME }}
|
5
|
-
namespace: {{ NAMESPACE }}
|
6
|
-
spec:
|
7
|
-
replicas: 1
|
8
|
-
selector:
|
9
|
-
matchLabels:
|
10
|
-
app: spdk-app-{{ HOSTNAME }}
|
11
|
-
template:
|
12
|
-
metadata:
|
13
|
-
labels:
|
14
|
-
app: spdk-app-{{ HOSTNAME }}
|
15
|
-
spec:
|
16
|
-
serviceAccountName: simplyblock-storage-node-sa
|
17
|
-
nodeSelector:
|
18
|
-
kubernetes.io/hostname: {{ HOSTNAME }}
|
19
|
-
hostNetwork: true
|
20
|
-
volumes:
|
21
|
-
- name: socket-dir
|
22
|
-
emptyDir:
|
23
|
-
medium: "Memory"
|
24
|
-
- name: host-sys
|
25
|
-
hostPath:
|
26
|
-
path: /sys
|
27
|
-
- name: host-proc
|
28
|
-
hostPath:
|
29
|
-
path: /proc
|
30
|
-
- name: host-rootfs
|
31
|
-
hostPath:
|
32
|
-
path: /
|
33
|
-
- name: foundationdb
|
34
|
-
hostPath:
|
35
|
-
path: /var/foundationdb
|
36
|
-
- name: etc-simplyblock
|
37
|
-
hostPath:
|
38
|
-
path: /var/simplyblock
|
39
|
-
- name: host-modules
|
40
|
-
hostPath:
|
41
|
-
path: /lib/modules
|
42
|
-
- name: dev-vol
|
43
|
-
hostPath:
|
44
|
-
path: /dev
|
45
|
-
- name: hugepage
|
46
|
-
emptyDir:
|
47
|
-
medium: HugePages
|
48
|
-
- name: script-volume
|
49
|
-
emptyDir: {}
|
50
|
-
- name: varlog
|
51
|
-
hostPath:
|
52
|
-
path: /var/log
|
53
|
-
- name: dockercontainerlogdirectory
|
54
|
-
hostPath:
|
55
|
-
path: /var/log/pods
|
56
|
-
tolerations:
|
57
|
-
- effect: NoSchedule
|
58
|
-
key: dedicated
|
59
|
-
operator: Equal
|
60
|
-
value: simplyblock-storage-plane
|
61
|
-
|
62
|
-
initContainers:
|
63
|
-
- name: copy-script
|
64
|
-
image: public.ecr.aws/simply-block/busybox
|
65
|
-
command: ["sh", "-c", "echo \"{{ FDB_CONNECTION }}\" > /etc/foundationdb/fdb.cluster"]
|
66
|
-
volumeMounts:
|
67
|
-
- name: foundationdb
|
68
|
-
mountPath: /etc/foundationdb
|
69
|
-
|
70
|
-
- name: apply-config-to-node
|
71
|
-
image: alpine:3.19
|
72
|
-
command:
|
73
|
-
- /bin/sh
|
74
|
-
- -c
|
75
|
-
- |
|
76
|
-
set -e
|
77
|
-
echo "Installing tools..."
|
78
|
-
apk add --no-cache iproute2 curl grep
|
79
|
-
|
80
|
-
NODE_IP=$(ip route get 1.1.1.1 | grep -oE 'src [0-9.]+' | awk '{print $2}')
|
81
|
-
echo "Detected node IP: ${NODE_IP}"
|
82
|
-
|
83
|
-
echo "Sending config to ${NODE_IP}..."
|
84
|
-
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST http://${NODE_IP}:5000/snode/apply_config \
|
85
|
-
-H "Content-Type: application/json" \
|
86
|
-
-d '{}')
|
87
|
-
|
88
|
-
echo "Response code: ${RESPONSE}"
|
89
|
-
if [ "$RESPONSE" -lt 200 ] || [ "$RESPONSE" -ge 300 ]; then
|
90
|
-
echo "Failed to send config to ${NODE_IP}, exiting."
|
91
|
-
exit 1
|
92
|
-
fi
|
93
|
-
|
94
|
-
containers:
|
95
|
-
|
96
|
-
- name: spdk-container
|
97
|
-
image: {{ SPDK_IMAGE }}
|
98
|
-
imagePullPolicy: "Always"
|
99
|
-
command:
|
100
|
-
- sh
|
101
|
-
- -c
|
102
|
-
- |
|
103
|
-
if [ ! -e /dev/fd ]; then
|
104
|
-
ln -s /proc/self/fd /dev/fd
|
105
|
-
fi
|
106
|
-
/root/scripts/run_distr_with_ssd.sh "{{ L_CORES }}" "{{ SPDK_MEM }}"
|
107
|
-
env:
|
108
|
-
- name: SSD_PCIE
|
109
|
-
value: "{{ SSD_PCIE }}"
|
110
|
-
- name: PCI_ALLOWED
|
111
|
-
value: "{{ PCI_ALLOWED }}"
|
112
|
-
- name: TOTAL_HP
|
113
|
-
value: "{{ TOTAL_HP }}"
|
114
|
-
- name: RPC_PORT
|
115
|
-
value: "{{ RPC_PORT }}"
|
116
|
-
- name: SPDKCSI_SECRET
|
117
|
-
valueFrom:
|
118
|
-
secretKeyRef:
|
119
|
-
name: simplyblock-csi-secret
|
120
|
-
key: secret.json
|
121
|
-
- name: CLUSTER_CONFIG
|
122
|
-
valueFrom:
|
123
|
-
configMapKeyRef:
|
124
|
-
name: simplyblock-csi-cm
|
125
|
-
key: config.json
|
126
|
-
lifecycle:
|
127
|
-
postStart:
|
128
|
-
exec:
|
129
|
-
command: ["/bin/sh", "-c", "sudo modprobe nbd || echo failed to modprobe nbd"]
|
130
|
-
securityContext:
|
131
|
-
privileged: true
|
132
|
-
volumeMounts:
|
133
|
-
- name: socket-dir
|
134
|
-
mountPath: /var/tmp
|
135
|
-
- name: host-sys
|
136
|
-
mountPath: /sys
|
137
|
-
- name: host-modules
|
138
|
-
mountPath: /lib/modules
|
139
|
-
- name: dev-vol
|
140
|
-
mountPath: /dev
|
141
|
-
- name: script-volume
|
142
|
-
mountPath: /script
|
143
|
-
- name: etc-simplyblock
|
144
|
-
mountPath: /etc/simplyblock
|
145
|
-
resources:
|
146
|
-
limits:
|
147
|
-
hugepages-2Mi: {{ MEM_GEGA }}Gi
|
148
|
-
memory: {{ MEM2_GEGA }}Gi
|
149
|
-
requests:
|
150
|
-
hugepages-2Mi: {{ MEM_GEGA }}Gi
|
151
|
-
|
152
|
-
- name: spdk-proxy-container
|
153
|
-
image: {{ SIMPLYBLOCK_DOCKER_IMAGE }}
|
154
|
-
imagePullPolicy: "Always"
|
155
|
-
command: ["python", "simplyblock_core/services/spdk_http_proxy_server.py"]
|
156
|
-
volumeMounts:
|
157
|
-
- name: socket-dir
|
158
|
-
mountPath: /var/tmp
|
159
|
-
env:
|
160
|
-
- name: SERVER_IP
|
161
|
-
value: "{{ SERVER_IP }}"
|
162
|
-
- name: RPC_PORT
|
163
|
-
value: "{{ RPC_PORT }}"
|
164
|
-
- name: RPC_USERNAME
|
165
|
-
value: "{{ RPC_USERNAME }}"
|
166
|
-
- name: RPC_PASSWORD
|
167
|
-
value: "{{ RPC_PASSWORD }}"
|
168
|
-
- name: MULTI_THREADING_ENABLED
|
169
|
-
value: "True"
|
170
|
-
- name: TIMEOUT
|
171
|
-
value: "300"
|
172
|
-
- name: fluentd
|
173
|
-
image: public.ecr.aws/simply-block/fluentd-kubernetes-daemonset:v1.17.1-debian-graylog-1.2
|
174
|
-
imagePullPolicy: "Always"
|
175
|
-
env:
|
176
|
-
- name: K8S_NODE_NAME
|
177
|
-
valueFrom:
|
178
|
-
fieldRef:
|
179
|
-
fieldPath: spec.nodeName
|
180
|
-
- name: FLUENT_GRAYLOG_HOST
|
181
|
-
value: "{{ GRAYLOG_SERVER_IP }}"
|
182
|
-
- name: FLUENT_GRAYLOG_PORT
|
183
|
-
value: "12202"
|
184
|
-
- name: FLUENT_GRAYLOG_PROTOCOL
|
185
|
-
value: "tcp"
|
186
|
-
- name: FLUENTD_SYSTEMD_CONF
|
187
|
-
value: "disable"
|
188
|
-
- name: FLUENT_CONTAINER_TAIL_EXCLUDE_PATH
|
189
|
-
value: /var/log/pods/fluent*
|
190
|
-
- name: FLUENT_CONTAINER_TAIL_PARSER_TYPE
|
191
|
-
value: /^(?<time>.+) (?<stream>stdout|stderr)( (?<logtag>.))? (?<log>.*)$/
|
192
|
-
resources:
|
193
|
-
requests:
|
194
|
-
cpu: 200m
|
195
|
-
memory: 0.5Gi
|
196
|
-
limits:
|
197
|
-
cpu: 1000m
|
198
|
-
memory: 1Gi
|
199
|
-
volumeMounts:
|
200
|
-
- name: varlog
|
201
|
-
mountPath: /var/log
|
202
|
-
- name: dockercontainerlogdirectory
|
203
|
-
mountPath: /var/log/pods
|
204
|
-
readOnly: true
|
205
|
-
|
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-pre-25.5.6 → sbcli-pre-25.5.7}/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
|
File without changes
|
File without changes
|
File without changes
|
{sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2
RENAMED
File without changes
|
File without changes
|
{sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/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-pre-25.5.6 → sbcli-pre-25.5.7}/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-pre-25.5.6 → sbcli-pre-25.5.7}/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-pre-25.5.6 → sbcli-pre-25.5.7}/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-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/cached_lvol_stat_collector.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/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-pre-25.5.6 → sbcli-pre-25.5.7}/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-pre-25.5.6 → sbcli-pre-25.5.7}/simplyblock_core/services/tasks_runner_failed_migration.py
RENAMED
File without changes
|
File without changes
|
{sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/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
|
{sbcli-pre-25.5.6 → sbcli-pre-25.5.7}/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
|