def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
assert self.TYPE == daemon_spec.daemon_type
+ super().prepare_create(daemon_spec)
daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec)
return daemon_spec
# if empty list provided, return empty Daemon Desc
return DaemonDescription()
- def get_certificates(self, svc_spec: OAuth2ProxySpec, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[str, str]:
- cert = self.mgr.cert_mgr.get_cert('oauth2_proxy_cert')
- key = self.mgr.cert_mgr.get_key('oauth2_proxy_key')
- user_made = False
- if not (cert and key):
- # not available on store, check if provided on the spec
- if svc_spec.ssl_cert and svc_spec.ssl_key:
- user_made = True
- cert = svc_spec.ssl_cert
- key = svc_spec.ssl_key
- else:
- # not provided on the spec, let's generate self-sigend certificates
- addr = self.mgr.inventory.get_addr(daemon_spec.host)
- host_fqdn = self.mgr.get_fqdn(daemon_spec.host)
- cert, key = self.mgr.cert_mgr.generate_cert(host_fqdn, addr)
- # save certificates
- if cert and key:
- self.mgr.cert_mgr.save_cert('oauth2_proxy_cert', cert, user_made=user_made)
- self.mgr.cert_mgr.save_key('oauth2_proxy_key', key, user_made=user_made)
- else:
- logger.error("Failed to obtain certificate and key from mgmt-gateway.")
- return cert, key
-
def generate_config(self, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[Dict[str, Any], List[str]]:
assert self.TYPE == daemon_spec.daemon_type
svc_spec = cast(OAuth2ProxySpec, self.mgr.spec_store[daemon_spec.service_name].spec)
'redirect_url': svc_spec.redirect_url or self.get_redirect_url()
}
- cert, key = self.get_certificates(svc_spec, daemon_spec)
+ tls_pair = self.get_certificates(daemon_spec)
daemon_config = {
"files": {
"oauth2-proxy.conf": self.mgr.template.render(self.SVC_TEMPLATE_PATH, context),
- "oauth2-proxy.crt": cert,
- "oauth2-proxy.key": key,
+ "oauth2-proxy.crt": tls_pair.cert,
+ "oauth2-proxy.key": tls_pair.key,
}
}
return daemon_config, sorted(OAuth2ProxyService.get_dependencies(self.mgr))
-
- def post_remove(self, daemon: DaemonDescription, is_failed_deploy: bool) -> None:
- """
- Called before mgmt-gateway daemon is removed.
- """
- # delete cert/key entires for this mgmt-gateway daemon
- self.mgr.cert_mgr.rm_cert('oauth2_proxy_cert')
- self.mgr.cert_mgr.rm_key('oauth2_proxy_key')