mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Refactor k8s api to common (#3553)
* refactor kube api to common Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * refactor more utils to common Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * refactor more utils to common Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fix tests Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * switch to use node-fetch on both sides Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * cleanup Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * improve logger Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fix lint errors Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fix/improve tests Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fix tests Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fix node-fetch require error on prod build Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * preload fix Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fixes Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * read serverAddress from apiBase Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * cleanup Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
1 parent
476aa74101
commit
58a446bd45
250 files changed
+1244
-644
No files matched your search
@@ -31,7 +31,7 @@ import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"
|
||||
import { disposeOnUnmount, observer } from "mobx-react";
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import type { KubeObjectDetailsProps } from "../kube-object-details";
|
||||
import { getMetricsForReplicaSets, IPodMetrics, ReplicaSet } from "../../api/endpoints";
|
||||
import { getMetricsForReplicaSets, IPodMetrics, ReplicaSet } from "../../../common/k8s-api/endpoints";
|
||||
import { ResourceMetrics, ResourceMetricsText } from "../resource-metrics";
|
||||
import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts";
|
||||
import { PodDetailsList } from "../+workloads-pods/pod-details-list";
|
||||
|
||||
@@ -21,11 +21,10 @@
|
||||
|
||||
import "@testing-library/jest-dom/extend-expect";
|
||||
|
||||
jest.mock("../../api/endpoints");
|
||||
import { ReplicaSetScaleDialog } from "./replicaset-scale-dialog";
|
||||
import { render, waitFor, fireEvent } from "@testing-library/react";
|
||||
import React from "react";
|
||||
import { ReplicaSet, replicaSetApi } from "../../api/endpoints/replica-set.api";
|
||||
import { ReplicaSet, ReplicaSetApi } from "../../../common/k8s-api/endpoints/replica-set.api";
|
||||
|
||||
const dummyReplicaSet: ReplicaSet = {
|
||||
apiVersion: "v1",
|
||||
@@ -111,8 +110,16 @@ const dummyReplicaSet: ReplicaSet = {
|
||||
};
|
||||
|
||||
describe("<ReplicaSetScaleDialog />", () => {
|
||||
let replicaSetApi: ReplicaSetApi;
|
||||
|
||||
beforeEach(() => {
|
||||
replicaSetApi = new ReplicaSetApi({
|
||||
objectConstructor: ReplicaSet
|
||||
});
|
||||
});
|
||||
|
||||
it("renders w/o errors", () => {
|
||||
const { container } = render(<ReplicaSetScaleDialog/>);
|
||||
const { container } = render(<ReplicaSetScaleDialog replicaSetApi={replicaSetApi} />);
|
||||
|
||||
expect(container).toBeInstanceOf(HTMLElement);
|
||||
});
|
||||
@@ -123,7 +130,7 @@ describe("<ReplicaSetScaleDialog />", () => {
|
||||
const initReplicas = 1;
|
||||
|
||||
replicaSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas);
|
||||
const { getByTestId } = render(<ReplicaSetScaleDialog/>);
|
||||
const { getByTestId } = render(<ReplicaSetScaleDialog replicaSetApi={replicaSetApi} />);
|
||||
|
||||
ReplicaSetScaleDialog.open(dummyReplicaSet);
|
||||
// we need to wait for the replicaSetScaleDialog to show up
|
||||
@@ -143,7 +150,7 @@ describe("<ReplicaSetScaleDialog />", () => {
|
||||
const initReplicas = 1;
|
||||
|
||||
replicaSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas);
|
||||
const component = render(<ReplicaSetScaleDialog/>);
|
||||
const component = render(<ReplicaSetScaleDialog replicaSetApi={replicaSetApi} />);
|
||||
|
||||
ReplicaSetScaleDialog.open(dummyReplicaSet);
|
||||
await waitFor(async () => {
|
||||
|
||||
@@ -30,9 +30,10 @@ import { Icon } from "../icon";
|
||||
import { Slider } from "../slider";
|
||||
import { Notifications } from "../notifications";
|
||||
import { cssNames } from "../../utils";
|
||||
import { ReplicaSet, replicaSetApi } from "../../api/endpoints/replica-set.api";
|
||||
import { ReplicaSet, ReplicaSetApi, replicaSetApi } from "../../../common/k8s-api/endpoints/replica-set.api";
|
||||
|
||||
interface Props extends Partial<DialogProps> {
|
||||
replicaSetApi: ReplicaSetApi
|
||||
}
|
||||
|
||||
const dialogState = observable.object({
|
||||
@@ -42,6 +43,10 @@ const dialogState = observable.object({
|
||||
|
||||
@observer
|
||||
export class ReplicaSetScaleDialog extends Component<Props> {
|
||||
static defaultProps = {
|
||||
replicaSetApi
|
||||
};
|
||||
|
||||
@observable ready = false;
|
||||
@observable currentReplicas = 0;
|
||||
@observable desiredReplicas = 0;
|
||||
@@ -71,7 +76,7 @@ export class ReplicaSetScaleDialog extends Component<Props> {
|
||||
onOpen = async () => {
|
||||
const { replicaSet } = this;
|
||||
|
||||
this.currentReplicas = await replicaSetApi.getReplicas({
|
||||
this.currentReplicas = await this.props.replicaSetApi.getReplicas({
|
||||
namespace: replicaSet.getNs(),
|
||||
name: replicaSet.getName(),
|
||||
});
|
||||
@@ -102,7 +107,7 @@ export class ReplicaSetScaleDialog extends Component<Props> {
|
||||
|
||||
try {
|
||||
if (currentReplicas !== desiredReplicas) {
|
||||
await replicaSetApi.scale({
|
||||
await this.props.replicaSetApi.scale({
|
||||
name: replicaSet.getName(),
|
||||
namespace: replicaSet.getNs(),
|
||||
}, desiredReplicas);
|
||||
|
||||
@@ -21,10 +21,10 @@
|
||||
import { makeObservable } from "mobx";
|
||||
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { Deployment, ReplicaSet, replicaSetApi } from "../../api/endpoints";
|
||||
import { PodStatus } from "../../api/endpoints/pods.api";
|
||||
import { KubeObjectStore } from "../../kube-object.store";
|
||||
import { apiManager } from "../../../common/k8s-api/api-manager";
|
||||
import { Deployment, ReplicaSet, replicaSetApi } from "../../../common/k8s-api/endpoints";
|
||||
import { PodStatus } from "../../../common/k8s-api/endpoints/pods.api";
|
||||
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
||||
import { autoBind } from "../../utils";
|
||||
|
||||
export class ReplicaSetStore extends KubeObjectStore<ReplicaSet> {
|
||||
|
||||
@@ -23,7 +23,7 @@ import "./replicasets.scss";
|
||||
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import type { ReplicaSet } from "../../api/endpoints";
|
||||
import type { ReplicaSet } from "../../../common/k8s-api/endpoints";
|
||||
import type { KubeObjectMenuProps } from "../kube-object-menu";
|
||||
import { replicaSetStore } from "./replicasets.store";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
|
||||
Reference in new issue
Block a user