import startCase from "lodash/startCase" import "./volume-details.scss" import React from "react"; import { Trans } from "@lingui/macro"; import { Link } from "react-router-dom"; import { observer } from "mobx-react"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge"; import { KubeEventDetails } from "../+events/kube-event-details"; import { getDetailsUrl } from "../../navigation"; import { PersistentVolume, persistentVolumeApi, pvcApi } from "../../api/endpoints"; import { KubeObjectDetailsProps } from "../kube-object"; import { apiManager } from "../../api/api-manager"; import { KubeObjectMeta } from "../kube-object/kube-object-meta"; interface Props extends KubeObjectDetailsProps { } @observer export class PersistentVolumeDetails extends React.Component { render() { const { object: volume } = this.props; if (!volume) { return null; } const { accessModes, capacity, persistentVolumeReclaimPolicy, storageClassName, claimRef, flexVolume, mountOptions, nfs } = volume.spec; return (
Capacity}> {capacity.storage} {mountOptions && ( Mount Options}> {mountOptions.join(", ")} )} Access Modes}> {accessModes.join(", ")} Reclaim Policy}> {persistentVolumeReclaimPolicy} Storage Class Name}> {storageClassName} Status} labelsOnly> {nfs && ( <> Network File System}/> { Object.entries(nfs).map(([name, value]) => ( {value} )) } )} {flexVolume && ( <> FlexVolume}/> Driver}> {flexVolume.driver} { Object.entries(flexVolume.options).map(([name, value]) => ( {value} )) } )} {claimRef && ( <> Claim}/> Type}> {claimRef.kind} Name}> {claimRef.name} Namespace}> {claimRef.namespace} )}
); } } apiManager.registerViews(persistentVolumeApi, { Details: PersistentVolumeDetails })