Skip to content

Commit

Permalink
PVC label selector causes infinite blinking when applying DRPolicy
Browse files Browse the repository at this point in the history
Signed-off-by: Gowtham Shanmugasundaram <[email protected]>
  • Loading branch information
GowthamShanmugam authored and openshift-cherrypick-robot committed Feb 25, 2025
1 parent 0b44948 commit f1b9d93
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 20 deletions.
2 changes: 1 addition & 1 deletion locales/en/plugin__odf-console.json
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@
"Select the subscriptions groups you wish to replicate via": "Select the subscriptions groups you wish to replicate via",
"Enroll managed application": "Enroll managed application",
"Manage disaster recovery": "Manage disaster recovery",
"<0>Application:</0> {getName(applicaitonInfo)} (Namespace: {getNamespace(applicaitonInfo)})": "<0>Application:</0> {getName(applicaitonInfo)} (Namespace: {getNamespace(applicaitonInfo)})",
"<0>Application:</0> {getName(applicationInfo)} (Namespace: {getNamespace(applicationInfo)})": "<0>Application:</0> {getName(applicationInfo)} (Namespace: {getNamespace(applicationInfo)})",
"Assign policy nav": "Assign policy nav",
"Assign policy content": "Assign policy content",
"Labels must start and end with an alphanumeric character, can consist of lower-case letters, numbers, dots (.), hyphens (-), forward slash (/), underscore(_) and equal to (=)": "Labels must start and end with an alphanumeric character, can consist of lower-case letters, numbers, dots (.), hyphens (-), forward slash (/), underscore(_) and equal to (=)",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
import { ApplicationType, DRInfoType, DRPolicyType } from './utils/types';

export const ModalContextViewer: React.FC<ModalContextViewerProps> = ({
applicaitonInfo,
applicationInfo,
state,
matchingPolicies,
dispatch,
Expand Down Expand Up @@ -47,13 +47,13 @@ export const ModalContextViewer: React.FC<ModalContextViewerProps> = ({
<>
{state.modalViewContext === ModalViewContext.MANAGE_POLICY_VIEW && (
<ManagePolicyView
drInfo={applicaitonInfo?.drInfo as DRInfoType}
workloadNamespace={applicaitonInfo?.workloadNamespace}
drInfo={applicationInfo?.drInfo as DRInfoType}
workloadNamespace={applicationInfo?.workloadNamespace}
eligiblePolicies={matchingPolicies}
isSubscriptionAppType={
applicaitonInfo?.type === DRApplication.SUBSCRIPTION
applicationInfo?.type === DRApplication.SUBSCRIPTION
}
unProtectedPlacementCount={applicaitonInfo?.placements?.length}
unProtectedPlacementCount={applicationInfo?.placements?.length}
dispatch={dispatch}
setModalContext={setModalContext}
setModalActionContext={setModalActionContext}
Expand All @@ -64,7 +64,7 @@ export const ModalContextViewer: React.FC<ModalContextViewerProps> = ({
)}
{state.modalViewContext === ModalViewContext.ASSIGN_POLICY_VIEW && (
<AssignPolicyView
applicaitonInfo={applicaitonInfo}
applicationInfo={applicationInfo}
matchingPolicies={matchingPolicies}
state={state.assignPolicyView}
modalActionContext={state.modalActionContext}
Expand All @@ -78,7 +78,7 @@ export const ModalContextViewer: React.FC<ModalContextViewerProps> = ({
};

export const AppManagePoliciesModal: React.FC<AppManagePoliciesModalProps> = ({
applicaitonInfo,
applicationInfo,
matchingPolicies,
loaded,
loadError,
Expand All @@ -102,8 +102,8 @@ export const AppManagePoliciesModal: React.FC<AppManagePoliciesModalProps> = ({
loaded &&
!loadError && (
<Trans t={t}>
<strong>Application:</strong> {getName(applicaitonInfo)} (Namespace:{' '}
{getNamespace(applicaitonInfo)})
<strong>Application:</strong> {getName(applicationInfo)} (Namespace:{' '}
{getNamespace(applicationInfo)})
</Trans>
)
}
Expand All @@ -114,7 +114,7 @@ export const AppManagePoliciesModal: React.FC<AppManagePoliciesModalProps> = ({
onClose={close}
>
<ModalContextViewer
applicaitonInfo={applicaitonInfo}
applicationInfo={applicationInfo}
matchingPolicies={matchingPolicies}
state={state}
dispatch={dispatch}
Expand All @@ -126,7 +126,7 @@ export const AppManagePoliciesModal: React.FC<AppManagePoliciesModalProps> = ({
};

type AppManagePoliciesModalProps = {
applicaitonInfo: ApplicationType;
applicationInfo: ApplicationType;
matchingPolicies: DRPolicyType[];
loaded: boolean;
loadError: any;
Expand All @@ -136,7 +136,7 @@ type AppManagePoliciesModalProps = {

type ModalContextViewerProps = {
state: ManagePolicyState;
applicaitonInfo: ApplicationType;
applicationInfo: ApplicationType;
matchingPolicies: DRPolicyType[];
dispatch: React.Dispatch<ManagePolicyStateAction>;
loaded: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export const createSteps = (

export const AssignPolicyView: React.FC<AssignPolicyViewProps> = ({
state,
applicaitonInfo,
applicationInfo,
matchingPolicies,
modalActionContext,
setModalContext,
Expand All @@ -133,7 +133,7 @@ export const AssignPolicyView: React.FC<AssignPolicyViewProps> = ({
workloadNamespace,
placements: unProtectedPlacements,
drInfo,
} = applicaitonInfo;
} = applicationInfo;

const protectedPVCSelectors: PVCSelectorType[] = isEditMode
? (drInfo as DRInfoType)?.placementControlInfo?.map((drpc) => ({
Expand All @@ -150,7 +150,7 @@ export const AssignPolicyView: React.FC<AssignPolicyViewProps> = ({

const onSubmit = async () => {
// assign DRPolicy
const promises = assignPromises(state, applicaitonInfo.placements);
const promises = assignPromises(state, applicationInfo.placements);
await Promise.all(promises)
.then(() => {
setModalActionContext(
Expand Down Expand Up @@ -212,7 +212,7 @@ export const AssignPolicyView: React.FC<AssignPolicyViewProps> = ({

type AssignPolicyViewProps = {
state: AssignPolicyViewState;
applicaitonInfo: ApplicationType;
applicationInfo: ApplicationType;
matchingPolicies: DRPolicyType[];
modalActionContext: ModalActionContext;
dispatch: React.Dispatch<ManagePolicyStateAction>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
getRemoteNamespaceFromAppSet,
findDeploymentClusters,
} from '@odf/mco/utils';
import { useDeepCompareMemoize } from '@odf/shared';
import { getNamespace } from '@odf/shared/selectors';
import * as _ from 'lodash-es';
import { AppManagePoliciesModal } from '../app-manage-policies-modal';
Expand Down Expand Up @@ -99,7 +100,12 @@ export const ApplicationSetParser: React.FC<ApplicationSetParserProps> = ({
drLoadError
)
);
const appSetResource = appSetResources?.formattedResources?.[0];

// Perform deep comparison to prevent unnecessary re-renders
const appSetResource = useDeepCompareMemoize(
appSetResources?.formattedResources?.[0]
);

const { drPolicies } = drResources;

const applicationInfo: ApplicationInfoType = React.useMemo(() => {
Expand Down Expand Up @@ -141,7 +147,7 @@ export const ApplicationSetParser: React.FC<ApplicationSetParserProps> = ({

return (
<AppManagePoliciesModal
applicaitonInfo={applicationInfo as ApplicationType}
applicationInfo={applicationInfo as ApplicationType}
matchingPolicies={matchingPolicies}
loaded={loaded}
loadError={loadError}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ export const SubscriptionParser: React.FC<SubscriptionParserProps> = ({

return (
<AppManagePoliciesModal
applicaitonInfo={applicationInfo as ApplicationType}
applicationInfo={applicationInfo as ApplicationType}
matchingPolicies={matchingPolicies}
loaded={loaded}
loadError={loadError}
Expand Down

0 comments on commit f1b9d93

Please sign in to comment.