/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import "./crd-details.scss"; import React from "react"; import { Link } from "react-router-dom"; import { observer } from "mobx-react"; import { CustomResourceDefinition } from "../../../common/k8s-api/endpoints/custom-resource-definition.api"; import { Badge } from "../badge"; import { DrawerItem, DrawerTitle } from "../drawer"; import type { KubeObjectDetailsProps } from "../kube-object-details"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { Input } from "../input"; import { KubeObjectMeta } from "../kube-object-meta"; import { MonacoEditor } from "../monaco-editor"; import logger from "../../../common/logger"; export interface CRDDetailsProps extends KubeObjectDetailsProps { } @observer export class CRDDetails extends React.Component { render() { const { object: crd } = this.props; if (!crd) { return null; } if (!(crd instanceof CustomResourceDefinition)) { logger.error("[CRDDetails]: passed object that is not an instanceof CustomResourceDefinition", crd); return null; } const { plural, singular, kind, listKind } = crd.getNames(); const printerColumns = crd.getPrinterColumns(); const validation = crd.getValidation(); return (
{crd.getGroup()} {crd.getVersion()} {crd.getStoredVersions()} {crd.getScope()} {crd.getResourceTitle()} { crd.getConditions().map(condition => { const { type, message, lastTransitionTime, status } = condition; return (

{message}

Last transition time: {lastTransitionTime}

)} /> ); }) }
Names plural singular kind listKind {plural} {singular} {kind} {listKind}
{printerColumns.length > 0 && ( <> Additional Printer Columns Name Type JSON Path { printerColumns.map((column, index) => { const { name, type, jsonPath } = column; return ( {name} {type} ); }) }
)} {validation && ( <> Validation )}
); } }