sbcli-dev 17.0.2__tar.gz → 17.0.4__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-17.0.2 → sbcli_dev-17.0.4}/PKG-INFO +1 -1
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/pyproject.toml +1 -1
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/setup.py +1 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/cli.py +3 -28
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/clibase.py +23 -14
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/cluster_ops.py +10 -10
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/env_var +1 -1
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/caching_node.py +2 -2
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/nvme_device.py +7 -8
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/storage_node.py +2 -2
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/rpc_client.py +0 -7
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/lvol_monitor.py +7 -7
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/storage_node_ops.py +0 -117
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/utils.py +0 -34
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/swagger.yaml +256 -4162
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/README.md +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/requirements.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/setup.cfg +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/constants.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/device_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/health_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/lvol_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/snapshot_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/controllers/tcp_ports_events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/db_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/distr_controller.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/cluster.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/job_schedule.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/foundation.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/prometheus.yml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk/client.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/spdk_stats_collector.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/storage_node_monitor.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_migration.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_new_dev_migration.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/snode_client.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/test/test_utils.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/README.md +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/app.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/swagger_ui_blueprint.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/caching_node_app.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/caching_node_app_k8s.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/node_utils_k8s.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/node_webapp.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/requirements.txt +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/snode_app.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/snode_app_k8s.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/SimplyBlock-API.postman_collection.json +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-17.0.2 → sbcli_dev-17.0.4}/simplyblock_web/utils.py +0 -0
|
@@ -347,8 +347,6 @@ class CLIWrapper(CLIWrapperBase):
|
|
|
347
347
|
argument = subcommand.add_argument('--log-del-interval', help='Logging retention period, default: 3d', type=str, default='3d', dest='log_del_interval', required=False)
|
|
348
348
|
argument = subcommand.add_argument('--metrics-retention-period', help='Retention period for I/O statistics (Prometheus), default: 7d', type=str, default='7d', dest='metrics_retention_period', required=False)
|
|
349
349
|
argument = subcommand.add_argument('--contact-point', help='Email or slack webhook url to be used for alerting', type=str, default='', dest='contact_point', required=False)
|
|
350
|
-
if self.developer_mode:
|
|
351
|
-
argument = subcommand.add_argument('--grafana-endpoint', help='Endpoint url for Grafana', type=str, default='', dest='grafana_endpoint', required=False)
|
|
352
350
|
if self.developer_mode:
|
|
353
351
|
argument = subcommand.add_argument('--distr-bs', help='(Dev) distrb bdev block size, default: 4096', type=int, default=4096, dest='distr_bs', required=False)
|
|
354
352
|
argument = subcommand.add_argument('--chunk-size-in-bytes', help='(Dev) distrb bdev chunk block size, default: 4096', type=int, default=4096, dest='distr_chunk_bs', required=False)
|
|
@@ -405,25 +403,10 @@ class CLIWrapper(CLIWrapperBase):
|
|
|
405
403
|
argument = subcommand.add_argument('--host-id', help='Primary storage node id or hostname', type=str, dest='host_id', required=False)
|
|
406
404
|
if self.developer_mode:
|
|
407
405
|
argument = subcommand.add_argument('--encrypt', help='Use inline data encryption and decryption on the logical volume', dest='encrypt', required=False, action='store_true')
|
|
408
|
-
if self.developer_mode:
|
|
409
|
-
argument = subcommand.add_argument('--crypto-key1', help='Hex value of key1 to be used for logical volume encryption', type=str, dest='crypto_key1', required=False)
|
|
410
|
-
if self.developer_mode:
|
|
411
|
-
argument = subcommand.add_argument('--crypto-key2', help='Hex value of key2 to be used for logical volume encryption', type=str, dest='crypto_key2', required=False)
|
|
412
|
-
if self.developer_mode:
|
|
413
|
-
argument = subcommand.add_argument('--max-rw-iops', help='Maximum Read Write IO Per Second', type=int, dest='max_rw_iops', required=False)
|
|
414
|
-
if self.developer_mode:
|
|
415
|
-
argument = subcommand.add_argument('--max-rw-mbytes', help='Maximum Read Write Megabytes Per Second', type=int, dest='max_rw_mbytes', required=False)
|
|
416
|
-
if self.developer_mode:
|
|
417
|
-
argument = subcommand.add_argument('--max-r-mbytes', help='Maximum Read Megabytes Per Second', type=int, dest='max_r_mbytes', required=False)
|
|
418
|
-
if self.developer_mode:
|
|
419
|
-
argument = subcommand.add_argument('--max-w-mbytes', help='Maximum Write Megabytes Per Second', type=int, dest='max_w_mbytes', required=False)
|
|
420
406
|
if self.developer_mode:
|
|
421
407
|
argument = subcommand.add_argument('--distr-vuid', help='(Dev) set vuid manually, default: random (1-99999)', type=int, dest='distr_vuid', required=False)
|
|
422
408
|
if self.developer_mode:
|
|
423
409
|
argument = subcommand.add_argument('--lvol-ha-type', help='Logical volume HA type (single, ha), default is cluster HA type', type=str, default='ha', dest='lvol_ha_type', required=False, choices=['single','default','ha',])
|
|
424
|
-
argument = subcommand.add_argument('--lvol-priority-class', help='Logical volume priority class', type=int, default=0, dest='lvol_priority_class', required=False)
|
|
425
|
-
if self.developer_mode:
|
|
426
|
-
argument = subcommand.add_argument('--fstype', help='Filesystem type for testing (ext4, xfs)', type=str, default='xfs', dest='fstype', required=False, choices=['ext4','xfs',])
|
|
427
410
|
|
|
428
411
|
def init_cluster__create(self, subparser):
|
|
429
412
|
subcommand = self.add_sub_command(subparser, 'create', 'Creates a new cluster')
|
|
@@ -465,8 +448,8 @@ class CLIWrapper(CLIWrapperBase):
|
|
|
465
448
|
argument = subcommand.add_argument('--cap-crit', help='Capacity critical level in percent, default: 99', type=int, default=99, dest='cap_crit', required=False)
|
|
466
449
|
argument = subcommand.add_argument('--prov-cap-warn', help='Capacity warning level in percent, default: 250', type=int, default=250, dest='prov_cap_warn', required=False)
|
|
467
450
|
argument = subcommand.add_argument('--prov-cap-crit', help='Capacity critical level in percent, default: 500', type=int, default=500, dest='prov_cap_crit', required=False)
|
|
468
|
-
argument = subcommand.add_argument('--data-chunks-per-stripe', help='Erasure coding schema parameter k (distributed raid), default: 1', type=int, default=
|
|
469
|
-
argument = subcommand.add_argument('--parity-chunks-per-stripe', help='Erasure coding schema parameter n (distributed raid), default: 1', type=int, default=
|
|
451
|
+
argument = subcommand.add_argument('--data-chunks-per-stripe', help='Erasure coding schema parameter k (distributed raid), default: 1', type=int, default=1, dest='distr_ndcs', required=False)
|
|
452
|
+
argument = subcommand.add_argument('--parity-chunks-per-stripe', help='Erasure coding schema parameter n (distributed raid), default: 1', type=int, default=1, dest='distr_npcs', required=False)
|
|
470
453
|
if self.developer_mode:
|
|
471
454
|
argument = subcommand.add_argument('--distr-bs', help='(Dev) distrb bdev block size, default: 4096', type=int, default=4096, dest='distr_bs', required=False)
|
|
472
455
|
if self.developer_mode:
|
|
@@ -1018,7 +1001,6 @@ class CLIWrapper(CLIWrapperBase):
|
|
|
1018
1001
|
args.blk_size = 512
|
|
1019
1002
|
args.page_size = 2097152
|
|
1020
1003
|
args.CLI_PASS = None
|
|
1021
|
-
args.grafana_endpoint = ''
|
|
1022
1004
|
args.distr_bs = 4096
|
|
1023
1005
|
args.max_queue_size = 128
|
|
1024
1006
|
args.inflight_io_threshold = 4
|
|
@@ -1039,16 +1021,9 @@ class CLIWrapper(CLIWrapperBase):
|
|
|
1039
1021
|
args.pool_max = '25G'
|
|
1040
1022
|
args.snapshot = False
|
|
1041
1023
|
args.max_size = '1000G'
|
|
1042
|
-
args.encrypt =
|
|
1043
|
-
args.crypto_key1 = None
|
|
1044
|
-
args.crypto_key2 = None
|
|
1045
|
-
args.max_rw_iops = None
|
|
1046
|
-
args.max_rw_mbytes = None
|
|
1047
|
-
args.max_r_mbytes = None
|
|
1048
|
-
args.max_w_mbytes = None
|
|
1024
|
+
args.encrypt = None
|
|
1049
1025
|
args.distr_vuid = None
|
|
1050
1026
|
args.lvol_ha_type = 'ha'
|
|
1051
|
-
args.fstype = 'xfs'
|
|
1052
1027
|
ret = self.cluster__deploy(sub_command, args)
|
|
1053
1028
|
elif sub_command in ['create']:
|
|
1054
1029
|
if not self.developer_mode:
|
|
@@ -648,7 +648,27 @@ class CLIWrapperBase:
|
|
|
648
648
|
|
|
649
649
|
|
|
650
650
|
def cluster_deploy(self,args):
|
|
651
|
-
|
|
651
|
+
grafana_endpoint = ""
|
|
652
|
+
secondary_nodes = False
|
|
653
|
+
namespace = None
|
|
654
|
+
lvol_name = "lvol01"
|
|
655
|
+
lvol_size = self.parse_size("10G")
|
|
656
|
+
pool_max = self.parse_size("25G")
|
|
657
|
+
max_size = self.parse_size("1000G")
|
|
658
|
+
pool_name = "pool01"
|
|
659
|
+
with_snapshot = False
|
|
660
|
+
host_id = None
|
|
661
|
+
crypto = False
|
|
662
|
+
crypto_key1 = None
|
|
663
|
+
crypto_key2 = None
|
|
664
|
+
max_rw_iops = None
|
|
665
|
+
max_rw_mbytes = None
|
|
666
|
+
max_r_mbytes = None
|
|
667
|
+
max_w_mbytes = None
|
|
668
|
+
lvol_priority_class = 0
|
|
669
|
+
id_device_by_nqn = False
|
|
670
|
+
fstype = "xfs"
|
|
671
|
+
|
|
652
672
|
storage_nodes = args.storage_nodes
|
|
653
673
|
test = args.test
|
|
654
674
|
ha_type = args.ha_type
|
|
@@ -669,7 +689,6 @@ class CLIWrapperBase:
|
|
|
669
689
|
log_del_interval = args.log_del_interval
|
|
670
690
|
metrics_retention_period = args.metrics_retention_period
|
|
671
691
|
contact_point = args.contact_point
|
|
672
|
-
grafana_endpoint = args.grafana_endpoint
|
|
673
692
|
enable_node_affinity = args.enable_node_affinity
|
|
674
693
|
qpair_count = args.qpair_count
|
|
675
694
|
max_queue_size = args.max_queue_size
|
|
@@ -712,17 +731,7 @@ class CLIWrapperBase:
|
|
|
712
731
|
pool_max = utils.parse_size(args.pool_max)
|
|
713
732
|
host_id = args.host_id
|
|
714
733
|
comp = None
|
|
715
|
-
crypto = args.encrypt
|
|
716
734
|
distr_vuid = args.distr_vuid
|
|
717
|
-
with_snapshot = args.snapshot
|
|
718
|
-
lvol_priority_class = args.lvol_priority_class
|
|
719
|
-
max_rw_iops = args.max_rw_iops
|
|
720
|
-
max_rw_mbytes = args.max_rw_mbytes
|
|
721
|
-
max_r_mbytes = args.max_r_mbytes
|
|
722
|
-
max_w_mbytes = args.max_w_mbytes
|
|
723
|
-
crypto_key1 = args.crypto_key1
|
|
724
|
-
crypto_key2 = args.crypto_key2
|
|
725
|
-
fstype = args.fstype
|
|
726
735
|
|
|
727
736
|
return cluster_ops.deploy_cluster(
|
|
728
737
|
storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,ifname,
|
|
@@ -732,8 +741,8 @@ class CLIWrapperBase:
|
|
|
732
741
|
qpair_count, max_queue_size, inflight_io_threshold, strict_node_anti_affinity,data_nics,
|
|
733
742
|
spdk_image,spdk_debug,small_bufsize,large_bufsize,num_partitions_per_dev,jm_percent,spdk_cpu_mask,max_lvol,
|
|
734
743
|
max_snap,max_prov,number_of_devices,enable_test_device,enable_ha_jm,ha_jm_count,number_of_distribs,namespace,secondary_nodes,partition_size,
|
|
735
|
-
lvol_name, lvol_size, lvol_ha_type, pool_name, pool_max, host_id, comp, crypto, distr_vuid, max_rw_iops, max_rw_mbytes, max_r_mbytes, max_w_mbytes,
|
|
736
|
-
with_snapshot, max_size, crypto_key1, crypto_key2, lvol_priority_class, fstype)
|
|
744
|
+
lvol_name, lvol_size, lvol_ha_type, pool_name, pool_max, host_id, comp, crypto, distr_vuid, max_rw_iops, max_rw_mbytes, max_r_mbytes, max_w_mbytes,
|
|
745
|
+
with_snapshot, max_size, crypto_key1, crypto_key2, lvol_priority_class, id_device_by_nqn, fstype)
|
|
737
746
|
|
|
738
747
|
def cluster_create(self, args):
|
|
739
748
|
page_size_in_blocks = args.page_size
|
|
@@ -203,8 +203,8 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
|
|
|
203
203
|
if prov_cap_crit and prov_cap_crit > 0:
|
|
204
204
|
c.prov_cap_crit = prov_cap_crit
|
|
205
205
|
if distr_ndcs == 0 and distr_npcs == 0:
|
|
206
|
-
|
|
207
|
-
|
|
206
|
+
logger.error("both distr_ndcs and distr_npcs cannot be 0")
|
|
207
|
+
return False
|
|
208
208
|
else:
|
|
209
209
|
c.distr_ndcs = distr_ndcs
|
|
210
210
|
c.distr_npcs = distr_npcs
|
|
@@ -380,7 +380,7 @@ def deploy_cluster(storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,i
|
|
|
380
380
|
ha_jm_count, number_of_distribs,namespace,secondary_nodes,partition_size,
|
|
381
381
|
lvol_name, lvol_size, lvol_ha_type, pool_name, pool_max, host_id, comp, crypto, distr_vuid, max_rw_iops,
|
|
382
382
|
max_rw_mbytes, max_r_mbytes, max_w_mbytes, with_snapshot, max_size, crypto_key1, crypto_key2,
|
|
383
|
-
lvol_priority_class, fstype):
|
|
383
|
+
lvol_priority_class, id_device_by_nqn, fstype):
|
|
384
384
|
logger.info("run deploy-cleaner")
|
|
385
385
|
|
|
386
386
|
storage_node_ops.deploy_cleaner()
|
|
@@ -401,7 +401,7 @@ def deploy_cluster(storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,i
|
|
|
401
401
|
dev_ip=f"{node_ip}:5000"
|
|
402
402
|
add_node_status=storage_node_ops.add_node(cluster_uuid,dev_ip,ifname,data_nics,max_lvol,max_snap,max_prov,spdk_image,spdk_debug,
|
|
403
403
|
small_bufsize,large_bufsize,spdk_cpu_mask,num_partitions_per_dev,jm_percent,number_of_devices,
|
|
404
|
-
enable_test_device,namespace,number_of_distribs,enable_ha_jm,False,
|
|
404
|
+
enable_test_device,namespace,number_of_distribs,enable_ha_jm,False,id_device_by_nqn,partition_size,ha_jm_count)
|
|
405
405
|
|
|
406
406
|
|
|
407
407
|
if not add_node_status:
|
|
@@ -417,7 +417,7 @@ def deploy_cluster(storage_nodes,test,ha_type,distr_ndcs,distr_npcs,enable_qos,i
|
|
|
417
417
|
dev_ip=f"{node_ip}:5000"
|
|
418
418
|
add_node_status=storage_node_ops.add_node(cluster_uuid,dev_ip,ifname,data_nics,max_lvol,max_snap,max_prov,spdk_image,spdk_debug,
|
|
419
419
|
small_bufsize,large_bufsize,spdk_cpu_mask,num_partitions_per_dev,jm_percent,number_of_devices,
|
|
420
|
-
enable_test_device,namespace,number_of_distribs,enable_ha_jm,True,
|
|
420
|
+
enable_test_device,namespace,number_of_distribs,enable_ha_jm,True,id_device_by_nqn,partition_size,ha_jm_count)
|
|
421
421
|
|
|
422
422
|
if not add_node_status:
|
|
423
423
|
logger.error("Could not add storage node successfully")
|
|
@@ -537,11 +537,11 @@ def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn
|
|
|
537
537
|
_create_update_user(cluster.uuid, cluster.grafana_endpoint, cluster.grafana_secret, cluster.secret)
|
|
538
538
|
|
|
539
539
|
if distr_ndcs == 0 and distr_npcs == 0:
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
540
|
+
logger.error("both distr_ndcs and distr_npcs cannot be 0")
|
|
541
|
+
return False
|
|
542
|
+
|
|
543
|
+
cluster.distr_ndcs = distr_ndcs
|
|
544
|
+
cluster.distr_npcs = distr_npcs
|
|
545
545
|
cluster.distr_bs = distr_bs
|
|
546
546
|
cluster.distr_chunk_bs = distr_chunk_bs
|
|
547
547
|
cluster.ha_type = ha_type
|
|
@@ -41,12 +41,12 @@ class CachingNode(BaseNodeObject):
|
|
|
41
41
|
multipathing: bool = True
|
|
42
42
|
node_lvs: str = "lvs"
|
|
43
43
|
nvme_devices: List[NVMeDevice] = []
|
|
44
|
-
partitions_count: int = 0
|
|
44
|
+
partitions_count: int = 0 # Unused
|
|
45
45
|
remote_devices: List[NVMeDevice] = []
|
|
46
46
|
rpc_password: str = ""
|
|
47
47
|
rpc_port: int = -1
|
|
48
48
|
rpc_username: str = ""
|
|
49
|
-
sequential_number: int = 0
|
|
49
|
+
sequential_number: int = 0 # Unused
|
|
50
50
|
services: List[str] = []
|
|
51
51
|
subsystem: str = ""
|
|
52
52
|
system_uuid: str = ""
|
|
@@ -46,19 +46,19 @@ class NVMeDevice(BaseModel):
|
|
|
46
46
|
nvmf_ip: str = ""
|
|
47
47
|
nvmf_nqn: str = ""
|
|
48
48
|
nvmf_port: int = 0
|
|
49
|
-
overload_percentage: int = 0
|
|
50
|
-
partition_jm_bdev: str = ""
|
|
51
|
-
partition_jm_size: int = 0
|
|
52
|
-
partition_main_bdev: str = ""
|
|
53
|
-
partition_main_size: int = 0
|
|
54
|
-
partitions_count: int = 0
|
|
49
|
+
overload_percentage: int = 0 # Unused
|
|
50
|
+
partition_jm_bdev: str = "" # Unused
|
|
51
|
+
partition_jm_size: int = 0 # Unused
|
|
52
|
+
partition_main_bdev: str = "" # Unused
|
|
53
|
+
partition_main_size: int = 0 # Unused
|
|
54
|
+
partitions_count: int = 0 # Unused
|
|
55
55
|
pcie_address: str = ""
|
|
56
56
|
physical_label: int = 0
|
|
57
57
|
pt_bdev: str = ""
|
|
58
58
|
qos_bdev: str = ""
|
|
59
59
|
remote_bdev: str = ""
|
|
60
60
|
retries_exhausted: bool = False
|
|
61
|
-
sequential_number: int = 0
|
|
61
|
+
sequential_number: int = 0 # Unused
|
|
62
62
|
serial_number: str = ""
|
|
63
63
|
size: int = -1
|
|
64
64
|
testing_bdev: str = ""
|
|
@@ -70,4 +70,3 @@ class JMDevice(NVMeDevice):
|
|
|
70
70
|
jm_bdev: str = ""
|
|
71
71
|
jm_nvme_bdev_list: List[str] = []
|
|
72
72
|
raid_bdev: str = ""
|
|
73
|
-
|
|
@@ -66,7 +66,7 @@ class StorageNode(BaseNodeObject):
|
|
|
66
66
|
number_of_distribs: int = 4
|
|
67
67
|
nvme_devices: List[NVMeDevice] = []
|
|
68
68
|
online_since: str = ""
|
|
69
|
-
partitions_count: int = 0
|
|
69
|
+
partitions_count: int = 0 # Unused
|
|
70
70
|
poller_cpu_cores: List[int] = []
|
|
71
71
|
ssd_pcie: List = []
|
|
72
72
|
pollers_mask: str = ""
|
|
@@ -78,7 +78,7 @@ class StorageNode(BaseNodeObject):
|
|
|
78
78
|
rpc_port: int = -1
|
|
79
79
|
rpc_username: str = ""
|
|
80
80
|
secondary_node_id: str = ""
|
|
81
|
-
sequential_number: int = 0
|
|
81
|
+
sequential_number: int = 0 # Unused
|
|
82
82
|
jm_ids: List[str] = []
|
|
83
83
|
spdk_cpu_mask: str = ""
|
|
84
84
|
spdk_debug: bool = False
|
|
@@ -792,13 +792,6 @@ class RPCClient:
|
|
|
792
792
|
params = {"name": name, "vuid": vuid}
|
|
793
793
|
return self._request("bdev_jm_unmap_vuid", params)
|
|
794
794
|
|
|
795
|
-
def sock_impl_set_options(self):
|
|
796
|
-
method = "sock_impl_set_options"
|
|
797
|
-
params = {"impl_name": "posix", "enable_quickack": True,
|
|
798
|
-
"enable_zerocopy_send_server": True,
|
|
799
|
-
"enable_zerocopy_send_client": True}
|
|
800
|
-
return self._request(method, params)
|
|
801
|
-
|
|
802
795
|
def nvmf_set_config(self, poll_groups_mask):
|
|
803
796
|
params = {"poll_groups_mask": poll_groups_mask}
|
|
804
797
|
return self._request("nvmf_set_config", params)
|
|
@@ -99,6 +99,9 @@ while True:
|
|
|
99
99
|
logger.debug(f"Skipping LVol health check because of io_error {lvol.get_id()}")
|
|
100
100
|
continue
|
|
101
101
|
|
|
102
|
+
if lvol.status == LVol.STATUS_IN_CREATION:
|
|
103
|
+
continue
|
|
104
|
+
|
|
102
105
|
if lvol.status == lvol.STATUS_IN_DELETION:
|
|
103
106
|
ret = rpc_client.bdev_lvol_get_lvol_delete_status(f"{lvol.lvs_name}/{lvol.lvol_bdev}")
|
|
104
107
|
if ret == 0: # delete complete
|
|
@@ -119,13 +122,10 @@ while True:
|
|
|
119
122
|
continue
|
|
120
123
|
|
|
121
124
|
passed = True
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if not ret:
|
|
127
|
-
passed = False
|
|
128
|
-
|
|
125
|
+
ret = health_controller.check_lvol_on_node(
|
|
126
|
+
lvol.get_id(), lvol.node_id, node_bdev_names, node_lvols_nqns)
|
|
127
|
+
if not ret:
|
|
128
|
+
passed = False
|
|
129
129
|
|
|
130
130
|
if lvol.ha_type == "ha":
|
|
131
131
|
sec_node = db_controller.get_storage_node_by_id(snode.secondary_node_id)
|
|
@@ -30,59 +30,6 @@ from simplyblock_core.snode_client import SNodeClient
|
|
|
30
30
|
logger = utils.get_logger(__name__)
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
class StorageOpsException(Exception):
|
|
34
|
-
def __init__(self, message):
|
|
35
|
-
self.message = message
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def _get_data_nics(data_nics):
|
|
39
|
-
if not data_nics:
|
|
40
|
-
return
|
|
41
|
-
out, _, _ = shell_utils.run_command("ip -j address show")
|
|
42
|
-
data = json.loads(out)
|
|
43
|
-
logger.debug("ifaces")
|
|
44
|
-
logger.debug(pprint.pformat(data))
|
|
45
|
-
|
|
46
|
-
def _get_ip4_address(list_of_addr):
|
|
47
|
-
if list_of_addr:
|
|
48
|
-
for data in list_of_addr:
|
|
49
|
-
if data['family'] == 'inet':
|
|
50
|
-
return data['local']
|
|
51
|
-
return ""
|
|
52
|
-
|
|
53
|
-
devices = {i["ifname"]: i for i in data}
|
|
54
|
-
iface_list = []
|
|
55
|
-
for nic in data_nics:
|
|
56
|
-
if nic not in devices:
|
|
57
|
-
continue
|
|
58
|
-
device = devices[nic]
|
|
59
|
-
iface = IFace({
|
|
60
|
-
'uuid': str(uuid.uuid4()),
|
|
61
|
-
'if_name': device['ifname'],
|
|
62
|
-
'ip4_address': _get_ip4_address(device['addr_info']),
|
|
63
|
-
'port_number': 1, # TODO: check this value
|
|
64
|
-
'status': device['operstate'],
|
|
65
|
-
'net_type': device['link_type']})
|
|
66
|
-
iface_list.append(iface)
|
|
67
|
-
|
|
68
|
-
return iface_list
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def _get_if_ip_address(ifname):
|
|
72
|
-
out, _, _ = shell_utils.run_command("ip -j address show %s" % ifname)
|
|
73
|
-
data = json.loads(out)
|
|
74
|
-
logger.debug(pprint.pformat(data))
|
|
75
|
-
if data:
|
|
76
|
-
data = data[0]
|
|
77
|
-
if 'addr_info' in data and data['addr_info']:
|
|
78
|
-
address_info = data['addr_info']
|
|
79
|
-
for adr in address_info:
|
|
80
|
-
if adr['family'] == 'inet':
|
|
81
|
-
return adr['local']
|
|
82
|
-
logger.error("IP not found for interface %s", ifname)
|
|
83
|
-
exit(1)
|
|
84
|
-
|
|
85
|
-
|
|
86
33
|
def addNvmeDevices(snode, devs):
|
|
87
34
|
rpc_client = RPCClient(
|
|
88
35
|
snode.mgmt_ip, snode.rpc_port,
|
|
@@ -149,70 +96,6 @@ def addNvmeDevices(snode, devs):
|
|
|
149
96
|
return devices
|
|
150
97
|
|
|
151
98
|
|
|
152
|
-
def _get_nvme_list(cluster):
|
|
153
|
-
out, err, _ = shell_utils.run_command("sudo nvme list -v -o json")
|
|
154
|
-
data = json.loads(out)
|
|
155
|
-
logger.debug("nvme list:")
|
|
156
|
-
logger.debug(pprint.pformat(data))
|
|
157
|
-
|
|
158
|
-
def _get_pcie_controller(ctrl_list):
|
|
159
|
-
if ctrl_list:
|
|
160
|
-
for item in ctrl_list:
|
|
161
|
-
if 'Transport' in item and item['Transport'] == 'pcie':
|
|
162
|
-
return item
|
|
163
|
-
|
|
164
|
-
def _get_size_from_namespaces(namespaces):
|
|
165
|
-
size = 0
|
|
166
|
-
if namespaces:
|
|
167
|
-
for ns in namespaces:
|
|
168
|
-
size += ns['PhysicalSize']
|
|
169
|
-
return size
|
|
170
|
-
|
|
171
|
-
sequential_number = 0
|
|
172
|
-
devices = []
|
|
173
|
-
if data and 'Devices' in data:
|
|
174
|
-
for dev in data['Devices'][0]['Subsystems']:
|
|
175
|
-
controller = _get_pcie_controller(dev['Controllers'])
|
|
176
|
-
if not controller:
|
|
177
|
-
continue
|
|
178
|
-
|
|
179
|
-
if controller['ModelNumber'] not in cluster.model_ids:
|
|
180
|
-
logger.info("Device model ID is not recognized: %s, skipping device: %s",
|
|
181
|
-
controller['ModelNumber'], controller['Controller'])
|
|
182
|
-
continue
|
|
183
|
-
|
|
184
|
-
size = _get_size_from_namespaces(controller['Namespaces'])
|
|
185
|
-
device_partitions_count = int(size / (cluster.blk_size * cluster.page_size_in_blocks))
|
|
186
|
-
devices.append(
|
|
187
|
-
NVMeDevice({
|
|
188
|
-
'device_name': controller['Controller'],
|
|
189
|
-
'sequential_number': sequential_number,
|
|
190
|
-
'partitions_count': device_partitions_count,
|
|
191
|
-
'capacity': size,
|
|
192
|
-
'size': size,
|
|
193
|
-
'pcie_address': controller['Address'],
|
|
194
|
-
'model_id': controller['ModelNumber'],
|
|
195
|
-
'serial_number': controller['SerialNumber'],
|
|
196
|
-
# 'status': controller['State']
|
|
197
|
-
}))
|
|
198
|
-
sequential_number += device_partitions_count
|
|
199
|
-
return devices
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
def _run_nvme_smart_log(dev_name):
|
|
203
|
-
out, _, _ = shell_utils.run_command("sudo nvme smart-log /dev/%s -o json" % dev_name)
|
|
204
|
-
data = json.loads(out)
|
|
205
|
-
logger.debug(out)
|
|
206
|
-
return data
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
def _run_nvme_smart_log_add(dev_name):
|
|
210
|
-
out, _, _ = shell_utils.run_command("sudo nvme intel smart-log-add /dev/%s --json" % dev_name)
|
|
211
|
-
data = json.loads(out)
|
|
212
|
-
logger.debug(out)
|
|
213
|
-
return data
|
|
214
|
-
|
|
215
|
-
|
|
216
99
|
def get_next_cluster_device_order(db_controller, cluster_id):
|
|
217
100
|
max_order = 0
|
|
218
101
|
found = False
|
|
@@ -333,40 +333,6 @@ def get_random_vuid():
|
|
|
333
333
|
return r
|
|
334
334
|
|
|
335
335
|
|
|
336
|
-
def calculate_core_allocation(cpu_count):
|
|
337
|
-
'''
|
|
338
|
-
If number of cpu cores >= 8, tune cpu core mask
|
|
339
|
-
1. Never use core 0 for spdk.
|
|
340
|
-
2. Core 1 is for app_thread
|
|
341
|
-
3. Core 2 for Journal manager
|
|
342
|
-
4. Poller cpu cores are 30% of Available cores
|
|
343
|
-
5. Alceml cpu cores are 30% of Available cores
|
|
344
|
-
6. Distribs cpu cores are 40% of Available cores
|
|
345
|
-
JIRA ticket link/s
|
|
346
|
-
https://simplyblock.atlassian.net/browse/SFAM-885
|
|
347
|
-
'''
|
|
348
|
-
|
|
349
|
-
if cpu_count > 64:
|
|
350
|
-
cpu_count = 64
|
|
351
|
-
|
|
352
|
-
all_cores = list(range(0, cpu_count))
|
|
353
|
-
app_thread_core = all_cores[1:2]
|
|
354
|
-
jm_cpu_core = all_cores[2:3]
|
|
355
|
-
|
|
356
|
-
# Calculate available cores
|
|
357
|
-
available_cores_count = cpu_count - 3
|
|
358
|
-
|
|
359
|
-
# Calculate cpus counts
|
|
360
|
-
poller_cpus_count = int(available_cores_count * 0.3)
|
|
361
|
-
alceml_cpus_cout = int(available_cores_count * 0.3)
|
|
362
|
-
|
|
363
|
-
# Calculate cpus cores
|
|
364
|
-
poller_cpu_cores = all_cores[3:poller_cpus_count+3]
|
|
365
|
-
alceml_cpu_cores = all_cores[3+poller_cpus_count:poller_cpus_count+alceml_cpus_cout+3]
|
|
366
|
-
distrib_cpu_cores = all_cores[3+poller_cpus_count+alceml_cpus_cout:]
|
|
367
|
-
|
|
368
|
-
return app_thread_core, jm_cpu_core, poller_cpu_cores, alceml_cpu_cores, distrib_cpu_cores
|
|
369
|
-
|
|
370
336
|
def hexa_to_cpu_list(cpu_mask):
|
|
371
337
|
# Convert the hex string to an integer
|
|
372
338
|
mask_int = int(cpu_mask, 16)
|