mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
items list + details list views (added contents from replication controllers), lint fixes
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
30bd97b883
commit
1d08dd8300
@ -8,7 +8,7 @@ import { KubeApi } from "../kube-api";
|
||||
import type {
|
||||
BaseKubeObjectCondition,
|
||||
KubeObjectStatus,
|
||||
NamespaceScopedMetadata
|
||||
NamespaceScopedMetadata,
|
||||
} from "../kube-object";
|
||||
import { KubeObject } from "../kube-object";
|
||||
import type { PodTemplateSpec } from "./types";
|
||||
@ -63,7 +63,7 @@ export interface ReplicationControllerSpec {
|
||||
* Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef.
|
||||
* More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
|
||||
*/
|
||||
template?: PodTemplateSpec;
|
||||
template: PodTemplateSpec;
|
||||
}
|
||||
|
||||
export interface ReplicationControllerStatus extends KubeObjectStatus {
|
||||
@ -103,8 +103,8 @@ export class ReplicationController extends KubeObject<
|
||||
return this.spec?.minReadySeconds ?? 0;
|
||||
}
|
||||
|
||||
getDesiredReplicas(): number | undefined {
|
||||
return this.spec?.replicas;
|
||||
getGeneration() {
|
||||
return this.status?.observedGeneration;
|
||||
}
|
||||
|
||||
getSelectorLabels(): string[] {
|
||||
@ -115,6 +115,10 @@ export class ReplicationController extends KubeObject<
|
||||
return this.status?.replicas;
|
||||
}
|
||||
|
||||
getDesiredReplicas(): number | undefined {
|
||||
return this.spec?.replicas;
|
||||
}
|
||||
|
||||
getAvailableReplicas(): number | undefined {
|
||||
return this.status?.availableReplicas;
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { ReplicationControllers } from "./replicationcontrollers";
|
||||
import {
|
||||
routeSpecificComponentInjectionToken
|
||||
routeSpecificComponentInjectionToken,
|
||||
} from "../../routes/route-specific-component-injection-token";
|
||||
import replicationControllersRouteInjectable
|
||||
from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable";
|
||||
|
||||
@ -7,11 +7,11 @@ import styles from "./replicationcontroller-details.module.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import { DrawerItem } from "../drawer";
|
||||
import { DrawerItem, DrawerTitle } from "../drawer";
|
||||
import { Badge } from "../badge";
|
||||
import type { KubeObjectDetailsProps } from "../kube-object-details";
|
||||
import type { ReplicationControllerStore } from "./replicationctrl-store";
|
||||
import replicationControllerStoreInjectable from "./replicationctrl-store.injectable";
|
||||
import type { ReplicationControllerStore } from "./replicationcontroller-store";
|
||||
import replicationControllerStoreInjectable from "./replicationcontroller-store.injectable";
|
||||
import type { ReplicationController } from "../../../common/k8s-api/endpoints";
|
||||
|
||||
export interface ReplicationControllerDetailsProps extends KubeObjectDetailsProps<ReplicationController> {
|
||||
@ -24,13 +24,39 @@ interface Dependencies {
|
||||
@observer
|
||||
class NonInjectedReplicationControllerDetails extends React.Component<ReplicationControllerDetailsProps & Dependencies> {
|
||||
render() {
|
||||
const { object: ctrl, store } = this.props;
|
||||
const { object: resource } = this.props;
|
||||
|
||||
return (
|
||||
<div className={styles.ReplicationControllerDetails}>
|
||||
<DrawerItem name="Some info" labelsOnly>
|
||||
<p>Controller: {ctrl.getName()}</p>
|
||||
<p>Items in store: <Badge label={store.items.length} /></p>
|
||||
<DrawerTitle>
|
||||
Spec
|
||||
</DrawerTitle>
|
||||
<DrawerItem name="Desired Replicas">
|
||||
{resource.getDesiredReplicas()}
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Selectors" labelsOnly>
|
||||
{
|
||||
resource.getSelectorLabels().map(label => (<Badge key={label} label={label} />))
|
||||
}
|
||||
</DrawerItem>
|
||||
|
||||
<DrawerTitle>
|
||||
Status
|
||||
</DrawerTitle>
|
||||
<DrawerItem name="Replicas">
|
||||
{resource.getReplicas()}
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Available Replicas">
|
||||
{resource.getAvailableReplicas()}
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Labeled Replicas">
|
||||
{resource.getLabeledReplicas()}
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Controller Generation">
|
||||
{resource.getGeneration()}
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Minimum Pod Readiness">
|
||||
{`${resource.getMinReadySeconds()} seconds`}
|
||||
</DrawerItem>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { kubeObjectStoreInjectionToken } from "../../../common/k8s-api/api-manager/kube-object-store-token";
|
||||
import { ReplicationControllerStore } from "./replicationctrl-store";
|
||||
import { ReplicationControllerStore } from "./replicationcontroller-store";
|
||||
import clusterFrameContextForNamespacedResourcesInjectable from "../../cluster-frame-context/for-namespaced-resources.injectable";
|
||||
import loggerInjectable from "../../../common/logger.injectable";
|
||||
import replicationControllerApiInjectable
|
||||
@ -5,11 +5,11 @@
|
||||
|
||||
import type {
|
||||
ReplicationController,
|
||||
ReplicationControllerApi
|
||||
ReplicationControllerApi,
|
||||
} from "../../../common/k8s-api/endpoints";
|
||||
import type {
|
||||
KubeObjectStoreDependencies,
|
||||
KubeObjectStoreOptions
|
||||
KubeObjectStoreOptions,
|
||||
} from "../../../common/k8s-api/kube-object.store";
|
||||
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
||||
|
||||
@ -6,65 +6,72 @@
|
||||
import styles from "./replicationcontrollers.module.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import type { ReplicationControllerStore } from "./replicationctrl-store";
|
||||
import type { EventStore } from "../+events/store";
|
||||
import type { ReplicationControllerStore } from "./replicationcontroller-store";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import replicationControllerStoreInjectable from "./replicationctrl-store.injectable";
|
||||
import replicationControllerStoreInjectable from "./replicationcontroller-store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
import { Badge } from "../badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
namespace = "namespace",
|
||||
replicas = "replicas",
|
||||
replicasDesired = "replicasDesired",
|
||||
selector = "selector",
|
||||
}
|
||||
|
||||
interface Dependencies {
|
||||
store: ReplicationControllerStore;
|
||||
eventStore: EventStore;
|
||||
}
|
||||
|
||||
const NonInjectedReplicationControllers = observer((props: Dependencies) => {
|
||||
const {
|
||||
eventStore,
|
||||
store,
|
||||
} = props;
|
||||
|
||||
return (
|
||||
<SiblingsInTabLayout>
|
||||
<KubeObjectListLayout
|
||||
isConfigurable
|
||||
tableId="workload_replicationcontrollers"
|
||||
className={styles.ReplicationControllers}
|
||||
store={store}
|
||||
dependentStores={[eventStore]} // status icon component uses event store
|
||||
store={props.store}
|
||||
sortingCallbacks={{
|
||||
[columnId.name]: replicaSet => replicaSet.getName(),
|
||||
[columnId.namespace]: replicaSet => replicaSet.getNs(),
|
||||
[columnId.name]: item => item.getName(),
|
||||
[columnId.namespace]: item => item.getNs(),
|
||||
[columnId.selector]: item => item.getSelectorLabels(),
|
||||
[columnId.replicas]: item => item.getReplicas(),
|
||||
[columnId.replicasDesired]: item => item.getDesiredReplicas(),
|
||||
}}
|
||||
searchFilters={[
|
||||
replicaSet => replicaSet.getSearchFields(),
|
||||
item => item.getSearchFields(),
|
||||
item => item.getSelectorLabels(),
|
||||
]}
|
||||
renderHeaderTitle="Replication Controllers"
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
{ className: "warning", showWithColumn: columnId.name },
|
||||
{
|
||||
title: "Namespace",
|
||||
className: "namespace",
|
||||
sortBy: columnId.namespace,
|
||||
id: columnId.namespace,
|
||||
},
|
||||
{ title: "Replicas", sortBy: columnId.replicas, id: columnId.replicas },
|
||||
{
|
||||
title: "Desired Replicas",
|
||||
sortBy: columnId.replicasDesired,
|
||||
id: columnId.replicasDesired,
|
||||
},
|
||||
{
|
||||
title: "Selector",
|
||||
sortBy: columnId.selector,
|
||||
id: columnId.selector,
|
||||
},
|
||||
]}
|
||||
renderTableContents={replicaSet => [
|
||||
replicaSet.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={replicaSet} />,
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
namespace={replicaSet.getNs()}
|
||||
/>,
|
||||
renderTableContents={item => [
|
||||
item.getName(),
|
||||
<NamespaceSelectBadge key="namespace" namespace={item.getNs()} />,
|
||||
item.getReplicas(),
|
||||
item.getDesiredReplicas(),
|
||||
item.getSelectorLabels().map(label => (<Badge key={label} label={label} />)),
|
||||
]}
|
||||
/>
|
||||
</SiblingsInTabLayout>
|
||||
@ -74,7 +81,6 @@ const NonInjectedReplicationControllers = observer((props: Dependencies) => {
|
||||
export const ReplicationControllers = withInjectables<Dependencies>(NonInjectedReplicationControllers, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
store: di.inject(replicationControllerStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
|
||||
import { computed } from "mobx";
|
||||
import {
|
||||
kubeObjectMatchesToKindAndApiVersion
|
||||
kubeObjectMatchesToKindAndApiVersion,
|
||||
} from "../kube-object-matches-to-kind-and-api-version";
|
||||
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
|
||||
import { ReplicationControllerDetails } from "../../../+workloads-replicationcontrollers";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user