Skip to content

Commit 4ce8b52

Browse files
author
Tomer Haskalovitch
committed
mgr/dashboard: fix nvmeof mtls
Signed-off-by: Tomer Haskalovitch <[email protected]>
1 parent fba50e6 commit 4ce8b52

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/pybind/mgr/dashboard/services/nvmeof_client.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
NamedTuple, Optional, Type, get_args, get_origin
77

88
from ..exceptions import DashboardException
9-
from .nvmeof_conf import NvmeofGatewaysConfig
9+
from .nvmeof_conf import NvmeofGatewaysConfig, is_mtls_enabled
1010

1111
logger = logging.getLogger("nvmeof_client")
1212

@@ -63,16 +63,14 @@ def __init__(self, gw_group: Optional[str] = None, traddr: Optional[str] = None)
6363
if matched_gateway:
6464
self.gateway_addr = matched_gateway.get('service_url')
6565
logger.debug("Gateway address set to: %s", self.gateway_addr)
66-
67-
root_ca_cert = NvmeofGatewaysConfig.get_root_ca_cert(service_name)
68-
if root_ca_cert:
66+
enable_auth = is_mtls_enabled(service_name)
67+
if enable_auth:
6968
client_key = NvmeofGatewaysConfig.get_client_key(service_name)
7069
client_cert = NvmeofGatewaysConfig.get_client_cert(service_name)
71-
72-
if root_ca_cert and client_key and client_cert:
70+
server_cert = NvmeofGatewaysConfig.get_server_cert(service_name)
7371
logger.info('Securely connecting to: %s', self.gateway_addr)
7472
credentials = grpc.ssl_channel_credentials(
75-
root_certificates=root_ca_cert,
73+
root_certificates=server_cert,
7674
private_key=client_key,
7775
certificate_chain=client_cert,
7876
)

src/pybind/mgr/dashboard/services/nvmeof_conf.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ def get_client_key(cls, service_name: str):
132132
@classmethod
133133
def get_root_ca_cert(cls, service_name: str):
134134
root_ca_cert = cls.from_cert_store('nvmeof_root_ca_cert', service_name)
135-
# If root_ca_cert is not set, use server_cert as root_ca_cert
136-
return root_ca_cert.encode() if root_ca_cert else cls.get_server_cert(service_name)
135+
return root_ca_cert.encode() if root_ca_cert else None
137136

138137
@classmethod
139138
def get_server_cert(cls, service_name: str):
@@ -209,3 +208,11 @@ def _get_default_service(gateways):
209208
service_name = gateway_keys[0]
210209
return service_name, gateways[service_name][0]['service_url']
211210
return None
211+
212+
213+
def is_mtls_enabled(service_name: str):
214+
try:
215+
orch = OrchClient.instance()
216+
return orch.services.get(service_name)[0].spec.enable_auth
217+
except OrchestratorError:
218+
return False

0 commit comments

Comments
 (0)