mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
cleanup Lens repo with tighter linting
Signed-off-by: Sebastian Malton <smalton@mirantis.com>
This commit is contained in:
1 parent
e468105143
commit
b1ff34879a
470 files changed
+8447
-7443
No files matched your search
@@ -12,13 +12,14 @@ import { KubeEventDetails } from "../+events/kube-event-details";
|
||||
import { daemonSetStore } from "./daemonsets.store";
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import { KubeObjectDetailsProps } from "../kube-object";
|
||||
import { DaemonSet, daemonSetApi } from "../../api/endpoints";
|
||||
import { DaemonSet, daemonSetApi, PodMetricsData } from "../../api/endpoints";
|
||||
import { ResourceMetrics, ResourceMetricsText } from "../resource-metrics";
|
||||
import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts";
|
||||
import { reaction } from "mobx";
|
||||
import { PodDetailsList } from "../+workloads-pods/pod-details-list";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { KubeObjectMeta } from "../kube-object/kube-object-meta";
|
||||
import { Metrics } from "client/api/endpoints/metrics.api";
|
||||
|
||||
interface Props extends KubeObjectDetailsProps<DaemonSet> {
|
||||
}
|
||||
@@ -30,30 +31,32 @@ export class DaemonSetDetails extends React.Component<Props> {
|
||||
daemonSetStore.reset();
|
||||
});
|
||||
|
||||
componentDidMount() {
|
||||
componentDidMount(): Promise<void> {
|
||||
if (!podsStore.isLoaded) {
|
||||
podsStore.loadAll();
|
||||
return podsStore.loadAll();
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
componentWillUnmount(): void {
|
||||
daemonSetStore.reset();
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): JSX.Element {
|
||||
const { object: daemonSet } = this.props;
|
||||
if (!daemonSet) return null;
|
||||
const { spec } = daemonSet
|
||||
if (!daemonSet) {
|
||||
return null;
|
||||
}
|
||||
const { spec } = daemonSet;
|
||||
const selectors = daemonSet.getSelectors();
|
||||
const images = daemonSet.getImages()
|
||||
const nodeSelector = daemonSet.getNodeSelectors()
|
||||
const childPods = daemonSetStore.getChildPods(daemonSet)
|
||||
const metrics = daemonSetStore.metrics
|
||||
const images = daemonSet.getImages();
|
||||
const nodeSelector = daemonSet.getNodeSelectors();
|
||||
const childPods = daemonSetStore.getChildPods(daemonSet);
|
||||
const metrics = daemonSetStore.metrics;
|
||||
return (
|
||||
<div className="DaemonSetDetails">
|
||||
{podsStore.isLoaded && (
|
||||
<ResourceMetrics
|
||||
loader={() => daemonSetStore.loadMetrics(daemonSet)}
|
||||
loader={(): Promise<PodMetricsData<Metrics>> => daemonSetStore.loadMetrics(daemonSet)}
|
||||
tabs={podMetricTabs} object={daemonSet} params={{ metrics }}
|
||||
>
|
||||
<PodCharts/>
|
||||
@@ -93,10 +96,10 @@ export class DaemonSetDetails extends React.Component<Props> {
|
||||
<PodDetailsList pods={childPods} owner={daemonSet}/>
|
||||
<KubeEventDetails object={daemonSet}/>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
apiManager.registerViews(daemonSetApi, {
|
||||
Details: DaemonSetDetails,
|
||||
})
|
||||
});
|
||||
@@ -1,45 +1,44 @@
|
||||
import { observable } from "mobx";
|
||||
import { KubeObjectStore } from "../../kube-object.store";
|
||||
import { autobind } from "../../utils";
|
||||
import { DaemonSet, daemonSetApi, IPodMetrics, Pod, podsApi, PodStatus } from "../../api/endpoints";
|
||||
import { DaemonSet, daemonSetApi, PodMetricsData, Pod, podsApi, PodStatus } from "../../api/endpoints";
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { Metrics } from "client/api/endpoints/metrics.api";
|
||||
import { Dictionary } from "lodash";
|
||||
|
||||
@autobind()
|
||||
export class DaemonSetStore extends KubeObjectStore<DaemonSet> {
|
||||
api = daemonSetApi
|
||||
|
||||
@observable metrics: IPodMetrics = null;
|
||||
@observable metrics: PodMetricsData = null;
|
||||
|
||||
loadMetrics(daemonSet: DaemonSet) {
|
||||
async loadMetrics(daemonSet: DaemonSet): Promise<PodMetricsData<Metrics>> {
|
||||
const pods = this.getChildPods(daemonSet);
|
||||
return podsApi.getMetrics(pods, daemonSet.getNs(), "").then(metrics =>
|
||||
this.metrics = metrics
|
||||
);
|
||||
const metrics = await podsApi.getMetrics(pods, daemonSet.getNs(), "");
|
||||
return this.metrics = metrics;
|
||||
}
|
||||
|
||||
getChildPods(daemonSet: DaemonSet): Pod[] {
|
||||
return podsStore.getPodsByOwner(daemonSet)
|
||||
return podsStore.getPodsByOwner(daemonSet);
|
||||
}
|
||||
|
||||
getStatuses(daemonSets?: DaemonSet[]) {
|
||||
const status = { failed: 0, pending: 0, running: 0 }
|
||||
getStatuses(daemonSets?: DaemonSet[]): Dictionary<number> {
|
||||
const status = { failed: 0, pending: 0, running: 0 };
|
||||
daemonSets.forEach(daemonSet => {
|
||||
const pods = this.getChildPods(daemonSet)
|
||||
const pods = this.getChildPods(daemonSet);
|
||||
if (pods.some(pod => pod.getStatus() === PodStatus.FAILED)) {
|
||||
status.failed++
|
||||
status.failed++;
|
||||
} else if (pods.some(pod => pod.getStatus() === PodStatus.PENDING)) {
|
||||
status.pending++;
|
||||
} else {
|
||||
status.running++;
|
||||
}
|
||||
else if (pods.some(pod => pod.getStatus() === PodStatus.PENDING)) {
|
||||
status.pending++
|
||||
}
|
||||
else {
|
||||
status.running++
|
||||
}
|
||||
})
|
||||
return status
|
||||
});
|
||||
return status;
|
||||
}
|
||||
|
||||
reset() {
|
||||
reset(): void {
|
||||
this.metrics = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import { daemonSetStore } from "./daemonsets.store";
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import { nodesStore } from "../+nodes/nodes.store";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { IDaemonSetsRouteParams } from "../+workloads";
|
||||
import { DaemonSetsRouteParams } from "../+workloads";
|
||||
import { Trans } from "@lingui/macro";
|
||||
import { Badge } from "../badge";
|
||||
import { KubeEventIcon } from "../+events/kube-event-icon";
|
||||
@@ -23,35 +23,35 @@ enum sortBy {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IDaemonSetsRouteParams> {
|
||||
interface Props extends RouteComponentProps<DaemonSetsRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
export class DaemonSets extends React.Component<Props> {
|
||||
getPodsLength(daemonSet: DaemonSet) {
|
||||
getPodsLength(daemonSet: DaemonSet): number {
|
||||
return daemonSetStore.getChildPods(daemonSet).length;
|
||||
}
|
||||
|
||||
renderNodeSelector(daemonSet: DaemonSet) {
|
||||
renderNodeSelector(daemonSet: DaemonSet): JSX.Element[] {
|
||||
return daemonSet.getNodeSelectors().map(selector => (
|
||||
<Badge key={selector} label={selector}/>
|
||||
))
|
||||
));
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): JSX.Element {
|
||||
return (
|
||||
<KubeObjectListLayout
|
||||
className="DaemonSets" store={daemonSetStore}
|
||||
dependentStores={[podsStore, nodesStore, eventStore]}
|
||||
sortingCallbacks={{
|
||||
[sortBy.name]: (daemonSet: DaemonSet) => daemonSet.getName(),
|
||||
[sortBy.namespace]: (daemonSet: DaemonSet) => daemonSet.getNs(),
|
||||
[sortBy.pods]: (daemonSet: DaemonSet) => this.getPodsLength(daemonSet),
|
||||
[sortBy.age]: (daemonSet: DaemonSet) => daemonSet.metadata.creationTimestamp,
|
||||
[sortBy.name]: (daemonSet: DaemonSet): string => daemonSet.getName(),
|
||||
[sortBy.namespace]: (daemonSet: DaemonSet): string => daemonSet.getNs(),
|
||||
[sortBy.pods]: (daemonSet: DaemonSet): number => this.getPodsLength(daemonSet),
|
||||
[sortBy.age]: (daemonSet: DaemonSet): string => daemonSet.metadata.creationTimestamp,
|
||||
}}
|
||||
searchFilters={[
|
||||
(daemonSet: DaemonSet) => daemonSet.getSearchFields(),
|
||||
(daemonSet: DaemonSet) => daemonSet.getLabels(),
|
||||
(daemonSet: DaemonSet): string[] => daemonSet.getSearchFields(),
|
||||
(daemonSet: DaemonSet): string[] => daemonSet.getLabels(),
|
||||
]}
|
||||
renderHeaderTitle={<Trans>Daemon Sets</Trans>}
|
||||
renderTableHeader={[
|
||||
@@ -62,28 +62,28 @@ export class DaemonSets extends React.Component<Props> {
|
||||
{ title: <Trans>Node Selector</Trans>, className: "labels" },
|
||||
{ title: <Trans>Age</Trans>, className: "age", sortBy: sortBy.age },
|
||||
]}
|
||||
renderTableContents={(daemonSet: DaemonSet) => [
|
||||
renderTableContents={(daemonSet: DaemonSet): (string | number | JSX.Element | JSX.Element[])[] => [
|
||||
daemonSet.getName(),
|
||||
daemonSet.getNs(),
|
||||
this.getPodsLength(daemonSet),
|
||||
<KubeEventIcon object={daemonSet}/>,
|
||||
<KubeEventIcon key="daemonSet" object={daemonSet}/>,
|
||||
this.renderNodeSelector(daemonSet),
|
||||
daemonSet.getAge(),
|
||||
]}
|
||||
renderItemMenu={(item: DaemonSet) => {
|
||||
return <DaemonSetMenu object={item}/>
|
||||
renderItemMenu={(item: DaemonSet): JSX.Element => {
|
||||
return <DaemonSetMenu object={item}/>;
|
||||
}}
|
||||
/>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function DaemonSetMenu(props: KubeObjectMenuProps<DaemonSet>) {
|
||||
export function DaemonSetMenu(props: KubeObjectMenuProps<DaemonSet>): JSX.Element {
|
||||
return (
|
||||
<KubeObjectMenu {...props}/>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
apiManager.registerViews(daemonSetApi, {
|
||||
Menu: DaemonSetMenu,
|
||||
})
|
||||
});
|
||||
@@ -1,2 +1,2 @@
|
||||
export * from "./daemonsets"
|
||||
export * from "./daemonset-details"
|
||||
export * from "./daemonsets";
|
||||
export * from "./daemonset-details";
|
||||
Reference in new issue
Block a user