Skip to content

Commit

Permalink
Gate Control Plane health in IBM cloud
Browse files Browse the repository at this point in the history
  • Loading branch information
rawagner committed May 13, 2020
1 parent 4767867 commit cc66098
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 15 deletions.
1 change: 1 addition & 0 deletions frontend/packages/console-app/src/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ const plugin: Plugin<ConsumedExtensions> = [
'./components/dashboards-page/ControlPlaneStatus' /* webpackChunkName: "console-app" */
).then((m) => m.default),
popupTitle: 'Control Plane status',
disallowedProviders: ['IBMCloud'],
},
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ namespace ExtensionProperties {
* Popup title
*/
popupTitle?: string;

/**
* Cloud providers which for which the subsystem should be hidden.
*/
disallowedProviders?: string[];
}

export interface DashboardsOverviewHealthResourceSubsystem<R extends ResourcesObject>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,32 @@ import { DetailsCard } from './details-card';
import { InventoryCard } from './inventory-card';
import { UtilizationCard } from './utilization-card';
import { ActivityCard } from './activity-card';
import { useK8sGet } from '../../../utils/k8s-get-hook';
import { InfrastructureModel } from '../../../../models';
import { K8sResourceKind } from '../../../../module/k8s';
import { ClusterDashboardContext } from './context';

const mainCards = [{ Card: StatusCard }, { Card: UtilizationCard }];
const leftCards = [{ Card: DetailsCard }, { Card: InventoryCard }];
const rightCards = [{ Card: ActivityCard }];

export const ClusterDashboard: React.FC<{}> = () => {
const mainCards = [{ Card: StatusCard }, { Card: UtilizationCard }];
const leftCards = [{ Card: DetailsCard }, { Card: InventoryCard }];
const rightCards = [{ Card: ActivityCard }];
const [infrastructure, infrastructureLoaded, infrastructureError] = useK8sGet<K8sResourceKind>(
InfrastructureModel,
'cluster',
);

const context = {
infrastructure,
infrastructureLoaded,
infrastructureError,
};

return (
<Dashboard>
<DashboardGrid mainCards={mainCards} leftCards={leftCards} rightCards={rightCards} />
</Dashboard>
<ClusterDashboardContext.Provider value={context}>
<Dashboard>
<DashboardGrid mainCards={mainCards} leftCards={leftCards} rightCards={rightCards} />
</Dashboard>
</ClusterDashboardContext.Provider>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as React from 'react';
import { K8sResourceKind } from '../../../../module/k8s';

export const ClusterDashboardContext = React.createContext<ClusterDashboardContext>({
infrastructureLoaded: true,
infrastructureError: null,
});

type ClusterDashboardContext = {
infrastructure?: K8sResourceKind;
infrastructureLoaded: boolean;
infrastructureError: any;
};
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import DetailsBody from '@console/shared/src/components/dashboard/details-card/D
import DetailItem from '@console/shared/src/components/dashboard/details-card/DetailItem';
import DashboardCardLink from '@console/shared/src/components/dashboard/dashboard-card/DashboardCardLink';
import { DashboardItemProps, withDashboardResources } from '../../with-dashboard-resources';
import { InfrastructureModel, ClusterVersionModel } from '../../../../models';
import { ClusterVersionModel } from '../../../../models';
import {
referenceForModel,
getOpenShiftVersion,
Expand All @@ -24,15 +24,14 @@ import {
getClusterVersionChannel,
ClusterUpdateStatus,
getOCMLink,
K8sResourceKind,
} from '../../../../module/k8s';
import { flagPending, featureReducerName } from '../../../../reducers/features';
import { ExternalLink } from '../../../utils';
import { RootState } from '../../../../redux';
import { clusterUpdateModal } from '../../../modals';
import { Link } from 'react-router-dom';
import { useK8sGet } from '../../../utils/k8s-get-hook';
import { useK8sWatchResource, WatchK8sResource } from '../../../utils/k8s-watch-hook';
import { ClusterDashboardContext } from './context';

const ClusterVersion: React.FC<ClusterVersionProps> = ({ cv }) => {
const desiredVersion = getDesiredClusterVersion(cv);
Expand Down Expand Up @@ -91,14 +90,12 @@ const mapStateToProps = (state: RootState) => ({

export const DetailsCard_ = connect(mapStateToProps)(
({ watchK8sResource, stopWatchK8sResource, openshiftFlag }: DetailsCardProps) => {
const { infrastructure, infrastructureLoaded, infrastructureError } = React.useContext(
ClusterDashboardContext,
);
const [k8sVersion, setK8sVersion] = React.useState<Response>();
const [k8sVersionError, setK8sVersionError] = React.useState();

const [infrastructure, infrastructureLoaded, infrastructureError] = useK8sGet<K8sResourceKind>(
InfrastructureModel,
'cluster',
);

const [clusterVersionData, clusterVersionLoaded, clusterVersionError] = useK8sWatchResource<
ClusterVersionKind
>(clusterVersionResource);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
} from '@console/plugin-sdk';
import { ArrowCircleUpIcon } from '@patternfly/react-icons';
import { Gallery, GalleryItem, Button } from '@patternfly/react-core';
import { FLAGS } from '@console/shared';
import { FLAGS, getInfrastructurePlatform } from '@console/shared';
import DashboardCard from '@console/shared/src/components/dashboard/dashboard-card/DashboardCard';
import DashboardCardBody from '@console/shared/src/components/dashboard/dashboard-card/DashboardCardBody';
import DashboardCardHeader from '@console/shared/src/components/dashboard/dashboard-card/DashboardCardHeader';
Expand Down Expand Up @@ -45,6 +45,7 @@ import {
} from './health-item';
import { WatchK8sResource, useK8sWatchResource } from '../../../utils/k8s-watch-hook';
import { useFlag } from '@console/shared/src/hooks/flag';
import { ClusterDashboardContext } from './context';

const filterSubsystems = (
subsystems: DashboardsOverviewHealthSubsystem[],
Expand Down Expand Up @@ -132,6 +133,7 @@ export const StatusCard = connect<StatusCardProps>(mapStateToProps)(({ k8sModels
() => subsystems.findIndex(isDashboardsOverviewHealthOperator),
[subsystems],
);
const { infrastructure, infrastructureLoaded } = React.useContext(ClusterDashboardContext);

const healthItems: { title: string; Component: React.ReactNode }[] = [];
subsystems.forEach((subsystem) => {
Expand All @@ -141,6 +143,14 @@ export const StatusCard = connect<StatusCardProps>(mapStateToProps)(({ k8sModels
Component: <URLHealthItem subsystem={subsystem.properties} models={k8sModels} />,
});
} else if (isDashboardsOverviewHealthPrometheusSubsystem(subsystem)) {
const { disallowedProviders } = subsystem.properties;
if (
disallowedProviders?.length &&
(!infrastructureLoaded ||
disallowedProviders.includes(getInfrastructurePlatform(infrastructure)))
) {
return;
}
healthItems.push({
title: subsystem.properties.title,
Component: <PrometheusHealthItem subsystem={subsystem.properties} models={k8sModels} />,
Expand Down

0 comments on commit cc66098

Please sign in to comment.