@@ -4990,7 +4990,7 @@ class TestMgmtGateway:
49904990 @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
49914991 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
49924992 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
4993- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
4993+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
49944994 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
49954995 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
49964996 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
@@ -5236,7 +5236,7 @@ def get_services_endpoints(name):
52365236 @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
52375237 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
52385238 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
5239- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5239+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
52405240 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
52415241 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
52425242 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
@@ -5574,12 +5574,66 @@ def get_services_endpoints(name):
55745574 use_current_daemon_image = False ,
55755575 )
55765576
5577+ @patch ("cephadm.serve.CephadmServe._run_cephadm" )
5578+ @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_service_endpoints" )
5579+ @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_service_discovery_endpoints" )
5580+ @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" )
5581+ @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
5582+ lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5583+ @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
5584+ @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
5585+ @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" ,
5586+ lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
5587+ def test_mgmt_gateway_internal_cert_san_includes_vip (
5588+ self ,
5589+ get_self_signed_mock ,
5590+ get_service_discovery_endpoints_mock ,
5591+ get_service_endpoints_mock ,
5592+ _run_cephadm ,
5593+ cephadm_module : CephadmOrchestrator ,
5594+ ):
5595+ vip = "10.0.0.200"
5596+
5597+ def get_services_endpoints (name ):
5598+ if name == 'prometheus' :
5599+ return ["192.168.100.100:9095" , "192.168.100.101:9095" ]
5600+ if name == 'grafana' :
5601+ return ["ceph-node-2:3000" , "ceph-node-2:3000" ]
5602+ if name == 'alertmanager' :
5603+ return ["192.168.100.100:9093" , "192.168.100.102:9093" ]
5604+ if name == 'oauth2-proxy' :
5605+ return []
5606+ return []
5607+
5608+ _run_cephadm .side_effect = async_side_effect (('{}' , '' , 0 ))
5609+ get_service_endpoints_mock .side_effect = get_services_endpoints
5610+ get_service_discovery_endpoints_mock .return_value = ["ceph-node-0:8765" , "ceph-node-2:8765" ]
5611+ get_self_signed_mock .return_value = TLSCredentials (ceph_generated_cert , ceph_generated_key )
5612+
5613+ server_port = 5555
5614+ spec = MgmtGatewaySpec (
5615+ port = server_port ,
5616+ virtual_ip = vip , # HA mode
5617+ ssl_cert = ceph_generated_cert ,
5618+ ssl_key = ceph_generated_key ,
5619+ )
5620+
5621+ with with_host (cephadm_module , 'ceph-node' ):
5622+ with with_service (cephadm_module , spec ):
5623+ # Ensure VIP was used when minting the internal cert (so it goes into SANs)
5624+ # get_self_signed_certificates_with_label(svc_spec, daemon_spec, label, ip)
5625+ args , _ = get_self_signed_mock .call_args
5626+ assert args [2 ] == 'internal'
5627+ assert args [3 ] == vip
5628+ deployed = json .loads (_run_cephadm .call_args .kwargs ['stdin' ])
5629+ assert deployed ['config_blobs' ]['files' ]['nginx_internal.crt' ] == ceph_generated_cert
5630+
55775631 @patch ("cephadm.serve.CephadmServe._run_cephadm" )
55785632 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_service_endpoints" )
55795633 @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
55805634 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55815635 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
5582- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5636+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55835637 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
55845638 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
55855639 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
@@ -5593,7 +5647,7 @@ def test_oauth2_proxy_service(self, get_service_endpoints_mock, _run_cephadm, ce
55935647 @patch ("cephadm.services.oauth2_proxy.OAuth2ProxyService.get_certificates" ,
55945648 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55955649 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
5596- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5650+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55975651 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
55985652 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
55995653 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
0 commit comments