@@ -4960,7 +4960,7 @@ class TestMgmtGateway:
49604960 @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
49614961 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
49624962 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
4963- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
4963+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
49644964 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
49654965 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
49664966 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
@@ -5206,7 +5206,7 @@ def get_services_endpoints(name):
52065206 @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
52075207 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
52085208 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
5209- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5209+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
52105210 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
52115211 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
52125212 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
@@ -5544,12 +5544,66 @@ def get_services_endpoints(name):
55445544 use_current_daemon_image = False ,
55455545 )
55465546
5547+ @patch ("cephadm.serve.CephadmServe._run_cephadm" )
5548+ @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_service_endpoints" )
5549+ @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_service_discovery_endpoints" )
5550+ @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" )
5551+ @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
5552+ lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5553+ @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
5554+ @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
5555+ @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" ,
5556+ lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
5557+ def test_mgmt_gateway_internal_cert_san_includes_vip (
5558+ self ,
5559+ get_self_signed_mock ,
5560+ get_service_discovery_endpoints_mock ,
5561+ get_service_endpoints_mock ,
5562+ _run_cephadm ,
5563+ cephadm_module : CephadmOrchestrator ,
5564+ ):
5565+ vip = "10.0.0.200"
5566+
5567+ def get_services_endpoints (name ):
5568+ if name == 'prometheus' :
5569+ return ["192.168.100.100:9095" , "192.168.100.101:9095" ]
5570+ if name == 'grafana' :
5571+ return ["ceph-node-2:3000" , "ceph-node-2:3000" ]
5572+ if name == 'alertmanager' :
5573+ return ["192.168.100.100:9093" , "192.168.100.102:9093" ]
5574+ if name == 'oauth2-proxy' :
5575+ return []
5576+ return []
5577+
5578+ _run_cephadm .side_effect = async_side_effect (('{}' , '' , 0 ))
5579+ get_service_endpoints_mock .side_effect = get_services_endpoints
5580+ get_service_discovery_endpoints_mock .return_value = ["ceph-node-0:8765" , "ceph-node-2:8765" ]
5581+ get_self_signed_mock .return_value = TLSCredentials (ceph_generated_cert , ceph_generated_key )
5582+
5583+ server_port = 5555
5584+ spec = MgmtGatewaySpec (
5585+ port = server_port ,
5586+ virtual_ip = vip , # HA mode
5587+ ssl_cert = ceph_generated_cert ,
5588+ ssl_key = ceph_generated_key ,
5589+ )
5590+
5591+ with with_host (cephadm_module , 'ceph-node' ):
5592+ with with_service (cephadm_module , spec ):
5593+ # Ensure VIP was used when minting the internal cert (so it goes into SANs)
5594+ # get_self_signed_certificates_with_label(svc_spec, daemon_spec, label, ip)
5595+ args , _ = get_self_signed_mock .call_args
5596+ assert args [2 ] == 'internal'
5597+ assert args [3 ] == vip
5598+ deployed = json .loads (_run_cephadm .call_args .kwargs ['stdin' ])
5599+ assert deployed ['config_blobs' ]['files' ]['nginx_internal.crt' ] == ceph_generated_cert
5600+
55475601 @patch ("cephadm.serve.CephadmServe._run_cephadm" )
55485602 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_service_endpoints" )
55495603 @patch ("cephadm.services.cephadmservice.CephadmService.get_certificates" ,
55505604 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55515605 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
5552- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5606+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55535607 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
55545608 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
55555609 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
@@ -5563,7 +5617,7 @@ def test_oauth2_proxy_service(self, get_service_endpoints_mock, _run_cephadm, ce
55635617 @patch ("cephadm.services.oauth2_proxy.OAuth2ProxyService.get_certificates" ,
55645618 lambda instance , dspec , ips = None : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55655619 @patch ("cephadm.services.mgmt_gateway.MgmtGatewayService.get_self_signed_certificates_with_label" ,
5566- lambda instance , svc_spec , dspec , label : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
5620+ lambda instance , svc_spec , dspec , label , ip : TLSCredentials (ceph_generated_cert , ceph_generated_key ))
55675621 @patch ("cephadm.module.CephadmOrchestrator.get_mgr_ip" , lambda _ : '::1' )
55685622 @patch ('cephadm.cert_mgr.CertMgr.get_root_ca' , lambda instance : cephadm_root_ca )
55695623 @patch ("cephadm.services.mgmt_gateway.get_dashboard_endpoints" , lambda _ : (["ceph-node-2:8443" , "ceph-node-2:8443" ], "https" ))
0 commit comments