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:
Jari Kolehmainen authored and GitHub committed 2021-08-10 13:26:14 +03:00
1 parent 476aa74101
commit 58a446bd45
250 files changed
+1244 -644

No files matched your search

@@ -32,7 +32,7 @@ import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"
import { podsStore } from "../+workloads-pods/pods.store";
import { statefulSetStore } from "./statefulset.store";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { getMetricsForStatefulSets, IPodMetrics, StatefulSet } from "../../api/endpoints";
import { getMetricsForStatefulSets, IPodMetrics, StatefulSet } 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,8 +21,7 @@
import "@testing-library/jest-dom/extend-expect";
jest.mock("../../api/endpoints");
import { StatefulSet, statefulSetApi } from "../../api/endpoints";
import { StatefulSet, StatefulSetApi } from "../../../common/k8s-api/endpoints";
import { StatefulSetScaleDialog } from "./statefulset-scale-dialog";
import { render, waitFor, fireEvent } from "@testing-library/react";
import React from "react";
@@ -121,8 +120,16 @@ const dummyStatefulSet: StatefulSet = {
};
describe("<StatefulSetScaleDialog />", () => {
let statefulSetApi: StatefulSetApi;
beforeEach(() => {
statefulSetApi = new StatefulSetApi({
objectConstructor: StatefulSet
});
});
it("renders w/o errors", () => {
const { container } = render(<StatefulSetScaleDialog/>);
const { container } = render(<StatefulSetScaleDialog statefulSetApi={statefulSetApi} />);
expect(container).toBeInstanceOf(HTMLElement);
});
@@ -133,7 +140,7 @@ describe("<StatefulSetScaleDialog />", () => {
const initReplicas = 1;
statefulSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas);
const { getByTestId } = render(<StatefulSetScaleDialog/>);
const { getByTestId } = render(<StatefulSetScaleDialog statefulSetApi={statefulSetApi} />);
StatefulSetScaleDialog.open(dummyStatefulSet);
// we need to wait for the StatefulSetScaleDialog to show up
@@ -153,7 +160,7 @@ describe("<StatefulSetScaleDialog />", () => {
const initReplicas = 1;
statefulSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas);
const component = render(<StatefulSetScaleDialog/>);
const component = render(<StatefulSetScaleDialog statefulSetApi={statefulSetApi} />);
StatefulSetScaleDialog.open(dummyStatefulSet);
await waitFor(async () => {
@@ -21,7 +21,7 @@
import "./statefulset-scale-dialog.scss";
import { StatefulSet, statefulSetApi } from "../../api/endpoints";
import { StatefulSet, StatefulSetApi, statefulSetApi } from "../../../common/k8s-api/endpoints";
import React, { Component } from "react";
import { computed, makeObservable, observable } from "mobx";
import { observer } from "mobx-react";
@@ -33,6 +33,7 @@ import { Notifications } from "../notifications";
import { cssNames } from "../../utils";
interface Props extends Partial<DialogProps> {
statefulSetApi: StatefulSetApi
}
const dialogState = observable.object({
@@ -42,6 +43,9 @@ const dialogState = observable.object({
@observer
export class StatefulSetScaleDialog extends Component<Props> {
static defaultProps = {
statefulSetApi
};
@observable ready = false;
@observable currentReplicas = 0;
@observable desiredReplicas = 0;
@@ -71,7 +75,7 @@ export class StatefulSetScaleDialog extends Component<Props> {
onOpen = async () => {
const { statefulSet } = this;
this.currentReplicas = await statefulSetApi.getReplicas({
this.currentReplicas = await this.props.statefulSetApi.getReplicas({
namespace: statefulSet.getNs(),
name: statefulSet.getName(),
});
@@ -102,7 +106,7 @@ export class StatefulSetScaleDialog extends Component<Props> {
try {
if (currentReplicas !== desiredReplicas) {
await statefulSetApi.scale({
await this.props.statefulSetApi.scale({
name: statefulSet.getName(),
namespace: statefulSet.getNs(),
}, desiredReplicas);
@@ -21,9 +21,9 @@
import { makeObservable } from "mobx";
import { podsStore } from "../+workloads-pods/pods.store";
import { apiManager } from "../../api/api-manager";
import { PodStatus, StatefulSet, statefulSetApi } from "../../api/endpoints";
import { KubeObjectStore } from "../../kube-object.store";
import { apiManager } from "../../../common/k8s-api/api-manager";
import { PodStatus, StatefulSet, statefulSetApi } from "../../../common/k8s-api/endpoints";
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
import { autoBind } from "../../utils";
export class StatefulSetStore extends KubeObjectStore<StatefulSet> {
@@ -24,7 +24,7 @@ import "./statefulsets.scss";
import React from "react";
import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router";
import type { StatefulSet } from "../../api/endpoints";
import type { StatefulSet } from "../../../common/k8s-api/endpoints";
import { podsStore } from "../+workloads-pods/pods.store";
import { statefulSetStore } from "./statefulset.store";
import { nodesStore } from "../+nodes/nodes.store";