K8s: Set priority for aggregated discovery (#101427)
This commit is contained in:
@@ -245,6 +245,18 @@ func SetupConfig(
|
||||
|
||||
serverConfig.EffectiveVersion = v
|
||||
|
||||
// set priority for aggregated discovery
|
||||
for i, b := range builders {
|
||||
gvs := GetGroupVersions(b)
|
||||
if len(gvs) == 0 {
|
||||
return fmt.Errorf("builder did not return any API group versions: %T", b)
|
||||
}
|
||||
pvs := scheme.PrioritizedVersionsForGroup(gvs[0].Group)
|
||||
for j, gv := range pvs {
|
||||
serverConfig.AggregatedDiscoveryGroupManager.SetGroupVersionPriority(metav1.GroupVersion(gv), 15000+i, len(pvs)-j)
|
||||
}
|
||||
}
|
||||
|
||||
if err := AddPostStartHooks(serverConfig, builders); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -278,18 +278,21 @@ func (s *service) start(ctx context.Context) error {
|
||||
groupVersions := make([]schema.GroupVersion, 0, len(builders))
|
||||
|
||||
// Install schemas
|
||||
initialSize := len(kubeaggregator.APIVersionPriorities)
|
||||
for i, b := range builders {
|
||||
gvs := builder.GetGroupVersions(b)
|
||||
groupVersions = append(groupVersions, gvs...)
|
||||
if len(gvs) == 0 {
|
||||
return fmt.Errorf("no group versions found for builder %T", b)
|
||||
}
|
||||
if err := b.InstallSchema(Scheme); err != nil {
|
||||
return err
|
||||
}
|
||||
pvs := Scheme.PrioritizedVersionsForGroup(gvs[0].Group)
|
||||
|
||||
for _, gv := range gvs {
|
||||
for j, gv := range pvs {
|
||||
if s.features.IsEnabledGlobally(featuremgmt.FlagKubernetesAggregator) {
|
||||
// set the priority for the group+version
|
||||
kubeaggregator.APIVersionPriorities[gv] = kubeaggregator.Priority{Group: 15000, Version: int32(i + initialSize)}
|
||||
kubeaggregator.APIVersionPriorities[gv] = kubeaggregator.Priority{Group: int32(15000 + i), Version: int32(len(pvs) - j)}
|
||||
}
|
||||
|
||||
if a, ok := b.(builder.APIGroupAuthorizer); ok {
|
||||
|
||||
Reference in New Issue
Block a user