Skip to content

Commit

Permalink
Stop events related to Object Storage from showing up in Persistent S…
Browse files Browse the repository at this point in the history
…torage Dashboard
  • Loading branch information
bipuladh committed Feb 5, 2021
1 parent 79c6d11 commit efaa039
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 +11,26 @@ import {
PersistentVolumeClaimKind,
} from '@console/internal/module/k8s';
import { FirehoseResult } from '@console/internal/components/utils';
import { PersistentVolumeClaimModel } from '@console/internal/models';
import ActivityBody, {
RecentEventsBody,
OngoingActivityBody,
} from '@console/shared/src/components/dashboard/activity-card/ActivityBody';
import { PrometheusResponse } from '@console/internal/components/graphs';
import {
getNamespace,
getAnnotations,
isCephProvisioner,
getName,
useDeepCompareMemoize,
} from '@console/shared';
import { getAnnotations, isCephProvisioner, getName, useDeepCompareMemoize } from '@console/shared';
import {
DashboardItemProps,
withDashboardResources,
} from '@console/internal/components/dashboard/with-dashboard-resources';
import { SubscriptionKind } from '@console/operator-lifecycle-manager';
import {
CEPH_STORAGE_NAMESPACE,
OCS_OPERATOR,
PVC_PROVISIONER_ANNOTATION,
} from '../../../../constants/index';
import { OCS_OPERATOR, PVC_PROVISIONER_ANNOTATION } from '../../../../constants/index';
import { DATA_RESILIENCY_QUERY, StorageDashboardQuery } from '../../../../constants/queries';
import {
pvcResource,
subscriptionResource,
storageClusterResource,
eventsResource,
} from '../../../../constants/resources';
import { getResiliencyProgress } from '../../../../utils';
import { getResiliencyProgress, isPersistentStorageEvent } from '../../../../utils';
import { isClusterExpandActivity, ClusterExpandActivity } from './cluster-expand-activity';
import { isOCSUpgradeActivity, OCSUpgradeActivity } from './ocs-upgrade-activity';
import './activity-card.scss';
Expand All @@ -67,25 +56,17 @@ const RecentEvent = withDashboardResources(
.map(getName);
const memoizedPVCNames = useDeepCompareMemoize(validPVC, true);

const ocsEventNamespaceKindFilter = (event: EventKind): boolean => {
const eventKind = event?.involvedObject?.kind;
const eventNamespace = getNamespace(event);
const eventObjectName = event?.involvedObject?.name;
return eventKind === PersistentVolumeClaimModel.kind
? memoizedPVCNames.includes(eventObjectName)
: eventNamespace === CEPH_STORAGE_NAMESPACE;
};
const ocsEventsFilter = React.useCallback(isPersistentStorageEvent(memoizedPVCNames), [
memoizedPVCNames,
]);

const events = {
...resources.events,
loaded: resources?.events?.loaded && resources?.pvcs?.loaded,
};

return (
<RecentEventsBody
events={events as FirehoseResult<EventKind[]>}
filter={ocsEventNamespaceKindFilter}
/>
<RecentEventsBody events={events as FirehoseResult<EventKind[]>} filter={ocsEventsFilter} />
);
},
);
Expand Down
70 changes: 70 additions & 0 deletions frontend/packages/ceph-storage-plugin/src/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,73 @@ export const CephObjectStoreModel: K8sKind = {
id: 'cephobjectstores',
crd: true,
};

export const NooBaaSystemModel: K8sKind = {
label: 'NooBaa System',
labelPlural: 'NooBaa Systems',
apiVersion: 'v1alpha1',
apiGroup: 'noobaa.io',
plural: 'noobaas',
abbr: 'NB',
namespaced: true,
kind: 'NooBaa',
id: 'noobaasystem',
crd: true,
legacyPluralURL: true,
};

export const NooBaaBackingStoreModel: K8sKind = {
label: 'Backing Store',
labelPlural: 'Backing Stores',
apiVersion: 'v1alpha1',
apiGroup: 'noobaa.io',
plural: 'backingstores',
abbr: 'NBS',
namespaced: true,
kind: 'BackingStore',
id: 'noobaabackingstore',
crd: true,
legacyPluralURL: true,
};

export const NooBaaBucketClassModel: K8sKind = {
label: 'Bucket Class',
labelPlural: 'Bucket Classes',
apiVersion: 'v1alpha1',
apiGroup: 'noobaa.io',
plural: 'bucketclasses',
abbr: 'NBC',
namespaced: true,
kind: 'BucketClass',
id: 'noobaabucketclasses',
crd: true,
legacyPluralURL: true,
};

export const NooBaaObjectBucketClaimModel: K8sKind = {
label: 'Object Bucket Claim',
labelPlural: 'Object Bucket Claims',
apiVersion: 'v1alpha1',
apiGroup: 'objectbucket.io',
plural: 'objectbucketclaims',
abbr: 'OBC',
namespaced: true,
kind: 'ObjectBucketClaim',
id: 'objectbucketclaims',
crd: true,
legacyPluralURL: true,
};

export const NooBaaObjectBucketModel: K8sKind = {
label: 'Object Bucket',
labelPlural: 'Object Buckets',
apiVersion: 'v1alpha1',
apiGroup: 'objectbucket.io',
plural: 'objectbuckets',
abbr: 'OB',
namespaced: false,
kind: 'ObjectBucket',
id: 'objectbucket',
crd: true,
legacyPluralURL: true,
};
36 changes: 36 additions & 0 deletions frontend/packages/ceph-storage-plugin/src/utils/events.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import * as _ from 'lodash';
import { EventKind } from '@console/internal/module/k8s';
import { PodModel, StatefulSetModel, PersistentVolumeClaimModel } from '@console/internal/models';
import { getNamespace } from '@console/shared/src/selectors/common';
import {
NooBaaBackingStoreModel,
NooBaaBucketClassModel,
NooBaaObjectBucketClaimModel,
CephObjectStoreModel,
} from '../models';
import { CEPH_STORAGE_NAMESPACE } from '../constants';

export const isObjectStorageEvent = (event: EventKind): boolean => {
const eventKind: string = event?.involvedObject?.kind;
const objectStorageResources = [
NooBaaBackingStoreModel.kind,
NooBaaBucketClassModel.kind,
NooBaaObjectBucketClaimModel.kind,
CephObjectStoreModel.kind,
];
if (eventKind === PodModel.kind || eventKind === StatefulSetModel.kind) {
const eventName: string = event?.involvedObject?.name;
return _.startsWith(eventName, 'noobaa') || eventName.includes('rgw');
}
return objectStorageResources.includes(eventKind);
};

export const isPersistentStorageEvent = (pvcs: string[]) => (event: EventKind): boolean => {
if (isObjectStorageEvent(event)) return false;
const eventKind = event?.involvedObject?.kind;
const eventNamespace = getNamespace(event);
const eventObjectName = event?.involvedObject?.name;
return eventKind === PersistentVolumeClaimModel.kind
? pvcs.includes(eventObjectName)
: eventNamespace === CEPH_STORAGE_NAMESPACE;
};
1 change: 1 addition & 0 deletions frontend/packages/ceph-storage-plugin/src/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from './dashboard';
export * from './events';
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import * as React from 'react';
import { useTranslation } from 'react-i18next';
import * as _ from 'lodash';
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';
import DashboardCardTitle from '@console/shared/src/components/dashboard/dashboard-card/DashboardCardTitle';
import { EventKind, K8sResourceKind } from '@console/internal/module/k8s';
import { FirehoseResource, FirehoseResult } from '@console/internal/components/utils';
import { EventModel, StatefulSetModel, PodModel } from '@console/internal/models';
import { EventModel } from '@console/internal/models';
import ActivityBody, {
RecentEventsBody,
OngoingActivityBody,
Expand All @@ -17,42 +16,20 @@ import {
DashboardItemProps,
withDashboardResources,
} from '@console/internal/components/dashboard/with-dashboard-resources';
import { getResiliencyProgress } from '@console/ceph-storage-plugin/src/utils';
import { CephObjectStoreModel } from '@console/ceph-storage-plugin/src/models';
import {
getResiliencyProgress,
isObjectStorageEvent,
} from '@console/ceph-storage-plugin/src/utils';
import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';
import { useFlag } from '@console/shared/src/hooks/flag';
import { RGW_FLAG } from '@console/ceph-storage-plugin/src/features';
import { dataResiliencyQueryMap, ObjectServiceDashboardQuery } from '../../queries';
import {
NooBaaBackingStoreModel,
NooBaaBucketClassModel,
NooBaaObjectBucketClaimModel,
} from '../../models';
import { secretResource } from '../../constants';
import { decodeRGWPrefix } from '../../utils';
import './activity-card.scss';

const eventsResource: FirehoseResource = { isList: true, kind: EventModel.kind, prop: 'events' };

const isObjectStorageEvent = (event: EventKind): boolean => {
const eventName: string = event?.involvedObject?.name;
return _.startsWith(eventName, 'noobaa') || eventName.includes('rgw');
};

const objectStorageEventsFilter = (event: EventKind): boolean => {
const eventKind: string = event?.involvedObject?.kind;
const objectStorageResources = [
NooBaaBackingStoreModel.kind,
NooBaaBucketClassModel.kind,
NooBaaObjectBucketClaimModel.kind,
CephObjectStoreModel.kind,
];
if (eventKind === PodModel.kind || eventKind === StatefulSetModel.kind) {
return isObjectStorageEvent(event);
}
return objectStorageResources.includes(eventKind);
};

const RecentEvent = withDashboardResources(
({ watchK8sResource, stopWatchK8sResource, resources }: DashboardItemProps) => {
React.useEffect(() => {
Expand All @@ -64,7 +41,7 @@ const RecentEvent = withDashboardResources(
return (
<RecentEventsBody
events={resources.events as FirehoseResult<EventKind[]>}
filter={objectStorageEventsFilter}
filter={isObjectStorageEvent}
/>
);
},
Expand Down
1 change: 1 addition & 0 deletions frontend/packages/noobaa-storage-plugin/src/models.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { K8sKind } from '@console/internal/module/k8s';

// Todo(bipuladh): Remove this file in 4.8
export const NooBaaSystemModel: K8sKind = {
label: 'NooBaa System',
labelPlural: 'NooBaa Systems',
Expand Down
9 changes: 0 additions & 9 deletions frontend/packages/noobaa-storage-plugin/src/plugin.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import * as _ from 'lodash';
import {
DashboardsCard,
DashboardsTab,
ModelDefinition,
ModelFeatureFlag,
Plugin,
ResourceClusterNavItem,
Expand All @@ -23,7 +21,6 @@ import { getObcStatusGroups } from './components/buckets-card/utils';

type ConsumedExtensions =
| ModelFeatureFlag
| ModelDefinition
| DashboardsTab
| DashboardsCard
| ResourceNSNavItem
Expand All @@ -38,12 +35,6 @@ type ConsumedExtensions =
const NOOBAA_FLAG = 'NOOBAA';

const plugin: Plugin<ConsumedExtensions> = [
{
type: 'ModelDefinition',
properties: {
models: _.values(models),
},
},
{
type: 'Page/Route',
properties: {
Expand Down

0 comments on commit efaa039

Please sign in to comment.