@@ -333,15 +333,44 @@ def get_certificates(self,
333333 if not self .requires_certificates or not svc_spec .ssl :
334334 return EMPTY_TLS_KEYPAIR
335335
336+ return self .get_certificates_generic (
337+ svc_spec = svc_spec ,
338+ daemon_spec = daemon_spec ,
339+ cert_attr = 'ssl_cert' ,
340+ key_attr = 'ssl_key' ,
341+ cert_source_attr = 'certificate_source' ,
342+ cert_name = self .cert_name ,
343+ key_name = self .key_name ,
344+ ips = ips ,
345+ fqdns = fqdns ,
346+ custom_sans = custom_sans
347+ )
348+
349+ def get_certificates_generic (
350+ self ,
351+ svc_spec : ServiceSpec ,
352+ daemon_spec : CephadmDaemonDeploySpec ,
353+ cert_attr : str ,
354+ key_attr : str ,
355+ cert_source_attr : str ,
356+ cert_name : str ,
357+ key_name : str ,
358+ custom_sans : Optional [List [str ]] = None ,
359+ ips : Optional [List [str ]] = None ,
360+ fqdns : Optional [List [str ]] = None
361+ ) -> CertKeyPair :
362+
336363 ips = ips or [self .mgr .inventory .get_addr (daemon_spec .host )]
337364 fqdns = fqdns or [self .mgr .get_fqdn (daemon_spec .host )]
365+ custom_sans = custom_sans or []
338366
339- cert_source = svc_spec . certificate_source
367+ cert_source = getattr ( svc_spec , cert_source_attr , None )
340368 logger .debug (f'Getting certificate for { svc_spec .service_name ()} using source: { cert_source } ' )
369+
341370 if cert_source == CertificateSource .INLINE .value :
342- return self ._get_certificates_from_spec (svc_spec , daemon_spec )
371+ return self ._get_certificates_from_spec (svc_spec , daemon_spec , cert_attr , key_attr , cert_name , key_name )
343372 elif cert_source == CertificateSource .REFERENCE .value :
344- return self ._get_certificates_from_certmgr_store (svc_spec , fqdns )
373+ return self ._get_certificates_from_certmgr_store (svc_spec , fqdns , cert_name , key_name )
345374 elif cert_source == CertificateSource .CEPHADM_SIGNED .value :
346375 return self ._get_cephadm_signed_certificates (svc_spec , daemon_spec , ips , fqdns , custom_sans )
347376 else :
@@ -351,44 +380,55 @@ def get_certificates(self,
351380 def _get_certificates_from_spec (
352381 self ,
353382 svc_spec : ServiceSpec ,
354- daemon_spec : CephadmDaemonDeploySpec
383+ daemon_spec : CephadmDaemonDeploySpec ,
384+ cert_attr : str ,
385+ key_attr : str ,
386+ cert_name : str ,
387+ key_name : str
355388 ) -> CertKeyPair :
356389 """
357390 Fetch and persist the TLS certificate and key for a service spec.
358391 Returns:
359392 A CertKeyPair if both are available; otherwise EMPTY_TLS_KEYPAIR.
360393 """
361- cert = getattr (svc_spec , 'ssl_cert' , None )
362- key = getattr (svc_spec , 'ssl_key' , None )
394+ cert = getattr (svc_spec , cert_attr , None )
395+ key = getattr (svc_spec , key_attr , None )
363396 if cert and key :
364397 service_name = svc_spec .service_name ()
365398 host = daemon_spec .host
366- self .mgr .cert_mgr .save_cert (self . cert_name , cert , service_name , host , user_made = True )
367- self .mgr .cert_mgr .save_key (self . key_name , key , service_name , host , user_made = True )
399+ self .mgr .cert_mgr .save_cert (cert_name , cert , service_name , host , user_made = True )
400+ self .mgr .cert_mgr .save_key (key_name , key , service_name , host , user_made = True )
368401 return CertKeyPair (cert = cert , key = key )
369402
370403 logger .error (
371404 f"Cannot get cert/key '{ self .cert_name } /{ self .key_name } ' for service '{ svc_spec .service_name ()} '"
372405 )
373406 return EMPTY_TLS_KEYPAIR
374407
375- def _get_certificates_from_certmgr_store (self , svc_spec : ServiceSpec , fqdns : List [str ]) -> CertKeyPair :
408+ def _get_certificates_from_certmgr_store (
409+ self ,
410+ svc_spec : ServiceSpec ,
411+ fqdns : List [str ],
412+ cert_name : str ,
413+ key_name : str
414+ ) -> CertKeyPair :
376415 host = fqdns [0 ] if fqdns else None
377- cert = self .mgr .cert_mgr .get_cert (self . cert_name , svc_spec .service_name (), host )
378- key = self .mgr .cert_mgr .get_key (self . key_name , svc_spec .service_name (), host )
416+ cert = self .mgr .cert_mgr .get_cert (cert_name , svc_spec .service_name (), host )
417+ key = self .mgr .cert_mgr .get_key (key_name , svc_spec .service_name (), host )
379418 if cert and key :
380419 return CertKeyPair (cert = cert , key = key )
381420 else :
382- logger .error (f'Failed to get cert/key { self . cert_name } for service { svc_spec .service_name ()} host: { host } from the certmgr store.' )
421+ logger .error (f'Failed to get cert/key { cert_name } for service { svc_spec .service_name ()} host: { host } from the certmgr store.' )
383422 return EMPTY_TLS_KEYPAIR
384423
385- def _get_cephadm_signed_certificates (self ,
386- svc_spec : ServiceSpec ,
387- daemon_spec : CephadmDaemonDeploySpec ,
388- ips : Optional [List [str ]] = None ,
389- fqdns : Optional [List [str ]] = None ,
390- custom_sans : Optional [List [str ]] = None ,
391- ) -> CertKeyPair :
424+ def _get_cephadm_signed_certificates (
425+ self ,
426+ svc_spec : ServiceSpec ,
427+ daemon_spec : CephadmDaemonDeploySpec ,
428+ ips : List [str ],
429+ fqdns : List [str ],
430+ custom_sans : List [str ],
431+ ) -> CertKeyPair :
392432
393433 custom_sans = custom_sans or svc_spec .custom_sans or []
394434 ips = ips or [self .mgr .inventory .get_addr (daemon_spec .host )]
0 commit comments