sbcli-dev 10.4.0__tar.gz → 10.7.1__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-10.4.0 → sbcli_dev-10.7.1}/PKG-INFO +1 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_cli/cli.py +4 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/cluster_ops.py +7 -3
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/constants.py +5 -4
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/caching_node_controller.py +85 -51
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/device_controller.py +161 -139
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/health_controller.py +5 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/lvol_controller.py +36 -73
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/snapshot_controller.py +10 -17
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/tasks_events.py +0 -4
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/env_var +1 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/mgmt_node_ops.py +0 -3
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/caching_node.py +4 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/nvme_device.py +1 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/storage_node.py +2 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/config_docker.sh +13 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/install_deps.sh +5 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/health_check_service.py +3 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_failed_migration.py +0 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_migration.py +0 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_new_dev_migration.py +16 -14
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_node_add.py +0 -2
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/tasks_runner_restart.py +1 -3
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/snode_client.py +2 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/storage_node_ops.py +175 -74
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/utils.py +2 -2
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/caching_node_ops.py +10 -7
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/snode_ops.py +29 -20
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/node_webapp.py +1 -1
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/README.md +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/pyproject.toml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/requirements.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/setup.cfg +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/setup.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_cli/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/db_controller.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/distr_controller.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/cluster.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/job_schedule.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/rpc_client.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/deploy_fdb.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/foundation.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/prepare_fdb.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/prometheus.yml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/log_agg_service.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/port_stat_collector.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/services/storage_node_monitor.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/workers/cleanup_foundationdb.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/README.md +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/app.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/snode_ops_k8s.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_cluster.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/blueprints/web_api_storage_node.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/caching_node_app.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/caching_node_app_k8s.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/requirements.txt +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/snode_app.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/snode_app_k8s.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_web/utils.py +0 -0
|
@@ -47,6 +47,7 @@ class CLIWrapper:
|
|
|
47
47
|
sub_command.add_argument("--max-prov", help='Maximum amount of GB to be provisioned via all storage nodes', dest='max_prov')
|
|
48
48
|
sub_command.add_argument("--number-of-distribs", help='The number of distirbs to be created on the node', dest='number_of_distribs', type=int, default=2)
|
|
49
49
|
sub_command.add_argument("--number-of-devices", help='Number of devices per storage node if it\'s not supported EC2 instance', dest='number_of_devices', type=int)
|
|
50
|
+
sub_command.add_argument("--size-of-device", help='Size of device per storage node', dest='partition_size')
|
|
50
51
|
sub_command.add_argument("--cpu-mask", help='SPDK app CPU mask, default is all cores found', dest='spdk_cpu_mask')
|
|
51
52
|
|
|
52
53
|
sub_command.add_argument("--spdk-image", help='SPDK image uri', dest='spdk_image')
|
|
@@ -58,7 +59,7 @@ class CLIWrapper:
|
|
|
58
59
|
sub_command.add_argument("--disable-ha-jm", help='Disable HA JM for distrib creation', action='store_false', dest='enable_ha_jm', default=True)
|
|
59
60
|
sub_command.add_argument("--is-secondary-node", help='add as secondary node', action='store_true', dest='is_secondary_node', default=False)
|
|
60
61
|
sub_command.add_argument("--namespace", help='k8s namespace to deploy on',)
|
|
61
|
-
|
|
62
|
+
sub_command.add_argument("--id-device-by-nqn", help='Use device nqn to identify it instead of serial number', action='store_true', dest='id_device_by_nqn', default=False)
|
|
62
63
|
|
|
63
64
|
# delete storage node
|
|
64
65
|
sub_command = self.add_sub_command(subparser, "delete", 'Delete storage node obj')
|
|
@@ -798,6 +799,8 @@ class CLIWrapper:
|
|
|
798
799
|
number_of_distribs=number_of_distribs,
|
|
799
800
|
enable_ha_jm=enable_ha_jm,
|
|
800
801
|
is_secondary_node=args.is_secondary_node,
|
|
802
|
+
id_device_by_nqn=args.id_device_by_nqn,
|
|
803
|
+
partition_size=args.partition_size,
|
|
801
804
|
)
|
|
802
805
|
|
|
803
806
|
return out
|
|
@@ -130,6 +130,10 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
|
|
|
130
130
|
if c.swarm.attrs and "ID" in c.swarm.attrs:
|
|
131
131
|
logger.info("Docker swarm found, leaving swarm now")
|
|
132
132
|
c.swarm.leave(force=True)
|
|
133
|
+
try:
|
|
134
|
+
c.volumes.get("monitoring_grafana_data").remove(force=True)
|
|
135
|
+
except:
|
|
136
|
+
pass
|
|
133
137
|
time.sleep(3)
|
|
134
138
|
|
|
135
139
|
c.swarm.init(DEV_IP)
|
|
@@ -160,7 +164,7 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
|
|
|
160
164
|
if prov_cap_crit and prov_cap_crit > 0:
|
|
161
165
|
c.prov_cap_crit = prov_cap_crit
|
|
162
166
|
if distr_ndcs == 0 and distr_npcs == 0:
|
|
163
|
-
c.distr_ndcs =
|
|
167
|
+
c.distr_ndcs = 1
|
|
164
168
|
c.distr_npcs = 1
|
|
165
169
|
else:
|
|
166
170
|
c.distr_ndcs = distr_ndcs
|
|
@@ -365,7 +369,7 @@ def cluster_activate(cl_id, force=False, force_lvstore_create=False):
|
|
|
365
369
|
else:
|
|
366
370
|
ret = storage_node_ops.create_lvstore(snode, cluster.distr_ndcs, cluster.distr_npcs, cluster.distr_bs,
|
|
367
371
|
cluster.distr_chunk_bs, cluster.page_size_in_blocks, max_size, snodes)
|
|
368
|
-
if not ret:
|
|
372
|
+
if not ret and not force:
|
|
369
373
|
logger.error("Failed to activate cluster")
|
|
370
374
|
set_cluster_status(cl_id, ols_status)
|
|
371
375
|
return False
|
|
@@ -377,7 +381,7 @@ def cluster_activate(cl_id, force=False, force_lvstore_create=False):
|
|
|
377
381
|
continue
|
|
378
382
|
|
|
379
383
|
ret = storage_node_ops.recreate_lvstore(snode)
|
|
380
|
-
if not ret:
|
|
384
|
+
if not ret and not force:
|
|
381
385
|
logger.error("Failed to activate cluster")
|
|
382
386
|
set_cluster_status(cl_id, ols_status)
|
|
383
387
|
return False
|
|
@@ -73,10 +73,10 @@ SIMPLY_BLOCK_CLI_NAME = get_from_env_var_file(
|
|
|
73
73
|
"SIMPLY_BLOCK_COMMAND_NAME", "sbcli")
|
|
74
74
|
TASK_EXEC_INTERVAL_SEC = 10
|
|
75
75
|
TASK_EXEC_RETRY_COUNT = 8
|
|
76
|
-
SIMPLY_BLOCK_SPDK_CORE_IMAGE = "simplyblock/spdk-core:v24.05
|
|
76
|
+
SIMPLY_BLOCK_SPDK_CORE_IMAGE = "simplyblock/spdk-core:v24.05-tag-latest"
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:
|
|
79
|
+
SIMPLY_BLOCK_SPDK_ULTRA_IMAGE = "simplyblock/spdk:main-latest"
|
|
80
80
|
|
|
81
81
|
GELF_PORT = 12202
|
|
82
82
|
|
|
@@ -88,7 +88,7 @@ EXTRA_LARGE_POOL_COUNT = 16000
|
|
|
88
88
|
# EXTRA_LARGE_POOL_COUNT = 0
|
|
89
89
|
EXTRA_HUGE_PAGE_MEMORY = 2147483648
|
|
90
90
|
#EXTRA_SYS_MEMORY = 2147483648
|
|
91
|
-
EXTRA_SYS_MEMORY = 0
|
|
91
|
+
EXTRA_SYS_MEMORY = 0.15
|
|
92
92
|
|
|
93
93
|
INSTANCE_STORAGE_DATA = {
|
|
94
94
|
'i4i.large': {'number_of_devices': 1, 'size_per_device_gb': 468},
|
|
@@ -128,4 +128,5 @@ LVOL_NVME_CONNECT_NR_IO_QUEUES=6
|
|
|
128
128
|
QPAIR_COUNT=32
|
|
129
129
|
NVME_TIMEOUT_US=20000000
|
|
130
130
|
|
|
131
|
-
NVMF_MAX_SUBSYSTEMS=50000
|
|
131
|
+
NVMF_MAX_SUBSYSTEMS=50000
|
|
132
|
+
HA_JM_COUNT=3
|
{sbcli_dev-10.4.0 → sbcli_dev-10.7.1}/simplyblock_core/controllers/caching_node_controller.py
RENAMED
|
@@ -176,7 +176,12 @@ def add_node(cluster_id, node_ip, iface_name, data_nics_list, spdk_cpu_mask, spd
|
|
|
176
176
|
logger.error("Pod is not running, exiting")
|
|
177
177
|
return False
|
|
178
178
|
|
|
179
|
-
time.sleep(
|
|
179
|
+
time.sleep(3)
|
|
180
|
+
|
|
181
|
+
snode.namespace = namespace
|
|
182
|
+
snode.spdk_cpu_mask = spdk_cpu_mask
|
|
183
|
+
snode.spdk_mem = spdk_mem
|
|
184
|
+
snode.spdk_image = spdk_image
|
|
180
185
|
|
|
181
186
|
# creating RPCClient instance
|
|
182
187
|
rpc_client = RPCClient(
|
|
@@ -216,50 +221,50 @@ def add_node(cluster_id, node_ip, iface_name, data_nics_list, spdk_cpu_mask, spd
|
|
|
216
221
|
|
|
217
222
|
cache_size = 0
|
|
218
223
|
cache_bdev = None
|
|
219
|
-
if supported_ssd_size < ssd_size:
|
|
220
|
-
logger.info(f"SSD size is bigger than the supported size, will use split bdev: {split_factor}")
|
|
221
|
-
ret = rpc_client.bdev_split(ssd_dev.nvme_bdev, split_factor)
|
|
222
|
-
cache_bdev = ret[0]
|
|
223
|
-
cache_size = int(ssd_dev.size/split_factor)
|
|
224
|
-
snode.cache_split_factor = split_factor
|
|
225
|
-
else:
|
|
226
|
-
snode.cache_split_factor = 0
|
|
227
|
-
cache_bdev = ssd_dev.nvme_bdev
|
|
228
|
-
cache_size = ssd_dev.size
|
|
229
|
-
|
|
230
224
|
# if supported_ssd_size < ssd_size:
|
|
231
|
-
# logger.info(f"SSD size is bigger than the supported size,
|
|
232
|
-
#
|
|
233
|
-
#
|
|
234
|
-
#
|
|
235
|
-
#
|
|
236
|
-
# logger.error(f"Failed to start nbd dev")
|
|
237
|
-
# return False
|
|
238
|
-
#
|
|
239
|
-
# jm_percent = int((supported_ssd_size/ssd_size) * 100)
|
|
240
|
-
# result, error = cnode_api.make_gpt_partitions(nbd_device, jm_percent)
|
|
241
|
-
# if error:
|
|
242
|
-
# logger.error(f"Failed to make partitions")
|
|
243
|
-
# logger.error(error)
|
|
244
|
-
# return False
|
|
245
|
-
# time.sleep(3)
|
|
246
|
-
# rpc_client.nbd_stop_disk(nbd_device)
|
|
247
|
-
# time.sleep(1)
|
|
248
|
-
# rpc_client.bdev_nvme_detach_controller(ssd_dev.nvme_controller)
|
|
249
|
-
# time.sleep(1)
|
|
250
|
-
# rpc_client.bdev_nvme_controller_attach(ssd_dev.nvme_controller, ssd_dev.pcie_address)
|
|
251
|
-
# time.sleep(1)
|
|
252
|
-
# rpc_client.bdev_examine(ssd_dev.nvme_bdev)
|
|
253
|
-
# time.sleep(1)
|
|
254
|
-
#
|
|
255
|
-
# cache_bdev = f"{ssd_dev.nvme_bdev}p1"
|
|
256
|
-
# cache_size = int(supported_ssd_size)
|
|
257
|
-
#
|
|
225
|
+
# logger.info(f"SSD size is bigger than the supported size, will use split bdev: {split_factor}")
|
|
226
|
+
# ret = rpc_client.bdev_split(ssd_dev.nvme_bdev, split_factor)
|
|
227
|
+
# cache_bdev = ret[0]
|
|
228
|
+
# cache_size = int(ssd_dev.size/split_factor)
|
|
229
|
+
# snode.cache_split_factor = split_factor
|
|
258
230
|
# else:
|
|
259
|
-
#
|
|
231
|
+
# snode.cache_split_factor = 0
|
|
260
232
|
# cache_bdev = ssd_dev.nvme_bdev
|
|
261
233
|
# cache_size = ssd_dev.size
|
|
262
234
|
|
|
235
|
+
if supported_ssd_size < ssd_size:
|
|
236
|
+
logger.info(f"SSD size is bigger than the supported size, creating partition")
|
|
237
|
+
|
|
238
|
+
nbd_device = rpc_client.nbd_start_disk(ssd_dev.nvme_bdev)
|
|
239
|
+
time.sleep(3)
|
|
240
|
+
if not nbd_device:
|
|
241
|
+
logger.error(f"Failed to start nbd dev")
|
|
242
|
+
return False
|
|
243
|
+
|
|
244
|
+
jm_percent = int((supported_ssd_size/ssd_size) * 100)
|
|
245
|
+
result, error = cnode_api.make_gpt_partitions(nbd_device, jm_percent)
|
|
246
|
+
if error:
|
|
247
|
+
logger.error(f"Failed to make partitions")
|
|
248
|
+
logger.error(error)
|
|
249
|
+
return False
|
|
250
|
+
time.sleep(3)
|
|
251
|
+
rpc_client.nbd_stop_disk(nbd_device)
|
|
252
|
+
time.sleep(1)
|
|
253
|
+
rpc_client.bdev_nvme_detach_controller(ssd_dev.nvme_controller)
|
|
254
|
+
time.sleep(1)
|
|
255
|
+
rpc_client.bdev_nvme_controller_attach(ssd_dev.nvme_controller, ssd_dev.pcie_address)
|
|
256
|
+
time.sleep(1)
|
|
257
|
+
rpc_client.bdev_examine(ssd_dev.nvme_bdev)
|
|
258
|
+
time.sleep(1)
|
|
259
|
+
|
|
260
|
+
cache_bdev = f"{ssd_dev.nvme_bdev}p1"
|
|
261
|
+
cache_size = int(supported_ssd_size)
|
|
262
|
+
|
|
263
|
+
else:
|
|
264
|
+
|
|
265
|
+
cache_bdev = ssd_dev.nvme_bdev
|
|
266
|
+
cache_size = ssd_dev.size
|
|
267
|
+
|
|
263
268
|
logger.info(f"Cache size: {utils.humanbytes(cache_size)}")
|
|
264
269
|
|
|
265
270
|
snode.cache_bdev = cache_bdev
|
|
@@ -297,7 +302,32 @@ def recreate(node_id):
|
|
|
297
302
|
return False
|
|
298
303
|
|
|
299
304
|
logger.info(f"Recreating caching node: {node_id}, status: {snode.status}")
|
|
300
|
-
|
|
305
|
+
cnode_api = CNodeClient(f"{snode.mgmt_ip}:5000")
|
|
306
|
+
|
|
307
|
+
if not cnode_api.spdk_process_is_up():
|
|
308
|
+
results, err = cnode_api.spdk_process_start(
|
|
309
|
+
snode.spdk_cpu_mask, snode.spdk_mem, snode.spdk_image, snode.mgmt_ip,
|
|
310
|
+
snode.rpc_port, snode.rpc_username, snode.rpc_password, snode.namespace)
|
|
311
|
+
if not results:
|
|
312
|
+
logger.error(f"Failed to start spdk: {err}")
|
|
313
|
+
return False
|
|
314
|
+
|
|
315
|
+
retries = 20
|
|
316
|
+
while retries > 0:
|
|
317
|
+
resp, _ = cnode_api.spdk_process_is_up()
|
|
318
|
+
if resp:
|
|
319
|
+
logger.info(f"Pod is up")
|
|
320
|
+
break
|
|
321
|
+
else:
|
|
322
|
+
logger.info("Pod is not running, waiting...")
|
|
323
|
+
time.sleep(3)
|
|
324
|
+
retries -= 1
|
|
325
|
+
|
|
326
|
+
if retries == 0:
|
|
327
|
+
logger.error("Pod is not running, exiting")
|
|
328
|
+
return False
|
|
329
|
+
|
|
330
|
+
time.sleep(5)
|
|
301
331
|
|
|
302
332
|
# creating RPCClient instance
|
|
303
333
|
rpc_client = RPCClient(
|
|
@@ -306,7 +336,7 @@ def recreate(node_id):
|
|
|
306
336
|
timeout=60*5, retry=5)
|
|
307
337
|
|
|
308
338
|
# get new node info after starting spdk
|
|
309
|
-
node_info, _ =
|
|
339
|
+
node_info, _ = cnode_api.info()
|
|
310
340
|
# adding devices
|
|
311
341
|
nvme_devs = addNvmeDevices(rpc_client, node_info['spdk_pcie_list'], snode)
|
|
312
342
|
if not nvme_devs:
|
|
@@ -337,7 +367,7 @@ def recreate(node_id):
|
|
|
337
367
|
|
|
338
368
|
if snode.lvols:
|
|
339
369
|
for lvol in snode.lvols:
|
|
340
|
-
ret = connect(snode.get_id(), lvol.lvol_id)
|
|
370
|
+
ret = connect(snode.get_id(), lvol.lvol_id, force=True)
|
|
341
371
|
if ret:
|
|
342
372
|
logger.info(f"connecting lvol {lvol.lvol_id} ... ok")
|
|
343
373
|
else:
|
|
@@ -351,7 +381,7 @@ def recreate(node_id):
|
|
|
351
381
|
return True
|
|
352
382
|
|
|
353
383
|
|
|
354
|
-
def connect(caching_node_id, lvol_id):
|
|
384
|
+
def connect(caching_node_id, lvol_id, force=False):
|
|
355
385
|
lvol = db_controller.get_lvol_by_id(lvol_id)
|
|
356
386
|
if not lvol:
|
|
357
387
|
logger.error(f"LVol not found: {lvol_id}")
|
|
@@ -383,7 +413,8 @@ def connect(caching_node_id, lvol_id):
|
|
|
383
413
|
for clvol in cnode.lvols:
|
|
384
414
|
if clvol.lvol_id == lvol_id:
|
|
385
415
|
logger.info(f"Already connected, dev path: {clvol.device_path}")
|
|
386
|
-
|
|
416
|
+
if not force:
|
|
417
|
+
return False
|
|
387
418
|
|
|
388
419
|
if cnode.cluster_id != pool.cluster_id:
|
|
389
420
|
logger.error("Caching node and LVol are in different clusters")
|
|
@@ -423,7 +454,8 @@ def connect(caching_node_id, lvol_id):
|
|
|
423
454
|
logger.debug(ret)
|
|
424
455
|
if not ret:
|
|
425
456
|
logger.error("Failed to create OCF bdev")
|
|
426
|
-
|
|
457
|
+
if not force:
|
|
458
|
+
return False
|
|
427
459
|
|
|
428
460
|
# logger.info("Creating local subsystem")
|
|
429
461
|
# create subsystem (local)
|
|
@@ -443,7 +475,8 @@ def connect(caching_node_id, lvol_id):
|
|
|
443
475
|
|
|
444
476
|
if not ret:
|
|
445
477
|
logger.error(f"Failed to add: {cach_bdev} to the subsystem: {subsystem_nqn}")
|
|
446
|
-
|
|
478
|
+
if not force:
|
|
479
|
+
return False
|
|
447
480
|
|
|
448
481
|
logger.info("Connecting to local subsystem")
|
|
449
482
|
# make nvme connect to nqn
|
|
@@ -451,7 +484,8 @@ def connect(caching_node_id, lvol_id):
|
|
|
451
484
|
ret, _ = cnode_client.connect_nvme('127.0.0.1', "4420", subsystem_nqn)
|
|
452
485
|
if not ret:
|
|
453
486
|
logger.error("Failed to connect to local subsystem")
|
|
454
|
-
|
|
487
|
+
if not force:
|
|
488
|
+
return False
|
|
455
489
|
|
|
456
490
|
if cnode.multipathing:
|
|
457
491
|
snode = db_controller.get_storage_node_by_id(lvol.node_id)
|
|
@@ -460,7 +494,7 @@ def connect(caching_node_id, lvol_id):
|
|
|
460
494
|
ret, _ = cnode_client.connect_nvme(ip, "4420", subsystem_nqn)
|
|
461
495
|
break
|
|
462
496
|
|
|
463
|
-
time.sleep(
|
|
497
|
+
time.sleep(3)
|
|
464
498
|
cnode_info, _ = cnode_client.info()
|
|
465
499
|
nvme_devs = cnode_info['nvme_devices']
|
|
466
500
|
dev_path = None
|
|
@@ -625,8 +659,8 @@ def deploy(ifname):
|
|
|
625
659
|
f"DOCKER_IP={dev_ip}"
|
|
626
660
|
]
|
|
627
661
|
)
|
|
628
|
-
logger.info("Pulling SPDK
|
|
629
|
-
node_docker.images.pull(constants.
|
|
662
|
+
logger.info(f"Pulling SPDK image {constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE}")
|
|
663
|
+
node_docker.images.pull(constants.SIMPLY_BLOCK_SPDK_CORE_IMAGE)
|
|
630
664
|
return f"{dev_ip}:5000"
|
|
631
665
|
|
|
632
666
|
|