@@ -42,6 +42,7 @@ func (negotiator *ResourceNegotiator) SetSyncAllCustomResources(sync bool) {
42
42
func (negotiator * ResourceNegotiator ) NegotiateSyncResources (syncResources []clusterv1alpha2.ClusterGroupResources ) (* GroupResourceStatus , map [schema.GroupVersionResource ]syncConfig ) {
43
43
var syncAllResources bool
44
44
var watchKubeVersion , watchAggregatorResourceTypes bool
45
+ originSyncResources := syncResources
45
46
for i , syncResource := range syncResources {
46
47
if syncResource .Group == "*" {
47
48
syncAllResources = true
@@ -62,6 +63,7 @@ func (negotiator *ResourceNegotiator) NegotiateSyncResources(syncResources []clu
62
63
klog .InfoS ("Skip resource sync" , "cluster" , negotiator .name , "group" , syncResource .Group , "reason" , "not match group" )
63
64
} else {
64
65
syncResourcesByGroup .Versions = syncResource .Versions
66
+ syncResourcesByGroup .ExcludeResources = syncResource .ExcludeResources
65
67
syncResources [i ] = * syncResourcesByGroup
66
68
if groupType == discovery .KubeResource {
67
69
watchKubeVersion = true
@@ -74,6 +76,18 @@ func (negotiator *ResourceNegotiator) NegotiateSyncResources(syncResources []clu
74
76
75
77
if syncAllResources {
76
78
syncResources = negotiator .dynamicDiscovery .GetAllResourcesAsSyncResources ()
79
+ allExcludeResources := make ([]string , 0 )
80
+ for _ , gr := range originSyncResources {
81
+ if len (gr .ExcludeResources ) > 0 {
82
+ allExcludeResources = append (allExcludeResources , gr .ExcludeResources ... )
83
+ }
84
+ }
85
+ allExcludeResourcesSet := sets .New (allExcludeResources ... )
86
+ for k , groupResources := range syncResources {
87
+ if allExcludeResourcesSet .Has (groupResources .Resources [0 ]) {
88
+ syncResources [k ].ExcludeResources = groupResources .Resources
89
+ }
90
+ }
77
91
} else if negotiator .syncAllCustomResources && clusterpediafeature .FeatureGate .Enabled (features .AllowSyncAllCustomResources ) {
78
92
syncResources = negotiator .dynamicDiscovery .AttachAllCustomResourcesToSyncResources (syncResources )
79
93
}
@@ -85,7 +99,11 @@ func (negotiator *ResourceNegotiator) NegotiateSyncResources(syncResources []clu
85
99
var groupResourceStatus = NewGroupResourceStatus ()
86
100
var storageResourceSyncConfigs = make (map [schema.GroupVersionResource ]syncConfig )
87
101
for _ , groupResources := range syncResources {
102
+ excludedResourcesSet := sets .New (groupResources .ExcludeResources ... )
88
103
for _ , resource := range groupResources .Resources {
104
+ if excludedResourcesSet .Has (resource ) {
105
+ continue
106
+ }
89
107
syncGR := schema.GroupResource {Group : groupResources .Group , Resource : resource }
90
108
91
109
if clusterpediafeature .FeatureGate .Enabled (features .IgnoreSyncLease ) {
0 commit comments