Skip to content

Commit e576884

Browse files
committed
Add PriorityQueue feature gate
1 parent 392b7b9 commit e576884

File tree

6 files changed

+28
-4
lines changed

6 files changed

+28
-4
lines changed

config/manager/manager.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ spec:
2121
- "--diagnostics-address=${CAPI_DIAGNOSTICS_ADDRESS:=:8443}"
2222
- "--insecure-diagnostics=${CAPI_INSECURE_DIAGNOSTICS:=false}"
2323
- --v=4
24-
- "--feature-gates=NodeAntiAffinity=${EXP_NODE_ANTI_AFFINITY:=false},NamespaceScopedZones=${EXP_NAMESPACE_SCOPED_ZONES:=false}"
24+
- "--feature-gates=NodeAntiAffinity=${EXP_NODE_ANTI_AFFINITY:=false},NamespaceScopedZones=${EXP_NAMESPACE_SCOPED_ZONES:=false},PriorityQueue=${EXP_PRIORITY_QUEUE:=false}"
2525
image: controller:latest
2626
imagePullPolicy: IfNotPresent
2727
name: manager

controllers/vmware/test/controllers_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
3838
"sigs.k8s.io/controller-runtime/pkg/cache"
3939
"sigs.k8s.io/controller-runtime/pkg/client"
40+
"sigs.k8s.io/controller-runtime/pkg/config"
4041
"sigs.k8s.io/controller-runtime/pkg/controller"
4142
ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
4243
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
@@ -46,6 +47,7 @@ import (
4647
vmwarev1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/vmware/v1beta1"
4748
"sigs.k8s.io/cluster-api-provider-vsphere/controllers"
4849
"sigs.k8s.io/cluster-api-provider-vsphere/controllers/vmware"
50+
"sigs.k8s.io/cluster-api-provider-vsphere/feature"
4951
vmwarewebhooks "sigs.k8s.io/cluster-api-provider-vsphere/internal/webhooks/vmware"
5052
"sigs.k8s.io/cluster-api-provider-vsphere/pkg/constants"
5153
capvcontext "sigs.k8s.io/cluster-api-provider-vsphere/pkg/context"
@@ -222,6 +224,9 @@ func getManager(cfg *rest.Config, networkProvider string, withWebhooks bool) man
222224

223225
opts := manager.Options{
224226
Options: ctrlmgr.Options{
227+
Controller: config.Controller{
228+
UsePriorityQueue: ptr.To[bool](feature.Gates.Enabled(feature.PriorityQueue)),
229+
},
225230
Scheme: localScheme,
226231
NewCache: func(config *rest.Config, opts cache.Options) (cache.Cache, error) {
227232
syncPeriod := 1 * time.Second

feature/feature.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ const (
3838
//
3939
// alpha: v1.11
4040
NamespaceScopedZones featuregate.Feature = "NamespaceScopedZones"
41+
42+
// PriorityQueue is a feature gate that controls if the controller uses the controller-runtime PriorityQueue
43+
// instead of the default queue implementation.
44+
//
45+
// alpha: v1.10
46+
PriorityQueue featuregate.Feature = "PriorityQueue"
4147
)
4248

4349
func init() {
@@ -50,4 +56,5 @@ var defaultCAPVFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
5056
// Every feature should be initiated here:
5157
NodeAntiAffinity: {Default: false, PreRelease: featuregate.Alpha},
5258
NamespaceScopedZones: {Default: false, PreRelease: featuregate.Alpha},
59+
PriorityQueue: {Default: false, PreRelease: featuregate.Alpha},
5360
}

internal/test/helpers/envtest.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,19 @@ import (
4545
"k8s.io/component-base/logs"
4646
logsv1 "k8s.io/component-base/logs/api/v1"
4747
"k8s.io/klog/v2"
48+
"k8s.io/utils/ptr"
4849
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
4950
"sigs.k8s.io/cluster-api/util/kubeconfig"
5051
ctrl "sigs.k8s.io/controller-runtime"
5152
"sigs.k8s.io/controller-runtime/pkg/client"
53+
"sigs.k8s.io/controller-runtime/pkg/config"
5254
"sigs.k8s.io/controller-runtime/pkg/envtest"
5355
ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
5456
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
5557
"sigs.k8s.io/controller-runtime/pkg/webhook"
5658

5759
infrav1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1"
60+
"sigs.k8s.io/cluster-api-provider-vsphere/feature"
5861
"sigs.k8s.io/cluster-api-provider-vsphere/internal/test/helpers/vcsim"
5962
"sigs.k8s.io/cluster-api-provider-vsphere/internal/webhooks"
6063
capvcontext "sigs.k8s.io/cluster-api-provider-vsphere/pkg/context"
@@ -171,6 +174,9 @@ func NewTestEnvironment(ctx context.Context) *TestEnvironment {
171174

172175
managerOpts := manager.Options{
173176
Options: ctrl.Options{
177+
Controller: config.Controller{
178+
UsePriorityQueue: ptr.To[bool](feature.Gates.Enabled(feature.PriorityQueue)),
179+
},
174180
Scheme: scheme,
175181
Metrics: metricsserver.Options{
176182
BindAddress: "0",

main.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
logsv1 "k8s.io/component-base/logs/api/v1"
4040
_ "k8s.io/component-base/logs/json/register"
4141
"k8s.io/klog/v2"
42+
"k8s.io/utils/ptr"
4243
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
4344
"sigs.k8s.io/cluster-api/controllers/clustercache"
4445
"sigs.k8s.io/cluster-api/controllers/remote"
@@ -47,6 +48,7 @@ import (
4748
ctrl "sigs.k8s.io/controller-runtime"
4849
"sigs.k8s.io/controller-runtime/pkg/cache"
4950
"sigs.k8s.io/controller-runtime/pkg/client"
51+
"sigs.k8s.io/controller-runtime/pkg/config"
5052
"sigs.k8s.io/controller-runtime/pkg/controller"
5153
ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
5254
"sigs.k8s.io/controller-runtime/pkg/webhook"
@@ -327,6 +329,9 @@ func main() {
327329
managerOpts.WebhookServer = webhook.NewServer(webhookOpts)
328330
managerOpts.AddToManager = addToManager
329331
managerOpts.Metrics = *metricsOptions
332+
managerOpts.Controller = config.Controller{
333+
UsePriorityQueue: ptr.To[bool](feature.Gates.Enabled(feature.PriorityQueue)),
334+
}
330335

331336
// Set up the context that's going to be used in controllers and for the manager.
332337
ctx := ctrl.SetupSignalHandler()

test/e2e/config/vsphere.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,6 @@ variables:
311311
CPI_IMAGE_K8S_VERSION: "v1.32.1"
312312
CNI: "./data/cni/calico/calico.yaml"
313313
AUTOSCALER_WORKLOAD: "./data/autoscaler/autoscaler-to-management-workload.yaml"
314-
EXP_CLUSTER_RESOURCE_SET: "true"
315-
EXP_KUBEADM_BOOTSTRAP_FORMAT_IGNITION: "true"
316314
CONTROL_PLANE_MACHINE_COUNT: 1
317315
WORKER_MACHINE_COUNT: 1
318316
IP_FAMILY: "IPv4"
@@ -343,14 +341,17 @@ variables:
343341
FLATCAR_VSPHERE_TEMPLATE: "flatcar-stable-4081.2.0-kube-v1.32.0"
344342
KUBETEST_CONFIGURATION: "./data/kubetest/conformance.yaml"
345343
NODE_DRAIN_TIMEOUT: "60s"
344+
EXP_CLUSTER_RESOURCE_SET: "true"
345+
EXP_KUBEADM_BOOTSTRAP_FORMAT_IGNITION: "true"
346346
CLUSTER_TOPOLOGY: "true"
347347
EXP_RUNTIME_SDK: "true"
348+
EXP_MACHINE_SET_PREFLIGHT_CHECKS: "true"
349+
EXP_PRIORITY_QUEUE: "false"
348350
# These IDs correspond to Tesla T4s, they are the decimal representation of the hex values.
349351
DEVICE_ID: 7864
350352
VENDOR_ID: 4318
351353
# CAPV feature flags
352354
EXP_NODE_ANTI_AFFINITY: "true"
353-
EXP_MACHINE_SET_PREFLIGHT_CHECKS: "true"
354355
EXP_NAMESPACE_SCOPED_ZONE: "false"
355356
CAPI_DIAGNOSTICS_ADDRESS: ":8080"
356357
CAPI_INSECURE_DIAGNOSTICS: "true"

0 commit comments

Comments
 (0)