import "./volume-claim-details.scss"; import React, { Fragment } from "react"; import { reaction } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; 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 { kubeObjectDetailRegistry } from "../../api/kube-object-detail-registry"; import { ResourceType } from "../+cluster-settings/components/cluster-metrics-setting"; import { clusterStore } from "../../../common/cluster-store"; 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" ]; const isMetricHidden = clusterStore.isMetricHidden(ResourceType.VolumeClaim); return (
{!isMetricHidden && ( volumeClaimStore.loadMetrics(volumeClaim)} tabs={metricTabs} object={volumeClaim} params={{ metrics }} > )} {accessModes.join(", ")} {storageClassName} {volumeClaim.getStorage()} {pods.map(pod => ( {pod.getName()} ))} {volumeClaim.getStatus()} {volumeClaim.getMatchLabels().map(label => )} {volumeClaim.getMatchExpressions().map(({ key, operator, values }, i) => ( {key} {operator} {values.join(", ")} ))}
); } } kubeObjectDetailRegistry.add({ kind: "PersistentVolumeClaim", apiVersions: ["v1"], components: { Details: (props) => } }); kubeObjectDetailRegistry.add({ kind: "PersistentVolumeClaim", apiVersions: ["v1"], priority: 5, components: { Details: (props) => } });