diff --git a/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx b/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx
index d930bc47de..1939437dde 100644
--- a/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx
+++ b/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx
@@ -46,12 +46,33 @@ const BridgePileCard = React.memo(function BridgePileCard({pile}: BridgePileCard
return ;
}, [pile.State]);
+ const renderBeingPromotedStatus = React.useCallback(() => {
+ const isBeingPromoted = pile.IsBeingPromoted;
+ const icon = isBeingPromoted ? CircleCheckFill : CircleXmarkFill;
+ const text = isBeingPromoted ? i18n('value_yes') : i18n('value_no');
+
+ return (
+
+
+ {text}
+
+ );
+ }, [pile.IsBeingPromoted]);
+
const info = React.useMemo(
() => [
{
name: i18n('field_primary'),
content: renderPrimaryStatus(),
},
+ {
+ name: i18n('field_being-promoted'),
+ content: renderBeingPromotedStatus(),
+ },
{
name: i18n('field_state'),
content: renderStateStatus(),
@@ -62,7 +83,7 @@ const BridgePileCard = React.memo(function BridgePileCard({pile}: BridgePileCard
pile.Nodes === undefined ? EMPTY_DATA_PLACEHOLDER : formatNumber(pile.Nodes),
},
],
- [renderPrimaryStatus, renderStateStatus, pile.Nodes],
+ [renderPrimaryStatus, renderBeingPromotedStatus, renderStateStatus, pile.Nodes],
);
return (
diff --git a/src/containers/Cluster/i18n/en.json b/src/containers/Cluster/i18n/en.json
index 8bdd168b47..57ad7248fa 100644
--- a/src/containers/Cluster/i18n/en.json
+++ b/src/containers/Cluster/i18n/en.json
@@ -22,6 +22,7 @@
"label_load": "Load",
"field_name": "Name",
"field_primary": "Primary",
+ "field_being-promoted": "Being Promoted",
"field_state": "State",
"field_nodes": "Nodes",
"value_yes": "Yes",
diff --git a/src/types/api/cluster.ts b/src/types/api/cluster.ts
index 675f2b8658..4c49245c88 100644
--- a/src/types/api/cluster.ts
+++ b/src/types/api/cluster.ts
@@ -106,6 +106,8 @@ export interface TBridgePile {
State?: string;
/** whether this pile is primary */
IsPrimary?: boolean;
+ /** whether this pile is being promoted to primary */
+ IsBeingPromoted?: boolean;
/** number of nodes in the pile */
Nodes?: number;
}
diff --git a/tests/suites/bridge/bridge.test.ts b/tests/suites/bridge/bridge.test.ts
index 0134e6cb60..35c4ca6211 100644
--- a/tests/suites/bridge/bridge.test.ts
+++ b/tests/suites/bridge/bridge.test.ts
@@ -120,6 +120,7 @@ test.describe('Bridge mode - Cluster Overview', () => {
const firstPileContent = await clusterPage.getFirstPileContent();
expect(firstPileContent).toContain('r1');
expect(firstPileContent).toContain('Yes'); // Primary status
+ expect(firstPileContent).toContain('No'); // Being Promoted status (false for first pile)
expect(firstPileContent).toContain('SYNCHRONIZED');
expect(firstPileContent).toContain('16'); // Nodes count
});
diff --git a/tests/suites/bridge/mocks.ts b/tests/suites/bridge/mocks.ts
index 888fc75436..1f61e53fc5 100644
--- a/tests/suites/bridge/mocks.ts
+++ b/tests/suites/bridge/mocks.ts
@@ -131,8 +131,22 @@ export const mockClusterWithBridgePiles = (page: Page) => {
NetworkWriteThroughput: '1445752',
BridgeInfo: {
Piles: [
- {PileId: 1, Name: 'r1', State: 'SYNCHRONIZED', IsPrimary: true, Nodes: 16},
- {PileId: 2, Name: 'r2', State: 'READY', IsPrimary: false, Nodes: 12},
+ {
+ PileId: 1,
+ Name: 'r1',
+ State: 'SYNCHRONIZED',
+ IsPrimary: true,
+ IsBeingPromoted: false,
+ Nodes: 16,
+ },
+ {
+ PileId: 2,
+ Name: 'r2',
+ State: 'READY',
+ IsPrimary: false,
+ IsBeingPromoted: true,
+ Nodes: 12,
+ },
],
},
}),