Skip to content

Commit

Permalink
Cleanup OverviewItem removing unecessary fields, retrieve data as nec…
Browse files Browse the repository at this point in the history
…essary
  • Loading branch information
jeff-phillips-18 committed Nov 13, 2020
1 parent 1bdcea4 commit 462f3da
Show file tree
Hide file tree
Showing 47 changed files with 786 additions and 1,054 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const PodRingSet: React.FC<PodRingSetProps> = ({ obj, path }) => {

const deploymentData = React.useMemo(() => {
return loaded && !loadError
? getPodData(obj, podData.pods, podData.current, podData.previous, podData.isRollingOut)
? getPodData({ ...podData, obj })
: { inProgressDeploymentData: null, completedDeploymentData: null };
}, [loadError, loaded, podData, obj]);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as React from 'react';
import { Button } from '@patternfly/react-core';
import { useExtensions, OverviewTabSection, LazyLoader } from '@console/plugin-sdk';
import { KnativeServiceOverviewItem } from '@console/knative-plugin/src/topology/topology-types';
import {
knativeServiceObj,
sampleKnativeRevisions,
Expand All @@ -13,11 +14,14 @@ jest.mock('@console/plugin-sdk/src/api/useExtensions', () => ({
useExtensions: jest.fn(),
}));
describe('usePluginsOverviewTabSection', () => {
let item: OverviewItem;
let item: KnativeServiceOverviewItem;
beforeEach(() => {
item = {
revisions: sampleKnativeRevisions.data,
obj: knativeServiceObj,
buildConfigs: [],
routes: [],
services: [],
} as OverviewItem;
});

Expand Down
22 changes: 1 addition & 21 deletions frontend/packages/console-shared/src/types/resource.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
import {
HorizontalPodAutoscalerKind,
K8sResourceKind,
PodKind,
} from '@console/internal/module/k8s';
import { HorizontalPodAutoscalerKind, K8sResourceKind } from '@console/internal/module/k8s';
import { DEPLOYMENT_STRATEGY } from '../constants';
import { PodControllerOverviewItem } from './pod';
import { ClusterServiceVersionKind } from '@console/operator-lifecycle-manager';
import { Alert } from '@console/internal/components/monitoring/types';

export type APIError = {
Expand All @@ -24,25 +18,11 @@ export type BuildConfigOverviewItem = K8sResourceKind & {
};

export type OverviewItem<T = K8sResourceKind> = {
current?: PodControllerOverviewItem;
isRollingOut?: boolean;
obj: T;
hpas?: HorizontalPodAutoscalerKind[];
pods?: PodKind[];
previous?: PodControllerOverviewItem;
status?: React.ReactNode;
ksroutes?: K8sResourceKind[];
configurations?: K8sResourceKind[];
ksservices?: K8sResourceKind[];
eventSources?: K8sResourceKind[];
revisions?: K8sResourceKind[];
isOperatorBackedService?: boolean;
isMonitorable?: boolean;
monitoringAlerts?: Alert[];
};

export type OperatorBackedServiceKindMap = {
[name: string]: ClusterServiceVersionKind;
};

export type DeploymentStrategy = DEPLOYMENT_STRATEGY.recreate | DEPLOYMENT_STRATEGY.rolling;
55 changes: 0 additions & 55 deletions frontend/packages/console-shared/src/utils/ResourceStatus.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,9 @@ describe('Pod Utils:', () => {
it('should return pods if there are no rolling strategy', () => {
const current: PodControllerOverviewItem = { pods: [], alerts: {}, revision: 0, obj: {} };
const previous: PodControllerOverviewItem = { pods: [], alerts: {}, revision: 0, obj: {} };
expect(getPodData(statefulSets, allpods, current, previous, false)).toEqual({
expect(
getPodData({ obj: statefulSets, pods: allpods, current, previous, isRollingOut: false }),
).toEqual({
inProgressDeploymentData: null,
completedDeploymentData: allpods,
});
Expand All @@ -80,7 +82,9 @@ describe('Pod Utils:', () => {
phase: 'Complete',
};
const previous: PodControllerOverviewItem = { pods: allpods, alerts: {}, revision: 0, obj: {} };
expect(getPodData(deploymentConfig, allpods, current, previous, false)).toEqual({
expect(
getPodData({ obj: deploymentConfig, pods: allpods, current, previous, isRollingOut: false }),
).toEqual({
inProgressDeploymentData: null,
completedDeploymentData: [],
});
Expand All @@ -94,7 +98,9 @@ describe('Pod Utils:', () => {
obj: {},
};
const previous: PodControllerOverviewItem = { pods: allpods, alerts: {}, revision: 0, obj: {} };
expect(getPodData(deploymentConfig, allpods, current, previous, true)).toEqual({
expect(
getPodData({ obj: deploymentConfig, pods: allpods, current, previous, isRollingOut: true }),
).toEqual({
inProgressDeploymentData: [],
completedDeploymentData: allpods,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import {
MockResources,
sampleDeploymentConfigs,
sampleDeployments,
sampleStatefulSets,
sampleDaemonSets,
} from '@console/dev-console/src/components/topology/__tests__/topology-test-data';
import {
getKnativeServingRevisions,
Expand All @@ -17,16 +15,9 @@ import {
sampleKnativeDeployments,
MockKnativeResources,
} from '@console/knative-plugin/src/topology/__tests__/topology-knative-test-data';
import { DaemonSetModel, StatefulSetModel } from '@console/internal/models';
import { K8sResourceKind } from '@console/internal/module/k8s';
import { Alert } from '@console/internal/components/monitoring/types';
import {
createDeploymentConfigItems,
createOverviewItemsForType,
createPodItems,
createWorkloadItems,
getWorkloadMonitoringAlerts,
} from '../resource-utils';
import { createOverviewItemsForType, getWorkloadMonitoringAlerts } from '../resource-utils';
import { mockAlerts } from '../__mocks__/alerts-and-rules-data';

declare global {
Expand Down Expand Up @@ -69,151 +60,100 @@ expect.extend({
});

enum Keys {
CURRENT = 'current',
ROLLINGOUT = 'isRollingOut',
OBJ = 'obj',
PODS = 'pods',
PREVIOUS = 'previous',
STATUS = 'status',
REVISIONS = 'revisions',
KNATIVECONFIGS = 'configurations',
KSROUTES = 'ksroutes',
}

const podKeys = [Keys.OBJ, Keys.STATUS];
const dsAndSSKeys = [...podKeys, Keys.PODS];
const dcKeys = [...dsAndSSKeys, Keys.CURRENT, Keys.ROLLINGOUT, Keys.PREVIOUS];
const knativeKeys = [...dcKeys, Keys.REVISIONS, Keys.KNATIVECONFIGS, Keys.KSROUTES];
const knativeKeys = [Keys.REVISIONS, Keys.KNATIVECONFIGS, Keys.KSROUTES];

describe('TransformResourceData', () => {
it('should create Deployment config Items for a provided dc', () => {
const transformedData = createDeploymentConfigItems(
sampleDeploymentConfigs.data,
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(2);
expect(transformedData[0]).toHaveProperties(dcKeys);
});

it('should only have keys mentions in dcKeys for created Deployment config Items for a provided dc', () => {
const transformedData = createDeploymentConfigItems(
sampleDeploymentConfigs.data,
it('should create Deployment config Items', () => {
const transformedData = createOverviewItemsForType(
'deploymentConfigs',
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(2);
expect(transformedData[0]).not.toHaveProperties([...dcKeys, 'revisions']);
expect(transformedData[0].obj).toEqual(sampleDeploymentConfigs.data[0]);
expect(transformedData[0].isMonitorable).toBeTruthy();
expect(transformedData[0].monitoringAlerts).toHaveLength(0);
expect(transformedData[1].obj).toEqual(sampleDeploymentConfigs.data[1]);
expect(transformedData[1].isMonitorable).toBeTruthy();
expect(transformedData[1].monitoringAlerts).toHaveLength(0);
expect(transformedData[0]).not.toHaveProperties(knativeKeys);
});

it('should create Deployment Items for a provided deployment', () => {
const transformedData = createDeploymentConfigItems(
sampleDeployments.data,
it('should create Deployment Items', () => {
const transformedData = createOverviewItemsForType(
'deployments',
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(3);
expect(transformedData[0]).toHaveProperties(dcKeys);
expect(transformedData[1]).toHaveProperties(dcKeys);
expect(transformedData[0].obj).toEqual(sampleDeployments.data[0]);
expect(transformedData[0].isMonitorable).toBeTruthy();
expect(transformedData[0].monitoringAlerts).toHaveLength(0);
expect(transformedData[0]).not.toHaveProperties(knativeKeys);
expect(transformedData[1].obj).toEqual(sampleDeployments.data[1]);
expect(transformedData[1].isMonitorable).toBeTruthy();
expect(transformedData[1].monitoringAlerts).toHaveLength(0);
expect(transformedData[1]).not.toHaveProperties(knativeKeys);
expect(transformedData[2].obj).toEqual(sampleDeployments.data[2]);
expect(transformedData[2].isMonitorable).toBeTruthy();
expect(transformedData[2].monitoringAlerts).toHaveLength(0);
expect(transformedData[2]).not.toHaveProperties(knativeKeys);
});

it('should create Knative Deployment Items for a provided deployment', () => {
const transformedData = createDeploymentConfigItems(
sampleKnativeDeployments.data,
MockKnativeResources,
const transformedData = createOverviewItemsForType(
'deployments',
{ ...MockKnativeResources, deployments: sampleKnativeDeployments },
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(2);
expect(transformedData[0]).toHaveProperties(knativeKeys);
});

it('should only have keys mentions in KnativeKeys for created Deployment Items for a provided deployment', () => {
const transformedData = createDeploymentConfigItems(
sampleDeployments.data,
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(3);
expect(transformedData[0]).not.toHaveProperties([...knativeKeys, 'key']);
});

it('should create StatefulSets Items for a provided ss', () => {
const transformedData = createWorkloadItems(
StatefulSetModel,
sampleStatefulSets.data,
const transformedData = createOverviewItemsForType(
'statefulSets',
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(1);
expect(transformedData[0]).toHaveProperties(dsAndSSKeys);
});

it('should not have rc current or previous prop for created StatefulSets Items for a provided ss', () => {
const transformedData = createWorkloadItems(
StatefulSetModel,
sampleStatefulSets.data,
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(1);
expect(transformedData[0][Keys.CURRENT]).toBeUndefined();
expect(transformedData[0][Keys.PREVIOUS]).toBeUndefined();
expect(transformedData[0][Keys.ROLLINGOUT]).toBeUndefined();
expect(transformedData[0]).not.toHaveProperties(knativeKeys);
});

it('should create DaemonSets Items for a provided ds', () => {
const transformedData = createWorkloadItems(
DaemonSetModel,
sampleDaemonSets.data,
const transformedData = createOverviewItemsForType(
'daemonSets',
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(1);
expect(transformedData[0]).toHaveProperties(dsAndSSKeys);
expect(transformedData[0]).not.toHaveProperties(knativeKeys);
});

it('should not have rc current or previous prop for created DaemonSets Items for a provided ds', () => {
const transformedData = createWorkloadItems(
DaemonSetModel,
sampleDaemonSets.data,
it('should return only standalone pods', () => {
const transformedData = createOverviewItemsForType(
'pods',
MockResources,
knativeOverviewResourceUtils,
);
expect(transformedData).toHaveLength(1);
expect(transformedData[0][Keys.CURRENT]).toBeUndefined();
expect(transformedData[0][Keys.PREVIOUS]).toBeUndefined();
expect(transformedData[0][Keys.ROLLINGOUT]).toBeUndefined();
});

it('should return only pods and not replication controllers for a given resource', () => {
const transformedData = createPodItems(MockResources.pods.data, MockResources);
transformedData.forEach((element) => {
expect(element).toHaveProperties(podKeys);
});
});

it('should return pods and not replication controllers for a given resource', () => {
const transformedData = createOverviewItemsForType('pods', MockResources);
transformedData.forEach((element) => {
expect(element).not.toHaveProperties([...podKeys, 'current', 'previous']);
});
expect(transformedData[0]).not.toHaveProperties(knativeKeys);
});

it('should create standalone Job Items', () => {
const transformedData = createOverviewItemsForType('jobs', MockResources);
expect(transformedData).toHaveLength(1);
expect(transformedData[0][Keys.CURRENT]).toBeUndefined();
expect(transformedData[0][Keys.PREVIOUS]).toBeUndefined();
expect(transformedData[0][Keys.ROLLINGOUT]).toBeUndefined();
expect(transformedData[0]).not.toHaveProperties(knativeKeys);
});

it('should create CronJob Items', () => {
const transformedData = createOverviewItemsForType('cronJobs', MockResources);
expect(transformedData).toHaveLength(1);
expect(transformedData[0][Keys.CURRENT]).toBeUndefined();
expect(transformedData[0][Keys.PREVIOUS]).toBeUndefined();
expect(transformedData[0][Keys.ROLLINGOUT]).toBeUndefined();
expect(transformedData[0][Keys.PODS]).toHaveLength(2);
});

it('should return all the alerts related to a workload', () => {
Expand Down

0 comments on commit 462f3da

Please sign in to comment.