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 { getDetailsUrl } from "../../navigation"; import { ResourceMetrics } from "../resource-metrics"; import { VolumeClaimDiskChart } from "./volume-claim-disk-chart"; import { KubeObjectDetailsProps } from "../kube-object"; import { PersistentVolumeClaim, pvcApi } from "../../api/endpoints"; import { _i18n } from "../../i18n"; import { apiManager } from "../../api/api-manager"; import { KubeObjectMeta } from "../kube-object/kube-object-meta"; 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(", ")} ))}
); } } apiManager.registerViews(pvcApi, { Details: PersistentVolumeClaimDetails, })