UNPKG

@kinvolk/headlamp-plugin

Version:

The needed infrastructure for building Headlamp plugins.

91 lines (90 loc) 3.79 kB
import { jsx as _jsx } from "react/jsx-runtime"; /* * Copyright 2025 The Kubernetes Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import DaemonSet from '../../lib/k8s/daemonSet'; import { SectionBox, SimpleTable } from '../common'; import { ContainersSection, DetailsGrid, MetadataDictGrid, OwnedPodsSection, } from '../common/Resource'; function TolerationsSection(props) { const { resource } = props; const { t } = useTranslation(['glossary', 'translation']); if (!resource) { return null; } const tolerations = resource.spec.template.spec?.tolerations || []; function getEffectString(effect, seconds) { if (effect === 'NoExecute' && seconds === undefined) { const secondsLabel = seconds === undefined ? 'forever' : `${seconds}s`; return `${effect} (${secondsLabel})`; } return effect; } return (_jsx(SectionBox, { title: t('Tolerations'), children: _jsx(SimpleTable, { data: tolerations, columns: [ { label: t('translation|Key'), getter: toleration => toleration.key, sort: true, }, { label: t('translation|Operator'), getter: toleration => toleration.operator, sort: true, }, { label: t('translation|Value'), getter: toleration => toleration.value, sort: true, }, { label: t('translation|Effect'), getter: toleration => getEffectString(toleration.effect, toleration.tolerationSeconds), sort: true, }, ], reflectInURL: "tolerations" }) })); } export default function DaemonSetDetails(props) { const params = useParams(); const { name = params.name, namespace = params.namespace, cluster } = props; const { t } = useTranslation(['glossary', 'translation']); return (_jsx(DetailsGrid, { resourceType: DaemonSet, name: name, namespace: namespace, cluster: cluster, withEvents: true, extraInfo: item => item && [ { name: t('Update Strategy'), value: item?.spec.updateStrategy.type, }, { name: t('Selector'), value: _jsx(MetadataDictGrid, { dict: item.spec.selector.matchLabels || {} }), }, { name: t('Node Selector'), value: _jsx(MetadataDictGrid, { dict: item.spec.template.spec.nodeSelector || {} }), }, ], extraSections: item => [ { id: 'headlamp.daemonset-owned-pods', section: _jsx(OwnedPodsSection, { resource: item }), }, { id: 'headlamp.daemonset-tolerations', section: _jsx(TolerationsSection, { resource: item }), }, { id: 'headlamp.daemonset-containers', section: _jsx(ContainersSection, { resource: item?.jsonData }), }, ] })); }