sbcli-dev 4.0.65__zip → 4.0.67__zip
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.
Potentially problematic release.
This version of sbcli-dev might be problematic. Click here for more details.
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/PKG-INFO +1 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/env_var +1 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/sbcli_dev.egg-info/PKG-INFO +1 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_cli/cli.py +7 -8
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/cluster_ops.py +3 -6
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/constants.py +2 -2
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/device_controller.py +1 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/health_controller.py +11 -9
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/lvol_controller.py +2 -4
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/snapshot_controller.py +1 -2
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/distr_controller.py +2 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/cluster.py +0 -2
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/job_schedule.py +1 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/storage_node.py +1 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/rpc_client.py +8 -2
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_failed_migration.py +6 -5
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_migration.py +5 -5
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_new_dev_migration.py +5 -5
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/storage_node_ops.py +72 -43
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/snode_ops_k8s.py +10 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_cluster.py +1 -2
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_storage_node.py +4 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/templates/storage_deploy_spdk.yaml.j2 +9 -1
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/README.md +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/pyproject.toml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/sbcli_dev.egg-info/SOURCES.txt +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/sbcli_dev.egg-info/dependency_links.txt +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/sbcli_dev.egg-info/entry_points.txt +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/sbcli_dev.egg-info/requires.txt +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/sbcli_dev.egg-info/top_level.txt +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/setup.cfg +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/setup.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_cli/main.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/cnode_client.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/compute_node_ops.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/caching_node_controller.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/cluster_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/device_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/events_controller.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/lvol_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/mgmt_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/pool_controller.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/pool_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/snapshot_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/storage_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/tasks_controller.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/controllers/tasks_events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/kv_store.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/mgmt_node_ops.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/base_model.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/caching_node.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/compute_node.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/deployer.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/events.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/global_settings.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/iface.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/lvol_model.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/mgmt_node.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/nvme_device.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/pool.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/port_stat.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/snapshot.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/models/stats.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/pci_utils.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/alerting/alert_resources.yaml.j2 +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/alerting/alert_rules.yaml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/clean_local_storage_deploy.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/config_docker.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboard.yml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboards/cluster.json +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboards/devices.json +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboards/lvols.json +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboards/node-exporter.json +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboards/nodes.json +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/dashboards/pools.json +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/datasource.yml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/db_config_double.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/db_config_single.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/deploy_stack.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/docker-compose-swarm-monitoring.yml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/docker-compose-swarm.yml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/haproxy.cfg +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/install_deps.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/objstore.yml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/prometheus.yml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/run_ssh.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/set_db_config.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/scripts/stack_deploy_wait.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/cached_lvol_stat_collector.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/caching_node_monitor.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/cap_monitor.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/capacity_and_stats_collector.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/device_monitor.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/health_check_service.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/install_service.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/log_agg_service.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/lvol_monitor.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/lvol_stat_collector.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/main_distr_event_collector.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/mgmt_node_monitor.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/new_device_discovery.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/port_stat_collector.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/remove_service.sh +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/service_template.service +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/spdk_http_proxy_server.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/storage_node_monitor.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_node_add.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_restart.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/shell_utils.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/snode_client.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/utils.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/app.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/auth_middleware.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/__init__.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/caching_node_ops.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/caching_node_ops_k8s.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/node_api_basic.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/node_api_caching_docker.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/node_api_caching_ks.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/snode_ops.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_caching_node.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_deployer.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_device.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_lvol.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_mgmt_node.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_pool.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/blueprints/web_api_snapshot.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/caching_node_app.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/caching_node_app_k8s.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/node_utils.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/node_webapp.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/snode_app.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/snode_app_k8s.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/delete.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/deploy.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/deploy_cnode.yaml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/deploy_spdk.yaml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/is_up.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/list_deps.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/rpac.yaml +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/static/tst.py +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/templates/caching_deploy_spdk.yaml.j2 +0 -0
- {sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_web/utils.py +0 -0
|
@@ -57,6 +57,7 @@ class CLIWrapper:
|
|
|
57
57
|
sub_command.add_argument("--iobuf_large_bufsize", help='bdev_set_options param', dest='large_bufsize', type=int, default=0)
|
|
58
58
|
sub_command.add_argument("--enable-test-device", help='Enable creation of test device', action='store_true')
|
|
59
59
|
sub_command.add_argument("--disable-ha-jm", help='Disable HA JM for distrib creation', action='store_false', dest='enable_ha_jm', default=True)
|
|
60
|
+
sub_command.add_argument("--namespace", help='k8s namespace to deploy on',)
|
|
60
61
|
|
|
61
62
|
|
|
62
63
|
# delete storage node
|
|
@@ -293,7 +294,7 @@ class CLIWrapper:
|
|
|
293
294
|
sub_command.add_argument("--ha-type", help='LVol HA type (single, ha), default is cluster HA type',
|
|
294
295
|
dest='ha_type', choices=["single", "ha", "default"], default='single')
|
|
295
296
|
sub_command.add_argument("--enable-node-affinity", help='Enable node affinity for storage nodes', action='store_true')
|
|
296
|
-
|
|
297
|
+
|
|
297
298
|
# add cluster
|
|
298
299
|
sub_command = self.add_sub_command(subparser, 'add', 'Add new cluster')
|
|
299
300
|
sub_command.add_argument("--blk_size", help='The block size in bytes', type=int, choices=[512, 4096], default=512)
|
|
@@ -315,7 +316,6 @@ class CLIWrapper:
|
|
|
315
316
|
sub_command.add_argument("--ha-type", help='LVol HA type (single, ha), default is cluster HA type',
|
|
316
317
|
dest='ha_type', choices=["single", "ha", "default"], default='default')
|
|
317
318
|
sub_command.add_argument("--enable-node-affinity", help='Enable node affinity for storage nodes', action='store_true')
|
|
318
|
-
sub_command.add_argument("--qpair-count", help='tcp transport qpair count', type=int, dest='qpair_count', default=256)
|
|
319
319
|
|
|
320
320
|
# Activate cluster
|
|
321
321
|
sub_command = self.add_sub_command(subparser, 'activate', 'Create distribs and raid0 bdevs on all the storage node and move the cluster to active state')
|
|
@@ -694,7 +694,7 @@ class CLIWrapper:
|
|
|
694
694
|
if args.debug:
|
|
695
695
|
self.logger.setLevel(logging.DEBUG)
|
|
696
696
|
else:
|
|
697
|
-
self.logger.setLevel(
|
|
697
|
+
self.logger.setLevel(logging.INFO)
|
|
698
698
|
logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
|
|
699
699
|
|
|
700
700
|
args_dict = args.__dict__
|
|
@@ -740,6 +740,7 @@ class CLIWrapper:
|
|
|
740
740
|
enable_test_device = args.enable_test_device
|
|
741
741
|
enable_ha_jm = args.enable_ha_jm
|
|
742
742
|
number_of_distribs = args.number_of_distribs
|
|
743
|
+
namespace = args.namespace
|
|
743
744
|
|
|
744
745
|
out = storage_ops.add_node(
|
|
745
746
|
cluster_id=cluster_id,
|
|
@@ -758,7 +759,7 @@ class CLIWrapper:
|
|
|
758
759
|
jm_percent=jm_percent,
|
|
759
760
|
number_of_devices=number_of_devices,
|
|
760
761
|
enable_test_device=enable_test_device,
|
|
761
|
-
namespace=
|
|
762
|
+
namespace=namespace,
|
|
762
763
|
number_of_distribs=number_of_distribs,
|
|
763
764
|
enable_ha_jm=enable_ha_jm
|
|
764
765
|
)
|
|
@@ -1249,11 +1250,10 @@ class CLIWrapper:
|
|
|
1249
1250
|
distr_chunk_bs = args.distr_chunk_bs
|
|
1250
1251
|
ha_type = args.ha_type
|
|
1251
1252
|
enable_node_affinity = args.enable_node_affinity
|
|
1252
|
-
qpair_count = args.qpair_count
|
|
1253
1253
|
|
|
1254
1254
|
return cluster_ops.add_cluster(
|
|
1255
1255
|
blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn, prov_cap_crit,
|
|
1256
|
-
distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity
|
|
1256
|
+
distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity)
|
|
1257
1257
|
|
|
1258
1258
|
def cluster_create(self, args):
|
|
1259
1259
|
page_size_in_blocks = args.page_size
|
|
@@ -1274,13 +1274,12 @@ class CLIWrapper:
|
|
|
1274
1274
|
contact_point = args.contact_point
|
|
1275
1275
|
grafana_endpoint = args.grafana_endpoint
|
|
1276
1276
|
enable_node_affinity = args.enable_node_affinity
|
|
1277
|
-
qpair_count = args.qpair_count
|
|
1278
1277
|
|
|
1279
1278
|
return cluster_ops.create_cluster(
|
|
1280
1279
|
blk_size, page_size_in_blocks,
|
|
1281
1280
|
CLI_PASS, cap_warn, cap_crit, prov_cap_warn, prov_cap_crit,
|
|
1282
1281
|
ifname, log_del_interval, metrics_retention_period, contact_point, grafana_endpoint,
|
|
1283
|
-
distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity
|
|
1282
|
+
distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity)
|
|
1284
1283
|
|
|
1285
1284
|
def query_yes_no(self, question, default="yes"):
|
|
1286
1285
|
"""Ask a yes/no question via raw_input() and return their answer.
|
|
@@ -102,8 +102,7 @@ def _add_graylog_input(cluster_ip, password):
|
|
|
102
102
|
|
|
103
103
|
def create_cluster(blk_size, page_size_in_blocks, cli_pass,
|
|
104
104
|
cap_warn, cap_crit, prov_cap_warn, prov_cap_crit, ifname, log_del_interval, metrics_retention_period,
|
|
105
|
-
contact_point, grafana_endpoint, distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type,
|
|
106
|
-
enable_node_affinity, qpair_count):
|
|
105
|
+
contact_point, grafana_endpoint, distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity):
|
|
107
106
|
logger.info("Installing dependencies...")
|
|
108
107
|
ret = scripts.install_deps()
|
|
109
108
|
logger.info("Installing dependencies > Done")
|
|
@@ -170,8 +169,7 @@ def create_cluster(blk_size, page_size_in_blocks, cli_pass,
|
|
|
170
169
|
else:
|
|
171
170
|
c.grafana_endpoint = f"http://{DEV_IP}/grafana"
|
|
172
171
|
c.enable_node_affinity = enable_node_affinity
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
|
|
175
173
|
alerts_template_folder = os.path.join(TOP_DIR, "simplyblock_core/scripts/alerting/")
|
|
176
174
|
alert_resources_file = "alert_resources.yaml"
|
|
177
175
|
|
|
@@ -289,7 +287,7 @@ def deploy_spdk(node_docker, spdk_cpu_mask, spdk_mem):
|
|
|
289
287
|
|
|
290
288
|
|
|
291
289
|
def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn, prov_cap_crit,
|
|
292
|
-
distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity
|
|
290
|
+
distr_ndcs, distr_npcs, distr_bs, distr_chunk_bs, ha_type, enable_node_affinity):
|
|
293
291
|
db_controller = DBController()
|
|
294
292
|
clusters = db_controller.get_clusters()
|
|
295
293
|
if not clusters:
|
|
@@ -321,7 +319,6 @@ def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn
|
|
|
321
319
|
cluster.distr_chunk_bs = distr_chunk_bs
|
|
322
320
|
cluster.ha_type = ha_type
|
|
323
321
|
cluster.enable_node_affinity = enable_node_affinity
|
|
324
|
-
cluster.qpair_count = qpair_count or 256
|
|
325
322
|
if cap_warn and cap_warn > 0:
|
|
326
323
|
cluster.cap_warn = cap_warn
|
|
327
324
|
if cap_crit and cap_crit > 0:
|
|
@@ -6,8 +6,8 @@ KVD_DB_FILE_PATH = '/etc/foundationdb/fdb.cluster'
|
|
|
6
6
|
KVD_DB_TIMEOUT_MS = 10000
|
|
7
7
|
SPK_DIR = '/home/ec2-user/spdk'
|
|
8
8
|
RPC_HTTP_PROXY_PORT = 8080
|
|
9
|
-
LOG_LEVEL = logging.
|
|
10
|
-
LOG_WEB_DEBUG =
|
|
9
|
+
LOG_LEVEL = logging.DEBUG
|
|
10
|
+
LOG_WEB_DEBUG = True
|
|
11
11
|
|
|
12
12
|
INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
13
13
|
|
|
@@ -818,7 +818,7 @@ def restart_jm_device(device_id, force=False, format_alceml=False):
|
|
|
818
818
|
bdevs_names = [d['name'] for d in rpc_client.get_bdevs()]
|
|
819
819
|
jm_nvme_bdevs = []
|
|
820
820
|
for dev in snode.nvme_devices:
|
|
821
|
-
if dev.status
|
|
821
|
+
if dev.status not in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_NEW]:
|
|
822
822
|
continue
|
|
823
823
|
dev_part = f"{dev.nvme_bdev[:-2]}p1"
|
|
824
824
|
if dev_part in bdevs_names:
|
|
@@ -40,15 +40,15 @@ def check_cluster(cluster_id):
|
|
|
40
40
|
"Status": "ok" if ret else "failed"
|
|
41
41
|
})
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
for lvol in db_controller.get_lvols(cluster_id):
|
|
44
|
+
ret = check_lvol(lvol.get_id())
|
|
45
|
+
result &= ret
|
|
46
|
+
print("*" * 100)
|
|
47
|
+
data.append({
|
|
48
|
+
"Kind": "LVol",
|
|
49
|
+
"UUID": lvol.get_id(),
|
|
50
|
+
"Status": "ok" if ret else "failed"
|
|
51
|
+
})
|
|
52
52
|
print(utils.print_table(data))
|
|
53
53
|
return result
|
|
54
54
|
|
|
@@ -163,6 +163,8 @@ def check_node(node_id, with_devices=True):
|
|
|
163
163
|
if dev.status in [NVMeDevice.STATUS_ONLINE, NVMeDevice.STATUS_UNAVAILABLE]:
|
|
164
164
|
ret = check_device(dev.get_id())
|
|
165
165
|
node_devices_check &= ret
|
|
166
|
+
else:
|
|
167
|
+
logger.info(f"Device skipped: {dev.get_id()} status: {dev.status}")
|
|
166
168
|
print("*" * 100)
|
|
167
169
|
|
|
168
170
|
logger.info(f"Node remote device: {len(snode.remote_devices)}")
|
|
@@ -635,7 +635,6 @@ def add_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
|
|
|
635
635
|
ret = rpc_client.subsystem_create(lvol.nqn, 'sbcli-cn', lvol.uuid)
|
|
636
636
|
logger.debug(ret)
|
|
637
637
|
|
|
638
|
-
cluster = db_controller.get_cluster_by_id(snode.cluster_id)
|
|
639
638
|
# add listeners
|
|
640
639
|
logger.info("adding listeners")
|
|
641
640
|
for iface in snode.data_nics:
|
|
@@ -648,7 +647,7 @@ def add_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
|
|
|
648
647
|
if ty['trtype'] == tr_type:
|
|
649
648
|
found = True
|
|
650
649
|
if found is False:
|
|
651
|
-
ret = rpc_client.transport_create(tr_type
|
|
650
|
+
ret = rpc_client.transport_create(tr_type)
|
|
652
651
|
logger.info("adding listener for %s on IP %s" % (lvol.nqn, iface.ip4_address))
|
|
653
652
|
ret = rpc_client.listeners_create(lvol.nqn, tr_type, iface.ip4_address, "4420")
|
|
654
653
|
is_optimized = False
|
|
@@ -696,7 +695,6 @@ def recreate_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
|
|
|
696
695
|
ret = rpc_client.subsystem_create(lvol.nqn, 'sbcli-cn', lvol.uuid)
|
|
697
696
|
logger.debug(ret)
|
|
698
697
|
|
|
699
|
-
cluster = db_controller.get_cluster_by_id(snode.cluster_id)
|
|
700
698
|
# add listeners
|
|
701
699
|
logger.info("adding listeners")
|
|
702
700
|
for iface in snode.data_nics:
|
|
@@ -709,7 +707,7 @@ def recreate_lvol_on_node(lvol, snode, ha_comm_addrs=None, ha_inode_self=None):
|
|
|
709
707
|
if ty['trtype'] == tr_type:
|
|
710
708
|
found = True
|
|
711
709
|
if found is False:
|
|
712
|
-
ret = rpc_client.transport_create(tr_type
|
|
710
|
+
ret = rpc_client.transport_create(tr_type)
|
|
713
711
|
logger.info("adding listener for %s on IP %s" % (lvol.nqn, iface.ip4_address))
|
|
714
712
|
ret = rpc_client.listeners_create(lvol.nqn, tr_type, iface.ip4_address, "4420")
|
|
715
713
|
is_optimized = False
|
|
@@ -307,13 +307,12 @@ def clone(snapshot_id, clone_name, new_size=0):
|
|
|
307
307
|
logger.info("creating subsystem %s", subsystem_nqn)
|
|
308
308
|
ret = rpc_client.subsystem_create(subsystem_nqn, 'sbcli-cn', lvol.uuid)
|
|
309
309
|
|
|
310
|
-
cluster = db_controller.get_cluster_by_id(snode.cluster_id)
|
|
311
310
|
# add listeners
|
|
312
311
|
logger.info("adding listeners")
|
|
313
312
|
for iface in snode.data_nics:
|
|
314
313
|
if iface.ip4_address:
|
|
315
314
|
tr_type = iface.get_transport_type()
|
|
316
|
-
ret = rpc_client.transport_create(tr_type
|
|
315
|
+
ret = rpc_client.transport_create(tr_type)
|
|
317
316
|
logger.info("adding listener for %s on IP %s" % (subsystem_nqn, iface.ip4_address))
|
|
318
317
|
ret = rpc_client.listeners_create(subsystem_nqn, tr_type, iface.ip4_address, "4420")
|
|
319
318
|
|
|
@@ -35,6 +35,8 @@ def send_node_status_event(node, node_status, target_node=None):
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
def send_dev_status_event(device, dev_status, target_node=None):
|
|
38
|
+
if dev_status == NVMeDevice.STATUS_NEW:
|
|
39
|
+
return
|
|
38
40
|
db_controller = DBController()
|
|
39
41
|
storage_ID = device.cluster_device_order
|
|
40
42
|
node_status_event = {
|
|
@@ -50,8 +50,6 @@ class Cluster(BaseModel):
|
|
|
50
50
|
"prov_cap_warn": {"type": int, "default": 180},
|
|
51
51
|
"prov_cap_crit": {"type": int, "default": 190},
|
|
52
52
|
|
|
53
|
-
"qpair_count": {"type": int, "default": 256},
|
|
54
|
-
|
|
55
53
|
"secret": {"type": str, "default": ""},
|
|
56
54
|
"status": {"type": str, "default": ""},
|
|
57
55
|
"updated_at": {"type": str, "default": ""},
|
|
@@ -79,6 +79,7 @@ class StorageNode(BaseModel):
|
|
|
79
79
|
"lvstore": {"type": str, 'default': ""},
|
|
80
80
|
"raid": {"type": str, 'default': ""},
|
|
81
81
|
"lvstore_stack": {"type": List[dict], 'default': []},
|
|
82
|
+
"jm_vuid": {"type": int, "default": 0},
|
|
82
83
|
|
|
83
84
|
# spdk params
|
|
84
85
|
"spdk_cpu_mask": {"type": str, "default": ""},
|
|
@@ -119,7 +119,7 @@ class RPCClient:
|
|
|
119
119
|
params = {"trtype": trtype}
|
|
120
120
|
return self._request("nvmf_get_transports", params)
|
|
121
121
|
|
|
122
|
-
def transport_create(self, trtype
|
|
122
|
+
def transport_create(self, trtype):
|
|
123
123
|
"""
|
|
124
124
|
[{'trtype': 'TCP', 'max_queue_depth': 128,
|
|
125
125
|
'max_io_qpairs_per_ctrlr': 127, 'in_capsule_data_size': 4096,
|
|
@@ -134,7 +134,7 @@ class RPCClient:
|
|
|
134
134
|
"""
|
|
135
135
|
params = {
|
|
136
136
|
"trtype": trtype,
|
|
137
|
-
"max_io_qpairs_per_ctrlr":
|
|
137
|
+
"max_io_qpairs_per_ctrlr": 256,
|
|
138
138
|
"max_queue_depth": 512,
|
|
139
139
|
"abort_timeout_sec": 5,
|
|
140
140
|
"ack_timeout": 512,
|
|
@@ -837,3 +837,9 @@ class RPCClient:
|
|
|
837
837
|
"file": file,
|
|
838
838
|
}
|
|
839
839
|
return self._request("bdev_lvs_dump", params)
|
|
840
|
+
|
|
841
|
+
def jc_explicit_synchronization(self, jm_vuid):
|
|
842
|
+
params = {
|
|
843
|
+
"jm_vuid": jm_vuid
|
|
844
|
+
}
|
|
845
|
+
return self._request("jc_explicit_synchronization", params)
|
{sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_failed_migration.py
RENAMED
|
@@ -32,14 +32,14 @@ def task_runner(task):
|
|
|
32
32
|
task.write_to_db(db_controller.kv_store)
|
|
33
33
|
return True
|
|
34
34
|
|
|
35
|
-
if task.status
|
|
35
|
+
if task.status in [JobSchedule.STATUS_NEW ,JobSchedule.STATUS_SUSPENDED]:
|
|
36
36
|
task.status = JobSchedule.STATUS_RUNNING
|
|
37
37
|
task.write_to_db(db_controller.kv_store)
|
|
38
38
|
tasks_events.task_updated(task)
|
|
39
39
|
|
|
40
40
|
if snode.status != StorageNode.STATUS_ONLINE:
|
|
41
41
|
task.function_result = "node is not online, retrying"
|
|
42
|
-
task.status = JobSchedule.
|
|
42
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
43
43
|
task.retry += 1
|
|
44
44
|
task.write_to_db(db_controller.kv_store)
|
|
45
45
|
return False
|
|
@@ -62,6 +62,7 @@ def task_runner(task):
|
|
|
62
62
|
logger.error(f"Failed to start device migration task, storage_ID: {device.cluster_device_order}")
|
|
63
63
|
task.function_result = "Failed to start device migration task"
|
|
64
64
|
task.retry += 1
|
|
65
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
65
66
|
task.write_to_db(db_controller.kv_store)
|
|
66
67
|
return False
|
|
67
68
|
|
|
@@ -83,7 +84,7 @@ def task_runner(task):
|
|
|
83
84
|
task.status = JobSchedule.STATUS_DONE
|
|
84
85
|
else:
|
|
85
86
|
task.function_result = "Failed to complete migration, retrying"
|
|
86
|
-
task.status = JobSchedule.
|
|
87
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
87
88
|
task.retry += 1
|
|
88
89
|
del task.function_params["migration"]
|
|
89
90
|
task.write_to_db(db_controller.kv_store)
|
|
@@ -91,7 +92,7 @@ def task_runner(task):
|
|
|
91
92
|
|
|
92
93
|
elif migration_status == "failed":
|
|
93
94
|
task.function_result = "Failed to complete migration, retrying"
|
|
94
|
-
task.status = JobSchedule.
|
|
95
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
95
96
|
task.retry += 1
|
|
96
97
|
del task.function_params["migration"]
|
|
97
98
|
task.write_to_db(db_controller.kv_store)
|
|
@@ -131,7 +132,7 @@ while True:
|
|
|
131
132
|
for task in tasks:
|
|
132
133
|
delay_seconds = 5
|
|
133
134
|
if task.function_name == JobSchedule.FN_FAILED_DEV_MIG:
|
|
134
|
-
if task.status
|
|
135
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
135
136
|
active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
|
|
136
137
|
if active_task:
|
|
137
138
|
logger.info("task found on same node, retry")
|
|
@@ -29,7 +29,7 @@ def task_runner(task):
|
|
|
29
29
|
task.write_to_db(db_controller.kv_store)
|
|
30
30
|
return True
|
|
31
31
|
|
|
32
|
-
if task.status
|
|
32
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
33
33
|
task.status = JobSchedule.STATUS_RUNNING
|
|
34
34
|
task.write_to_db(db_controller.kv_store)
|
|
35
35
|
tasks_events.task_updated(task)
|
|
@@ -37,7 +37,7 @@ def task_runner(task):
|
|
|
37
37
|
|
|
38
38
|
if snode.status != StorageNode.STATUS_ONLINE:
|
|
39
39
|
task.function_result = "node is not online, retrying"
|
|
40
|
-
task.status = JobSchedule.
|
|
40
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
41
41
|
task.retry += 1
|
|
42
42
|
task.write_to_db(db_controller.kv_store)
|
|
43
43
|
return False
|
|
@@ -56,7 +56,7 @@ def task_runner(task):
|
|
|
56
56
|
|
|
57
57
|
if not all_devs_online:
|
|
58
58
|
task.function_result = "Some devs are offline, retrying"
|
|
59
|
-
task.status = JobSchedule.
|
|
59
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
60
60
|
task.retry += 1
|
|
61
61
|
task.write_to_db(db_controller.kv_store)
|
|
62
62
|
return False
|
|
@@ -90,7 +90,7 @@ def task_runner(task):
|
|
|
90
90
|
if st['error'] == 1:
|
|
91
91
|
task.function_result = "mig completed with errors, retrying"
|
|
92
92
|
task.retry += 1
|
|
93
|
-
task.status = JobSchedule.
|
|
93
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
94
94
|
del task.function_params['migration']
|
|
95
95
|
else:
|
|
96
96
|
task.status = JobSchedule.STATUS_DONE
|
|
@@ -122,7 +122,7 @@ while True:
|
|
|
122
122
|
for task in tasks:
|
|
123
123
|
delay_seconds = 5
|
|
124
124
|
if task.function_name == JobSchedule.FN_DEV_MIG:
|
|
125
|
-
if task.status
|
|
125
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
126
126
|
active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
|
|
127
127
|
if active_task:
|
|
128
128
|
logger.info("task found on same node, retry")
|
{sbcli_dev-4.0.65 → sbcli_dev-4.0.67}/simplyblock_core/services/tasks_runner_new_dev_migration.py
RENAMED
|
@@ -32,7 +32,7 @@ def task_runner(task):
|
|
|
32
32
|
task.write_to_db(db_controller.kv_store)
|
|
33
33
|
return True
|
|
34
34
|
|
|
35
|
-
if task.status
|
|
35
|
+
if task.status in [JobSchedule.STATUS_NEW ,JobSchedule.STATUS_SUSPENDED]:
|
|
36
36
|
task.status = JobSchedule.STATUS_RUNNING
|
|
37
37
|
task.write_to_db(db_controller.kv_store)
|
|
38
38
|
tasks_events.task_updated(task)
|
|
@@ -40,7 +40,7 @@ def task_runner(task):
|
|
|
40
40
|
if snode.status != StorageNode.STATUS_ONLINE:
|
|
41
41
|
task.function_result = "node is not online, retrying"
|
|
42
42
|
task.retry += 1
|
|
43
|
-
task.status = JobSchedule.
|
|
43
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
44
44
|
task.write_to_db(db_controller.kv_store)
|
|
45
45
|
return False
|
|
46
46
|
|
|
@@ -56,7 +56,7 @@ def task_runner(task):
|
|
|
56
56
|
if not all_devs_online:
|
|
57
57
|
task.function_result = "Some devs are offline, retrying"
|
|
58
58
|
task.retry += 1
|
|
59
|
-
task.status = JobSchedule.
|
|
59
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
60
60
|
task.write_to_db(db_controller.kv_store)
|
|
61
61
|
return False
|
|
62
62
|
|
|
@@ -94,7 +94,7 @@ def task_runner(task):
|
|
|
94
94
|
if res_data['error'] == 1:
|
|
95
95
|
task.function_result = "mig completed with errors, retrying"
|
|
96
96
|
task.retry += 1
|
|
97
|
-
task.status = JobSchedule.
|
|
97
|
+
task.status = JobSchedule.STATUS_SUSPENDED
|
|
98
98
|
del task.function_params['migration']
|
|
99
99
|
else:
|
|
100
100
|
task.function_result = "Done"
|
|
@@ -143,7 +143,7 @@ while True:
|
|
|
143
143
|
for task in tasks:
|
|
144
144
|
delay_seconds = 5
|
|
145
145
|
if task.function_name == JobSchedule.FN_NEW_DEV_MIG:
|
|
146
|
-
if task.status
|
|
146
|
+
if task.status in [JobSchedule.STATUS_NEW, JobSchedule.STATUS_SUSPENDED]:
|
|
147
147
|
active_task = tasks_controller.get_active_node_mig_task(task.cluster_id, task.node_id)
|
|
148
148
|
if active_task:
|
|
149
149
|
logger.info("task found on same node, retry")
|