import "./issuer-details.scss" import React from "react"; import { observer } from "mobx-react"; import { Trans } from "@lingui/macro"; import { Link } from "react-router-dom"; import { DrawerItem, DrawerTitle } from "../../drawer"; import { Badge } from "../../badge"; import { KubeEventDetails } from "../../+events/kube-event-details"; import { KubeObjectDetailsProps } from "../../kube-object"; import { clusterIssuersApi, Issuer, issuersApi } from "../../../api/endpoints/cert-manager.api"; import { autobind, cssNames } from "../../../utils"; import { getDetailsUrl } from "../../../navigation"; import { secretsApi } from "../../../api/endpoints"; import { apiManager } from "../../../api/api-manager"; import { KubeObjectMeta } from "../../kube-object/kube-object-meta"; interface Props extends KubeObjectDetailsProps { } @observer export class IssuerDetails extends React.Component { @autobind() renderSecretLink(secretName: string) { const namespace = this.props.object.getNs(); if (!namespace) { return secretName; } const secretDetailsUrl = getDetailsUrl(secretsApi.getUrl({ namespace: namespace, name: secretName, })); return ( {secretName} ) } render() { const { object: issuer, className } = this.props; if (!issuer) return; const { renderSecretLink } = this; const { spec: { acme, ca, vault, venafi }, status } = issuer; return (
Type}> {issuer.getType()} Status} labelsOnly> {issuer.getConditions().map(({ type, tooltip, isReady }) => { return ( ) })} {acme && (() => { const { email, server, skipTLSVerify, privateKeySecretRef, solvers } = acme; return ( <> E-mail}> {email} Server}> {server} {status.acme && ( Status URI}> {status.acme.uri} )} Private Key Secret}> {renderSecretLink(privateKeySecretRef.name)} Skip TLS Verify}> {skipTLSVerify ? Yes : No} ) })()} {ca && (() => { const { secretName } = ca; return ( <> Secret Name}> {renderSecretLink(secretName)} ) })()} {vault && (() => { const { auth, caBundle, path, server } = vault; const { path: authPath, roleId, secretRef } = auth.appRole; return ( <> Server}> {server} Path}> {path} CA Bundle} labelsOnly> Auth App Role}/> Path}> {authPath} Role ID}> {roleId} {secretRef && ( Secret}> {renderSecretLink(secretRef.name)} )} ) })()} {venafi && (() => { const { zone, cloud, tpp } = venafi; return ( <> Zone}> {zone} {cloud && ( Cloud API Token Secret}> {renderSecretLink(cloud.apiTokenSecretRef.name)} )} {tpp && ( <> URL}> {tpp.url} CA Bundle} labelsOnly> Credentials Ref}> {renderSecretLink(tpp.credentialsRef.name)} )} ) })()}
); } } apiManager.registerViews([issuersApi, clusterIssuersApi], { Details: IssuerDetails })