diff --git a/src/pybind/mgr/cephadm/services/nvmeof.py b/src/pybind/mgr/cephadm/services/nvmeof.py index b91427dcace0f..2ceb6208fce47 100644 --- a/src/pybind/mgr/cephadm/services/nvmeof.py +++ b/src/pybind/mgr/cephadm/services/nvmeof.py @@ -47,10 +47,17 @@ def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonD transport_tcp_options = json.dumps(spec.transport_tcp_options) if spec.transport_tcp_options else None name = '{}.{}'.format(utils.name_to_config_section('nvmeof'), nvmeof_gw_id) rados_id = name[len('client.'):] if name.startswith('client.') else name + addr = host_ip + discovery_addr = host_ip + if spec.addr and spec.addr != "0.0.0.0": + addr = spec.addr + if spec.discovery_addr and spec.discovery_addr != "0.0.0.0": + discovery_addr = spec.discovery_addr context = { 'spec': spec, 'name': name, - 'addr': host_ip, + 'addr': addr, + 'discovery_addr': discovery_addr, 'port': spec.port, 'spdk_log_level': 'WARNING', 'rpc_socket_dir': '/var/tmp/', diff --git a/src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2 b/src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2 index 644ca586ba93f..dbe29004771ad 100644 --- a/src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2 +++ b/src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2 @@ -32,7 +32,7 @@ max_log_directory_backups = {{ spec.max_log_directory_backups }} log_directory = {{ spec.log_directory }} [discovery] -addr = {{ addr }} +addr = {{ discovery_addr }} port = {{ spec.discovery_port }} [ceph] diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 0efd10545c6be..75b1ac75573a2 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -1315,6 +1315,7 @@ def __init__(self, service_id: Optional[str] = None, name: Optional[str] = None, group: Optional[str] = None, + addr: Optional[str] = None, port: Optional[int] = None, pool: Optional[str] = None, enable_auth: bool = False, @@ -1347,6 +1348,7 @@ def __init__(self, transport_tcp_options: Optional[Dict[str, int]] = {"in_capsule_data_size": 8192, "max_io_qpairs_per_ctrlr": 7}, tgt_cmd_extra_args: Optional[str] = None, + discovery_addr: Optional[str] = None, discovery_port: Optional[int] = None, log_level: Optional[str] = 'INFO', log_files_enabled: Optional[bool] = True, @@ -1378,6 +1380,8 @@ def __init__(self, #: RADOS pool where ceph-nvmeof config data is stored. self.pool = pool + #: ``addr`` address of the nvmeof gateway + self.addr = addr or "0.0.0.0" #: ``port`` port of the nvmeof gateway self.port = port or 5500 #: ``name`` name of the nvmeof gateway @@ -1442,6 +1446,8 @@ def __init__(self, self.transport_tcp_options: Optional[Dict[str, int]] = transport_tcp_options #: ``tgt_cmd_extra_args`` extra arguments for the nvmf_tgt process self.tgt_cmd_extra_args = tgt_cmd_extra_args + #: ``discovery_addr`` address of the discovery service + self.discovery_addr = discovery_addr or "0.0.0.0" #: ``discovery_port`` port of the discovery service self.discovery_port = discovery_port or 8009 #: ``log_level`` the nvmeof gateway log level