Skip to content

Commit 86a5927

Browse files
gbregmanadk3798
authored andcommitted
python-common/ceph/deployment: add nvmeof configuration fields
Fixes: https://tracker.ceph.com/issues/64821 Signed-off-by: Gil Bregman <[email protected]>
1 parent 0c72fcc commit 86a5927

File tree

1 file changed

+87
-9
lines changed

1 file changed

+87
-9
lines changed

src/python-common/ceph/deployment/service_spec.py

Lines changed: 87 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,21 +1267,41 @@ def __init__(self,
12671267
port: Optional[int] = None,
12681268
pool: Optional[str] = None,
12691269
enable_auth: bool = False,
1270-
min_controller_id: Optional[str] = '1',
1271-
max_controller_id: Optional[str] = '65519',
1270+
state_update_notify: Optional[bool] = True,
1271+
state_update_interval_sec: Optional[int] = 5,
12721272
enable_spdk_discovery_controller: Optional[bool] = False,
1273+
omap_file_lock_duration: Optional[int] = 60,
1274+
omap_file_lock_retries: Optional[int] = 15,
1275+
omap_file_lock_retry_sleep_interval: Optional[int] = 5,
1276+
omap_file_update_reloads: Optional[int] = 10,
1277+
enable_prometheus_exporter: Optional[bool] = True,
1278+
bdevs_per_cluster: Optional[int] = 32,
1279+
verify_nqns: Optional[bool] = True,
12731280
server_key: Optional[str] = None,
12741281
server_cert: Optional[str] = None,
12751282
client_key: Optional[str] = None,
12761283
client_cert: Optional[str] = None,
12771284
spdk_path: Optional[str] = None,
12781285
tgt_path: Optional[str] = None,
1279-
timeout: Optional[int] = 60,
1286+
spdk_timeout: Optional[float] = 60.0,
1287+
spdk_log_level: Optional[str] = 'WARNING',
1288+
rpc_socket_dir: Optional[str] = '/var/tmp/',
1289+
rpc_socket_name: Optional[str] = 'spdk.sock',
12801290
conn_retries: Optional[int] = 10,
12811291
transports: Optional[str] = 'tcp',
12821292
transport_tcp_options: Optional[Dict[str, int]] =
12831293
{"in_capsule_data_size": 8192, "max_io_qpairs_per_ctrlr": 7},
12841294
tgt_cmd_extra_args: Optional[str] = None,
1295+
discovery_port: Optional[int] = None,
1296+
log_level: Optional[str] = 'INFO',
1297+
log_files_enabled: Optional[bool] = True,
1298+
log_files_rotation_enabled: Optional[bool] = True,
1299+
verbose_log_messages: Optional[bool] = True,
1300+
max_log_file_size_in_mb: Optional[int] = 10,
1301+
max_log_files_count: Optional[int] = 20,
1302+
max_log_directory_backups: Optional[int] = 10,
1303+
log_directory: Optional[str] = '/var/log/ceph/',
1304+
monitor_timeout: Optional[float] = 1.0,
12851305
placement: Optional[PlacementSpec] = None,
12861306
unmanaged: bool = False,
12871307
preview_only: bool = False,
@@ -1310,12 +1330,26 @@ def __init__(self,
13101330
self.group = group
13111331
#: ``enable_auth`` enables user authentication on nvmeof gateway
13121332
self.enable_auth = enable_auth
1313-
#: ``min_controller_id`` minimum controller id used by SPDK, essential for multipath
1314-
self.min_controller_id = min_controller_id
1315-
#: ``max_controller_id`` maximum controller id used by SPDK, essential for multipath
1316-
self.max_controller_id = max_controller_id
1333+
#: ``state_update_notify`` enables automatic update from OMAP in nvmeof gateway
1334+
self.state_update_notify = state_update_notify
1335+
#: ``state_update_interval_sec`` number of seconds to check for updates in OMAP
1336+
self.state_update_interval_sec = state_update_interval_sec
13171337
#: ``enable_spdk_discovery_controller`` SPDK or ceph-nvmeof discovery service
13181338
self.enable_spdk_discovery_controller = enable_spdk_discovery_controller
1339+
#: ``enable_prometheus_exporter`` enables Prometheus exporter
1340+
self.enable_prometheus_exporter = enable_prometheus_exporter
1341+
#: ``verify_nqns`` enables verification of subsystem and host NQNs for validity
1342+
self.verify_nqns = verify_nqns
1343+
#: ``omap_file_lock_duration`` number of seconds before automatically unlock OMAP file lock
1344+
self.omap_file_lock_duration = omap_file_lock_duration
1345+
#: ``omap_file_lock_retries`` number of retries to lock OMAP file before giving up
1346+
self.omap_file_lock_retries = omap_file_lock_retries
1347+
#: ``omap_file_lock_retry_sleep_interval`` seconds to wait before retrying to lock OMAP
1348+
self.omap_file_lock_retry_sleep_interval = omap_file_lock_retry_sleep_interval
1349+
#: ``omap_file_update_reloads`` number of attempt to reload OMAP when it differs from local
1350+
self.omap_file_update_reloads = omap_file_update_reloads
1351+
#: ``bdevs_per_cluster`` number of bdevs per cluster
1352+
self.bdevs_per_cluster = bdevs_per_cluster
13191353
#: ``server_key`` gateway server key
13201354
self.server_key = server_key or './server.key'
13211355
#: ``server_cert`` gateway server certificate
@@ -1328,8 +1362,14 @@ def __init__(self,
13281362
self.spdk_path = spdk_path or '/usr/local/bin/nvmf_tgt'
13291363
#: ``tgt_path`` nvmeof target path
13301364
self.tgt_path = tgt_path or '/usr/local/bin/nvmf_tgt'
1331-
#: ``timeout`` ceph connectivity timeout
1332-
self.timeout = timeout
1365+
#: ``spdk_timeout`` SPDK connectivity timeout
1366+
self.spdk_timeout = spdk_timeout
1367+
#: ``spdk_log_level`` the SPDK log level
1368+
self.spdk_log_level = spdk_log_level or 'WARNING'
1369+
#: ``rpc_socket_dir`` the SPDK socket file directory
1370+
self.rpc_socket_dir = rpc_socket_dir or '/var/tmp/'
1371+
#: ``rpc_socket_name`` the SPDK socket file name
1372+
self.rpc_socket_name = rpc_socket_name or 'spdk.sock'
13331373
#: ``conn_retries`` ceph connection retries number
13341374
self.conn_retries = conn_retries
13351375
#: ``transports`` tcp
@@ -1338,6 +1378,26 @@ def __init__(self,
13381378
self.transport_tcp_options: Optional[Dict[str, int]] = transport_tcp_options
13391379
#: ``tgt_cmd_extra_args`` extra arguments for the nvmf_tgt process
13401380
self.tgt_cmd_extra_args = tgt_cmd_extra_args
1381+
#: ``discovery_port`` port of the discovery service
1382+
self.discovery_port = discovery_port or 8009
1383+
#: ``log_level`` the nvmeof gateway log level
1384+
self.log_level = log_level or 'INFO'
1385+
#: ``log_files_enabled`` enables the usage of files to keep the nameof gateway log
1386+
self.log_files_enabled = log_files_enabled
1387+
#: ``log_files_rotation_enabled`` enables rotation of log files when pass the size limit
1388+
self.log_files_rotation_enabled = log_files_rotation_enabled
1389+
#: ``verbose_log_messages`` add more details to the nvmeof gateway log message
1390+
self.verbose_log_messages = verbose_log_messages
1391+
#: ``max_log_file_size_in_mb`` max size in MB before starting a new log file
1392+
self.max_log_file_size_in_mb = max_log_file_size_in_mb
1393+
#: ``max_log_files_count`` max log files to keep before overriding them
1394+
self.max_log_files_count = max_log_files_count
1395+
#: ``max_log_directory_backups`` max directories for old gateways with same name to keep
1396+
self.max_log_directory_backups = max_log_directory_backups
1397+
#: ``log_directory`` directory for keeping nameof gateway log files
1398+
self.log_directory = log_directory or '/var/log/ceph/'
1399+
#: ``monitor_timeout`` monitor connectivity timeout
1400+
self.monitor_timeout = monitor_timeout
13411401

13421402
def get_port_start(self) -> List[int]:
13431403
return [5500, 4420, 8009]
@@ -1357,6 +1417,24 @@ def validate(self) -> None:
13571417
if self.transports not in ['tcp']:
13581418
raise SpecValidationError('Invalid transport. Valid values are tcp')
13591419

1420+
if self.log_level:
1421+
if self.log_level not in ['debug', 'DEBUG',
1422+
'info', 'INFO',
1423+
'warning', 'WARNING',
1424+
'error', 'ERROR',
1425+
'critical', 'CRITICAL']:
1426+
raise SpecValidationError(
1427+
'Invalid log level. Valid values are: debug, info, warning, error, critial')
1428+
1429+
if self.spdk_log_level:
1430+
if self.spdk_log_level not in ['debug', 'DEBUG',
1431+
'info', 'INFO',
1432+
'warning', 'WARNING',
1433+
'error', 'ERROR',
1434+
'notice', 'NOTICE']:
1435+
raise SpecValidationError(
1436+
'Invalid SPDK log level. Valid values are: DEBUG, INFO, WARNING, ERROR, NOTICE')
1437+
13601438

13611439
yaml.add_representer(NvmeofServiceSpec, ServiceSpec.yaml_representer)
13621440

0 commit comments

Comments
 (0)