@@ -1372,7 +1372,9 @@ private void createPodDisruptionBudgetPolicy(
13721372 cluster .uuid );
13731373 return ;
13741374 }
1375- String pdbPolicyYaml = generatePDBPolicyYaml (universe , cluster , serverType );
1375+ // Get helm overrides to extract commonLabels
1376+ Map <String , Object > commonLabels = extractCommonLabelsFromHelmOverrides (cluster );
1377+ String pdbPolicyYaml = generatePDBPolicyYaml (universe , cluster , serverType , commonLabels );
13761378 PlacementInfo pi = cluster .placementInfo ;
13771379 boolean isReadOnlyCluster = cluster .clusterType == ClusterType .ASYNC ;
13781380 KubernetesPlacement placement = new KubernetesPlacement (pi , isReadOnlyCluster );
@@ -1402,7 +1404,10 @@ private void createPodDisruptionBudgetPolicy(
14021404 }
14031405
14041406 private String generatePDBPolicyYaml (
1405- Universe universe , UniverseDefinitionTaskParams .Cluster cluster , ServerType serverType ) {
1407+ Universe universe ,
1408+ UniverseDefinitionTaskParams .Cluster cluster ,
1409+ ServerType serverType ,
1410+ Map <String , Object > commonLabels ) {
14061411 Map <String , Object > policy = new HashMap <String , Object >();
14071412 policy .put ("apiVersion" , "policy/v1" );
14081413 policy .put ("kind" , "PodDisruptionBudget" );
@@ -1412,7 +1417,13 @@ private String generatePDBPolicyYaml(
14121417 universe .getName (),
14131418 cluster .clusterType .equals (ClusterType .PRIMARY ) ? "primary" : "replica" ,
14141419 serverType .name ().toLowerCase ());
1415- policy .put ("metadata" , ImmutableMap .of ("name" , policyName ));
1420+ Map <String , Object > metadata = new HashMap <>();
1421+ metadata .put ("name" , policyName );
1422+ // Add commonLabels to metadata if present
1423+ if (commonLabels != null && !commonLabels .isEmpty ()) {
1424+ metadata .put ("labels" , commonLabels );
1425+ }
1426+ policy .put ("metadata" , metadata );
14161427 policy .put ("spec" , createPDBSpec (cluster , universe , serverType ));
14171428 Yaml yaml = new Yaml ();
14181429 try {
@@ -1474,6 +1485,43 @@ private Optional<Object> createPDBMatchExpressions(
14741485 }
14751486 }
14761487
1488+ /**
1489+ * Extracts commonLabels from helm overrides. Similar to generateHelmOverride() in
1490+ * KubernetesCommandExecutor, this checks merged overrides which include provider, universe, and
1491+ * AZ-level overrides. Returns the first non-empty commonLabels found.
1492+ *
1493+ * @param cluster The cluster to extract commonLabels from
1494+ * @return Map of commonLabels, or empty map if not found
1495+ */
1496+ @ SuppressWarnings ("unchecked" )
1497+ private Map <String , Object > extractCommonLabelsFromHelmOverrides (
1498+ UniverseDefinitionTaskParams .Cluster cluster ) {
1499+ try {
1500+ // Get final overrides which merges provider, universe, and AZ overrides
1501+ // This follows the same precedence as generateHelmOverride() in KubernetesCommandExecutor:
1502+ // provider overrides -> universe overrides -> AZ overrides
1503+ Map <UUID , Map <String , Object >> finalOverrides =
1504+ KubernetesUtil .getFinalOverrides (
1505+ cluster , cluster .userIntent .universeOverrides , cluster .userIntent .azOverrides );
1506+
1507+ // Check merged overrides (which include provider, universe, and AZ overrides)
1508+ // The merged overrides follow the same precedence as generateHelmOverride()
1509+ if (finalOverrides != null && !finalOverrides .isEmpty ()) {
1510+ for (Map <String , Object > mergedOverrides : finalOverrides .values ()) {
1511+ if (mergedOverrides != null && mergedOverrides .containsKey ("commonLabels" )) {
1512+ Object commonLabelsObj = mergedOverrides .get ("commonLabels" );
1513+ if (commonLabelsObj instanceof Map ) {
1514+ return (Map <String , Object >) commonLabelsObj ;
1515+ }
1516+ }
1517+ }
1518+ }
1519+ } catch (Exception e ) {
1520+ log .warn ("Error extracting commonLabels from helm overrides: {}" , e .getMessage ());
1521+ }
1522+ return new HashMap <>();
1523+ }
1524+
14771525 public void checkOpentelemetryOperatorRunning () {
14781526 List <String > commandList =
14791527 ImmutableList .of ("kubectl" , "api-resources" , "--api-group=opentelemetry.io" );
0 commit comments