import "./volume-claim-details.scss"; import React, { Fragment } from "react"; import { reaction } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { t, Trans } from "@lingui/macro"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge"; import { podsStore } from "../+workloads-pods/pods.store"; import { Link } from "react-router-dom"; import { KubeEventDetails } from "../+events/kube-event-details"; import { volumeClaimStore } from "./volume-claim.store"; import { ResourceMetrics } from "../resource-metrics"; import { VolumeClaimDiskChart } from "./volume-claim-disk-chart"; import { getDetailsUrl, KubeObjectDetailsProps, KubeObjectMeta } from "../kube-object"; import { PersistentVolumeClaim } from "../../api/endpoints"; import { _i18n } from "../../i18n"; import { kubeObjectDetailRegistry } from "../../api/kube-object-detail-registry"; interface Props extends KubeObjectDetailsProps { } @observer export class PersistentVolumeClaimDetails extends React.Component { @disposeOnUnmount clean = reaction(() => this.props.object, () => { volumeClaimStore.reset(); }); componentWillUnmount() { volumeClaimStore.reset(); } render() { const { object: volumeClaim } = this.props; if (!volumeClaim) { return null; } const { storageClassName, accessModes } = volumeClaim.spec; const { metrics } = volumeClaimStore; const pods = volumeClaim.getPods(podsStore.items); const metricTabs = [ Disk ]; return (
volumeClaimStore.loadMetrics(volumeClaim)} tabs={metricTabs} object={volumeClaim} params={{ metrics }} > Access Modes}> {accessModes.join(", ")} Storage Class Name}> {storageClassName} Storage}> {volumeClaim.getStorage()} Pods} className="pods"> {pods.map(pod => ( {pod.getName()} ))} Status}> {volumeClaim.getStatus()} Match Labels} labelsOnly> {volumeClaim.getMatchLabels().map(label => )} Match Expressions}> {volumeClaim.getMatchExpressions().map(({ key, operator, values }, i) => ( Key}>{key} Operator}>{operator} Values}>{values.join(", ")} ))}
); } } kubeObjectDetailRegistry.add({ kind: "PersistentVolumeClaim", apiVersions: ["v1"], components: { Details: (props) => } }); kubeObjectDetailRegistry.add({ kind: "PersistentVolumeClaim", apiVersions: ["v1"], priority: 5, components: { Details: (props) => } });