From 116ae8cc281490d4475b35bb71278bfa2548e78e Mon Sep 17 00:00:00 2001 From: Jian Qiu Date: Tue, 30 May 2023 14:07:32 +0800 Subject: [PATCH] Refactor version/feature/cmd packages (#148) Signed-off-by: Jian Qiu --- cmd/placement/main.go | 6 +-- cmd/registration-operator/main.go | 9 ++-- cmd/registration/main.go | 14 +++--- cmd/work/main.go | 14 +++--- .../operator/hub.go => cmd/hub/operator.go} | 4 +- .../controller.go => cmd/hub/placement.go} | 4 +- .../controller.go => cmd/hub/registration.go} | 4 +- .../cmd/hub/manager.go => cmd/hub/work.go} | 4 +- .../spoke.go => cmd/spoke/operator.go} | 4 +- .../agent.go => cmd/spoke/registration.go} | 4 +- .../cmd/spoke/agent.go => cmd/spoke/work.go} | 6 +-- pkg/cmd/webhook/registration.go | 25 ++++++++++ pkg/cmd/webhook/work.go | 27 +++++++++++ pkg/features/feature.go | 31 ++++++++++++ pkg/placement/dependencymagnet/doc.go | 10 ---- .../operators/crdmanager/manager.go | 2 +- pkg/registration-operator/version/version.go | 47 ------------------- pkg/registration/clientcert/certificate.go | 4 +- pkg/registration/cmd/webhook/webhook.go | 24 ---------- pkg/registration/features/feature.go | 22 --------- pkg/registration/hub/manager.go | 12 ++--- pkg/registration/spoke/spokeagent.go | 12 ++--- pkg/registration/version/version.go | 47 ------------------- pkg/registration/{cmd => }/webhook/option.go | 0 pkg/registration/{cmd => }/webhook/start.go | 0 .../webhook/v1/managedcluster_mutating.go | 4 +- .../v1/managedcluster_mutating_test.go | 6 +-- pkg/{placement => }/version/version.go | 4 +- pkg/work/cmd/webhook/webhook.go | 25 ---------- pkg/work/dependencymagnet/doc.go | 10 ---- pkg/work/features/feature.go | 21 --------- pkg/work/spoke/spokeagent.go | 6 +-- pkg/work/spoke/statusfeedback/reader.go | 4 +- pkg/work/spoke/statusfeedback/reader_test.go | 9 ++-- pkg/work/version/version.go | 47 ------------------- pkg/work/{cmd => }/webhook/option.go | 0 pkg/work/{cmd => }/webhook/start.go | 0 .../webhook/v1/manifestwork_validating.go | 4 +- .../v1/manifestwork_validating_test.go | 6 +-- .../integration/addon_lease_test.go | 4 +- .../integration/addon_registration_test.go | 4 +- .../integration/disaster_recovery_test.go | 4 +- .../integration/integration_suite_test.go | 6 +-- test/work/integration/executor_test.go | 4 +- test/work/integration/statusfeedback_test.go | 9 ++-- 45 files changed, 170 insertions(+), 343 deletions(-) rename pkg/{registration-operator/cmd/operator/hub.go => cmd/hub/operator.go} (88%) rename pkg/{placement/cmd/hub/controller.go => cmd/hub/placement.go} (81%) rename pkg/{registration/cmd/hub/controller.go => cmd/hub/registration.go} (94%) rename pkg/{work/cmd/hub/manager.go => cmd/hub/work.go} (83%) rename pkg/{registration-operator/cmd/operator/spoke.go => cmd/spoke/operator.go} (91%) rename pkg/{registration/cmd/spoke/agent.go => cmd/spoke/registration.go} (87%) rename pkg/{work/cmd/spoke/agent.go => cmd/spoke/work.go} (79%) create mode 100644 pkg/cmd/webhook/registration.go create mode 100644 pkg/cmd/webhook/work.go create mode 100644 pkg/features/feature.go delete mode 100644 pkg/placement/dependencymagnet/doc.go delete mode 100644 pkg/registration-operator/version/version.go delete mode 100644 pkg/registration/cmd/webhook/webhook.go delete mode 100644 pkg/registration/features/feature.go delete mode 100644 pkg/registration/version/version.go rename pkg/registration/{cmd => }/webhook/option.go (100%) rename pkg/registration/{cmd => }/webhook/start.go (100%) rename pkg/{placement => }/version/version.go (94%) delete mode 100644 pkg/work/cmd/webhook/webhook.go delete mode 100644 pkg/work/dependencymagnet/doc.go delete mode 100644 pkg/work/features/feature.go delete mode 100644 pkg/work/version/version.go rename pkg/work/{cmd => }/webhook/option.go (100%) rename pkg/work/{cmd => }/webhook/start.go (100%) diff --git a/cmd/placement/main.go b/cmd/placement/main.go index 3ec97460d..c1d2f7322 100644 --- a/cmd/placement/main.go +++ b/cmd/placement/main.go @@ -4,6 +4,7 @@ import ( goflag "flag" "fmt" "math/rand" + "open-cluster-management.io/ocm/pkg/cmd/hub" "os" "time" @@ -13,8 +14,7 @@ import ( utilflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" - "open-cluster-management.io/ocm/pkg/placement/cmd/hub" - "open-cluster-management.io/ocm/pkg/placement/version" + "open-cluster-management.io/ocm/pkg/version" ) func main() { @@ -49,7 +49,7 @@ func newPlacementCommand() *cobra.Command { cmd.Version = v } - cmd.AddCommand(hub.NewController()) + cmd.AddCommand(hub.NewPlacementController()) return cmd } diff --git a/cmd/registration-operator/main.go b/cmd/registration-operator/main.go index 45b1d12f4..8cccbcd76 100644 --- a/cmd/registration-operator/main.go +++ b/cmd/registration-operator/main.go @@ -4,6 +4,8 @@ import ( goflag "flag" "fmt" "math/rand" + "open-cluster-management.io/ocm/pkg/cmd/hub" + "open-cluster-management.io/ocm/pkg/cmd/spoke" "os" "time" @@ -13,8 +15,7 @@ import ( utilflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" - "open-cluster-management.io/ocm/pkg/registration-operator/cmd/operator" - "open-cluster-management.io/ocm/pkg/registration-operator/version" + "open-cluster-management.io/ocm/pkg/version" ) func main() { @@ -50,8 +51,8 @@ func newNucleusCommand() *cobra.Command { cmd.Version = v } - cmd.AddCommand(operator.NewHubOperatorCmd()) - cmd.AddCommand(operator.NewKlusterletOperatorCmd()) + cmd.AddCommand(hub.NewHubOperatorCmd()) + cmd.AddCommand(spoke.NewKlusterletOperatorCmd()) return cmd } diff --git a/cmd/registration/main.go b/cmd/registration/main.go index 66ca55fb4..2eec834de 100644 --- a/cmd/registration/main.go +++ b/cmd/registration/main.go @@ -4,6 +4,8 @@ import ( goflag "flag" "fmt" "math/rand" + "open-cluster-management.io/ocm/pkg/cmd/hub" + "open-cluster-management.io/ocm/pkg/cmd/spoke" "os" "time" @@ -13,10 +15,8 @@ import ( utilflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" - "open-cluster-management.io/ocm/pkg/registration/cmd/hub" - "open-cluster-management.io/ocm/pkg/registration/cmd/spoke" - "open-cluster-management.io/ocm/pkg/registration/cmd/webhook" - "open-cluster-management.io/ocm/pkg/registration/version" + "open-cluster-management.io/ocm/pkg/cmd/webhook" + "open-cluster-management.io/ocm/pkg/version" ) // The registration binary contains both the hub-side controllers for the @@ -57,8 +57,8 @@ func newRegistrationCommand() *cobra.Command { cmd.Version = v } - cmd.AddCommand(hub.NewController()) - cmd.AddCommand(spoke.NewAgent()) - cmd.AddCommand(webhook.NewWebhook()) + cmd.AddCommand(hub.NewRegistrationController()) + cmd.AddCommand(spoke.NewRegistrationAgent()) + cmd.AddCommand(webhook.NewRegistrationWebhook()) return cmd } diff --git a/cmd/work/main.go b/cmd/work/main.go index 4400e9a9a..6b8afc591 100644 --- a/cmd/work/main.go +++ b/cmd/work/main.go @@ -4,6 +4,8 @@ import ( goflag "flag" "fmt" "math/rand" + "open-cluster-management.io/ocm/pkg/cmd/hub" + "open-cluster-management.io/ocm/pkg/cmd/spoke" "os" "time" @@ -13,10 +15,8 @@ import ( utilflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" - "open-cluster-management.io/ocm/pkg/work/cmd/hub" - "open-cluster-management.io/ocm/pkg/work/cmd/spoke" - "open-cluster-management.io/ocm/pkg/work/cmd/webhook" - "open-cluster-management.io/ocm/pkg/work/version" + "open-cluster-management.io/ocm/pkg/cmd/webhook" + "open-cluster-management.io/ocm/pkg/version" ) func main() { @@ -52,8 +52,8 @@ func newWorkCommand() *cobra.Command { cmd.Version = v } - cmd.AddCommand(spoke.NewWorkloadAgent()) - cmd.AddCommand(webhook.NewWebhook()) - cmd.AddCommand(hub.NewHubManager()) + cmd.AddCommand(spoke.NewWorkAgent()) + cmd.AddCommand(webhook.NewWorkWebhook()) + cmd.AddCommand(hub.NewWorkController()) return cmd } diff --git a/pkg/registration-operator/cmd/operator/hub.go b/pkg/cmd/hub/operator.go similarity index 88% rename from pkg/registration-operator/cmd/operator/hub.go rename to pkg/cmd/hub/operator.go index c692a37de..c0886d395 100644 --- a/pkg/registration-operator/cmd/operator/hub.go +++ b/pkg/cmd/hub/operator.go @@ -1,4 +1,4 @@ -package operator +package hub import ( "github.com/spf13/cobra" @@ -6,7 +6,7 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" "open-cluster-management.io/ocm/pkg/registration-operator/operators/clustermanager" - "open-cluster-management.io/ocm/pkg/registration-operator/version" + "open-cluster-management.io/ocm/pkg/version" ) // NewHubOperatorCmd generatee a command to start hub operator diff --git a/pkg/placement/cmd/hub/controller.go b/pkg/cmd/hub/placement.go similarity index 81% rename from pkg/placement/cmd/hub/controller.go rename to pkg/cmd/hub/placement.go index f8485b046..1f3a9197a 100644 --- a/pkg/placement/cmd/hub/controller.go +++ b/pkg/cmd/hub/placement.go @@ -6,10 +6,10 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" controllers "open-cluster-management.io/ocm/pkg/placement/controllers" - "open-cluster-management.io/ocm/pkg/placement/version" + "open-cluster-management.io/ocm/pkg/version" ) -func NewController() *cobra.Command { +func NewPlacementController() *cobra.Command { cmd := controllercmd. NewControllerCommandConfig("placement", version.Get(), controllers.RunControllerManager). NewCommand() diff --git a/pkg/registration/cmd/hub/controller.go b/pkg/cmd/hub/registration.go similarity index 94% rename from pkg/registration/cmd/hub/controller.go rename to pkg/cmd/hub/registration.go index 4fe9e1bec..e4f743f51 100644 --- a/pkg/registration/cmd/hub/controller.go +++ b/pkg/cmd/hub/registration.go @@ -8,10 +8,10 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" "open-cluster-management.io/ocm/pkg/registration/hub" - "open-cluster-management.io/ocm/pkg/registration/version" + "open-cluster-management.io/ocm/pkg/version" ) -func NewController() *cobra.Command { +func NewRegistrationController() *cobra.Command { manager := hub.NewHubManagerOptions() cmdConfig := controllercmd. NewControllerCommandConfig("registration-controller", version.Get(), manager.RunControllerManager) diff --git a/pkg/work/cmd/hub/manager.go b/pkg/cmd/hub/work.go similarity index 83% rename from pkg/work/cmd/hub/manager.go rename to pkg/cmd/hub/work.go index d2518535b..64e48ef17 100644 --- a/pkg/work/cmd/hub/manager.go +++ b/pkg/cmd/hub/work.go @@ -5,12 +5,12 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" + "open-cluster-management.io/ocm/pkg/version" "open-cluster-management.io/ocm/pkg/work/hub" - "open-cluster-management.io/ocm/pkg/work/version" ) // NewHubManager generates a command to start hub manager -func NewHubManager() *cobra.Command { +func NewWorkController() *cobra.Command { cmdConfig := controllercmd. NewControllerCommandConfig("work-manager", version.Get(), hub.RunWorkHubManager) cmd := cmdConfig.NewCommand() diff --git a/pkg/registration-operator/cmd/operator/spoke.go b/pkg/cmd/spoke/operator.go similarity index 91% rename from pkg/registration-operator/cmd/operator/spoke.go rename to pkg/cmd/spoke/operator.go index 4f1a33029..be4499a76 100644 --- a/pkg/registration-operator/cmd/operator/spoke.go +++ b/pkg/cmd/spoke/operator.go @@ -1,4 +1,4 @@ -package operator +package spoke import ( "github.com/spf13/cobra" @@ -6,7 +6,7 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" "open-cluster-management.io/ocm/pkg/registration-operator/operators/klusterlet" - "open-cluster-management.io/ocm/pkg/registration-operator/version" + "open-cluster-management.io/ocm/pkg/version" ) // NewKlusterletOperatorCmd generatee a command to start klusterlet operator diff --git a/pkg/registration/cmd/spoke/agent.go b/pkg/cmd/spoke/registration.go similarity index 87% rename from pkg/registration/cmd/spoke/agent.go rename to pkg/cmd/spoke/registration.go index 816bc9fb0..3ac46b150 100644 --- a/pkg/registration/cmd/spoke/agent.go +++ b/pkg/cmd/spoke/registration.go @@ -6,10 +6,10 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" "open-cluster-management.io/ocm/pkg/registration/spoke" - "open-cluster-management.io/ocm/pkg/registration/version" + "open-cluster-management.io/ocm/pkg/version" ) -func NewAgent() *cobra.Command { +func NewRegistrationAgent() *cobra.Command { agentOptions := spoke.NewSpokeAgentOptions() cmdConfig := controllercmd. NewControllerCommandConfig("registration-agent", version.Get(), agentOptions.RunSpokeAgent) diff --git a/pkg/work/cmd/spoke/agent.go b/pkg/cmd/spoke/work.go similarity index 79% rename from pkg/work/cmd/spoke/agent.go rename to pkg/cmd/spoke/work.go index 2ba6255a8..7a167e32d 100644 --- a/pkg/work/cmd/spoke/agent.go +++ b/pkg/cmd/spoke/work.go @@ -5,12 +5,12 @@ import ( "github.com/openshift/library-go/pkg/controller/controllercmd" + "open-cluster-management.io/ocm/pkg/version" "open-cluster-management.io/ocm/pkg/work/spoke" - "open-cluster-management.io/ocm/pkg/work/version" ) -// NewWorkloadAgent generates a command to start workload agent -func NewWorkloadAgent() *cobra.Command { +// NewWorkAgent generates a command to start work agent +func NewWorkAgent() *cobra.Command { o := spoke.NewWorkloadAgentOptions() cmdConfig := controllercmd. NewControllerCommandConfig("work-agent", version.Get(), o.RunWorkloadAgent) diff --git a/pkg/cmd/webhook/registration.go b/pkg/cmd/webhook/registration.go new file mode 100644 index 000000000..be6bfc17e --- /dev/null +++ b/pkg/cmd/webhook/registration.go @@ -0,0 +1,25 @@ +package webhook + +import ( + "github.com/spf13/cobra" + "open-cluster-management.io/ocm/pkg/features" + "open-cluster-management.io/ocm/pkg/registration/webhook" +) + +func NewRegistrationWebhook() *cobra.Command { + ops := webhook.NewOptions() + cmd := &cobra.Command{ + Use: "webhook-server", + Short: "Start the registration webhook server", + RunE: func(c *cobra.Command, args []string) error { + err := ops.RunWebhookServer() + return err + }, + } + + flags := cmd.Flags() + ops.AddFlags(flags) + + features.DefaultHubRegistrationMutableFeatureGate.AddFlag(flags) + return cmd +} diff --git a/pkg/cmd/webhook/work.go b/pkg/cmd/webhook/work.go new file mode 100644 index 000000000..deaf1173b --- /dev/null +++ b/pkg/cmd/webhook/work.go @@ -0,0 +1,27 @@ +package webhook + +import ( + "github.com/spf13/cobra" + "open-cluster-management.io/ocm/pkg/features" + _ "open-cluster-management.io/ocm/pkg/features" + "open-cluster-management.io/ocm/pkg/work/webhook" +) + +func NewWorkWebhook() *cobra.Command { + ops := webhook.NewOptions() + cmd := &cobra.Command{ + Use: "webhook-server", + Short: "Start the work webhook server", + RunE: func(c *cobra.Command, args []string) error { + err := ops.RunWebhookServer() + return err + }, + } + + flags := cmd.Flags() + ops.AddFlags(flags) + + features.DefaultHubWorkMutableFeatureGate.AddFlag(flags) + + return cmd +} diff --git a/pkg/features/feature.go b/pkg/features/feature.go new file mode 100644 index 000000000..0939f4ed9 --- /dev/null +++ b/pkg/features/feature.go @@ -0,0 +1,31 @@ +// Copyright (c) Red Hat, Inc. +// Copyright Contributors to the Open Cluster Management project + +package features + +import ( + "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/component-base/featuregate" + ocmfeature "open-cluster-management.io/api/feature" +) + +var ( + // DefaultHubWorkMutableFeatureGate is made up of multiple mutable feature-gates for work controller + DefaultHubWorkMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() + + // DefaultSpokeWorkMutableFeatureGate is made up of multiple mutable feature-gates for work agent. + DefaultSpokeWorkMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() + + // DefaultSpokeRegistrationMutableFeatureGate is made up of multiple mutable feature-gates for registration agent. + DefaultSpokeRegistrationMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() + + // DefaultHubRegistrationMutableFeatureGate made up of multiple mutable feature-gates for registration hub controller. + DefaultHubRegistrationMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() +) + +func init() { + runtime.Must(DefaultHubWorkMutableFeatureGate.Add(ocmfeature.DefaultHubWorkFeatureGates)) + runtime.Must(DefaultSpokeWorkMutableFeatureGate.Add(ocmfeature.DefaultSpokeWorkFeatureGates)) + runtime.Must(DefaultSpokeRegistrationMutableFeatureGate.Add(ocmfeature.DefaultSpokeRegistrationFeatureGates)) + runtime.Must(DefaultHubRegistrationMutableFeatureGate.Add(ocmfeature.DefaultHubRegistrationFeatureGates)) +} diff --git a/pkg/placement/dependencymagnet/doc.go b/pkg/placement/dependencymagnet/doc.go deleted file mode 100644 index 10b80ece4..000000000 --- a/pkg/placement/dependencymagnet/doc.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build tools -// +build tools - -// go mod won't pull in code that isn't depended upon, but we have some code we don't depend on from code that must be included -// for our build to work. -package dependencymagnet - -import ( - _ "github.com/openshift/build-machinery-go" -) diff --git a/pkg/registration-operator/operators/crdmanager/manager.go b/pkg/registration-operator/operators/crdmanager/manager.go index 90149c632..bdb690bfb 100644 --- a/pkg/registration-operator/operators/crdmanager/manager.go +++ b/pkg/registration-operator/operators/crdmanager/manager.go @@ -21,7 +21,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" versionutil "k8s.io/apimachinery/pkg/util/version" "k8s.io/klog/v2" - "open-cluster-management.io/ocm/pkg/registration-operator/version" + "open-cluster-management.io/ocm/pkg/version" ) // versionAnnotationKey is an annotation key on crd resources to mark the ocm version of the crds. diff --git a/pkg/registration-operator/version/version.go b/pkg/registration-operator/version/version.go deleted file mode 100644 index 8408066fe..000000000 --- a/pkg/registration-operator/version/version.go +++ /dev/null @@ -1,47 +0,0 @@ -package version - -import ( - "k8s.io/apimachinery/pkg/version" - "k8s.io/component-base/metrics" - "k8s.io/component-base/metrics/legacyregistry" -) - -var ( - // commitFromGit is a constant representing the source version that - // generated this build. It should be set during build via -ldflags. - commitFromGit string - // versionFromGit is a constant representing the version tag that - // generated this build. It should be set during build via -ldflags. - versionFromGit string - // major version - majorFromGit string - // minor version - minorFromGit string - // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') - buildDate string -) - -// Get returns the overall codebase version. It's for detecting -// what code a binary was built from. -func Get() version.Info { - return version.Info{ - Major: majorFromGit, - Minor: minorFromGit, - GitCommit: commitFromGit, - GitVersion: versionFromGit, - BuildDate: buildDate, - } -} - -func init() { - buildInfo := metrics.NewGaugeVec( - &metrics.GaugeOpts{ - Name: "open_cluster_management_registration_build_info", - Help: "A metric with a constant '1' value labeled by major, minor, git commit & git version from which Open Cluster Management Registration was built.", - }, - []string{"major", "minor", "gitCommit", "gitVersion"}, - ) - buildInfo.WithLabelValues(majorFromGit, minorFromGit, commitFromGit, versionFromGit).Set(1) - - legacyregistry.MustRegister(buildInfo) -} diff --git a/pkg/registration/clientcert/certificate.go b/pkg/registration/clientcert/certificate.go index c23de5a55..70373923f 100644 --- a/pkg/registration/clientcert/certificate.go +++ b/pkg/registration/clientcert/certificate.go @@ -23,7 +23,7 @@ import ( certutil "k8s.io/client-go/util/cert" "k8s.io/klog/v2" ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/registration/features" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/helpers" ) @@ -256,7 +256,7 @@ func (v *v1CSRControl) get(name string) (metav1.Object, error) { } func NewCSRControl(hubCSRInformer certificatesinformers.Interface, hubKubeClient kubernetes.Interface) (CSRControl, error) { - if features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.V1beta1CSRAPICompatibility) { + if features.DefaultSpokeRegistrationMutableFeatureGate.Enabled(ocmfeature.V1beta1CSRAPICompatibility) { v1CSRSupported, v1beta1CSRSupported, err := helpers.IsCSRSupported(hubKubeClient) if err != nil { return nil, err diff --git a/pkg/registration/cmd/webhook/webhook.go b/pkg/registration/cmd/webhook/webhook.go deleted file mode 100644 index 0c06195f9..000000000 --- a/pkg/registration/cmd/webhook/webhook.go +++ /dev/null @@ -1,24 +0,0 @@ -package webhook - -import ( - "github.com/spf13/cobra" - "open-cluster-management.io/ocm/pkg/registration/features" -) - -func NewWebhook() *cobra.Command { - ops := NewOptions() - cmd := &cobra.Command{ - Use: "webhook-server", - Short: "Start the webhook server", - RunE: func(c *cobra.Command, args []string) error { - err := ops.RunWebhookServer() - return err - }, - } - - flags := cmd.Flags() - ops.AddFlags(flags) - - features.DefaultHubMutableFeatureGate.AddFlag(flags) - return cmd -} diff --git a/pkg/registration/features/feature.go b/pkg/registration/features/feature.go deleted file mode 100644 index db1e379c0..000000000 --- a/pkg/registration/features/feature.go +++ /dev/null @@ -1,22 +0,0 @@ -package features - -import ( - "k8s.io/apimachinery/pkg/util/runtime" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/component-base/featuregate" - ocmfeature "open-cluster-management.io/api/feature" -) - -var ( - // DefaultSpokeMutableFeatureGate is made up of multiple mutable feature-gates for registration agent. - DefaultSpokeMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() - - // DefaultHubMutableFeatureGate made up of multiple mutable feature-gates for registration hub controller. - DefaultHubMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() -) - -func init() { - runtime.Must(DefaultSpokeMutableFeatureGate.Add(ocmfeature.DefaultSpokeRegistrationFeatureGates)) - runtime.Must(DefaultHubMutableFeatureGate.Add(ocmfeature.DefaultHubRegistrationFeatureGates)) - runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(ocmfeature.DefaultHubRegistrationFeatureGates)) -} diff --git a/pkg/registration/hub/manager.go b/pkg/registration/hub/manager.go index 52579b6ad..738647790 100644 --- a/pkg/registration/hub/manager.go +++ b/pkg/registration/hub/manager.go @@ -9,7 +9,7 @@ import ( ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/registration/features" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/helpers" "open-cluster-management.io/ocm/pkg/registration/hub/managedclustersetbinding" "open-cluster-management.io/ocm/pkg/registration/hub/taint" @@ -53,7 +53,7 @@ func NewHubManagerOptions() *HubManagerOptions { // AddFlags registers flags for manager func (m *HubManagerOptions) AddFlags(fs *pflag.FlagSet) { - features.DefaultHubMutableFeatureGate.AddFlag(fs) + features.DefaultHubRegistrationMutableFeatureGate.AddFlag(fs) fs.StringSliceVar(&m.ClusterAutoApprovalUsers, "cluster-auto-approval-users", m.ClusterAutoApprovalUsers, "A bootstrap user list whose cluster registration requests can be automatically approved.") @@ -109,7 +109,7 @@ func (m *HubManagerOptions) RunControllerManager(ctx context.Context, controller ) csrReconciles := []csr.Reconciler{csr.NewCSRRenewalReconciler(kubeClient, controllerContext.EventRecorder)} - if features.DefaultHubMutableFeatureGate.Enabled(ocmfeature.ManagedClusterAutoApproval) { + if features.DefaultHubRegistrationMutableFeatureGate.Enabled(ocmfeature.ManagedClusterAutoApproval) { csrReconciles = append(csrReconciles, csr.NewCSRBootstrapReconciler( kubeClient, clusterClient, @@ -120,7 +120,7 @@ func (m *HubManagerOptions) RunControllerManager(ctx context.Context, controller } var csrController factory.Controller - if features.DefaultHubMutableFeatureGate.Enabled(ocmfeature.V1beta1CSRAPICompatibility) { + if features.DefaultHubRegistrationMutableFeatureGate.Enabled(ocmfeature.V1beta1CSRAPICompatibility) { v1CSRSupported, v1beta1CSRSupported, err := helpers.IsCSRSupported(kubeClient) if err != nil { return errors.Wrapf(err, "failed CSR api discovery") @@ -201,7 +201,7 @@ func (m *HubManagerOptions) RunControllerManager(ctx context.Context, controller ) var defaultManagedClusterSetController, globalManagedClusterSetController factory.Controller - if features.DefaultHubMutableFeatureGate.Enabled(ocmfeature.DefaultClusterSet) { + if features.DefaultHubRegistrationMutableFeatureGate.Enabled(ocmfeature.DefaultClusterSet) { defaultManagedClusterSetController = managedclusterset.NewDefaultManagedClusterSetController( clusterClient.ClusterV1beta2(), clusterInformers.Cluster().V1beta2().ManagedClusterSets(), @@ -229,7 +229,7 @@ func (m *HubManagerOptions) RunControllerManager(ctx context.Context, controller go clusterroleController.Run(ctx, 1) go addOnHealthCheckController.Run(ctx, 1) go addOnFeatureDiscoveryController.Run(ctx, 1) - if features.DefaultHubMutableFeatureGate.Enabled(ocmfeature.DefaultClusterSet) { + if features.DefaultHubRegistrationMutableFeatureGate.Enabled(ocmfeature.DefaultClusterSet) { go defaultManagedClusterSetController.Run(ctx, 1) go globalManagedClusterSetController.Run(ctx, 1) } diff --git a/pkg/registration/spoke/spokeagent.go b/pkg/registration/spoke/spokeagent.go index 65793f5e7..14182f8ee 100644 --- a/pkg/registration/spoke/spokeagent.go +++ b/pkg/registration/spoke/spokeagent.go @@ -16,8 +16,8 @@ import ( addoninformers "open-cluster-management.io/api/client/addon/informers/externalversions" clusterv1client "open-cluster-management.io/api/client/cluster/clientset/versioned" clusterv1informers "open-cluster-management.io/api/client/cluster/informers/externalversions" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/clientcert" - "open-cluster-management.io/ocm/pkg/registration/features" "open-cluster-management.io/ocm/pkg/registration/helpers" "open-cluster-management.io/ocm/pkg/registration/spoke/addon" "open-cluster-management.io/ocm/pkg/registration/spoke/managedcluster" @@ -347,7 +347,7 @@ func (o *SpokeAgentOptions) RunSpokeAgent(ctx context.Context, controllerContext spokeClusterInformerFactory := clusterv1informers.NewSharedInformerFactory(spokeClusterClient, 10*time.Minute) var managedClusterClaimController factory.Controller - if features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.ClusterClaim) { + if features.DefaultSpokeRegistrationMutableFeatureGate.Enabled(ocmfeature.ClusterClaim) { // create managedClusterClaimController to sync cluster claims managedClusterClaimController = managedcluster.NewManagedClusterClaimController( o.ClusterName, @@ -361,7 +361,7 @@ func (o *SpokeAgentOptions) RunSpokeAgent(ctx context.Context, controllerContext var addOnLeaseController factory.Controller var addOnRegistrationController factory.Controller - if features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.AddonManagement) { + if features.DefaultSpokeRegistrationMutableFeatureGate.Enabled(ocmfeature.AddonManagement) { addOnLeaseController = addon.NewManagedClusterAddOnLeaseController( o.ClusterName, addOnClient, @@ -397,10 +397,10 @@ func (o *SpokeAgentOptions) RunSpokeAgent(ctx context.Context, controllerContext go managedClusterJoiningController.Run(ctx, 1) go managedClusterLeaseController.Run(ctx, 1) go managedClusterHealthCheckController.Run(ctx, 1) - if features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.ClusterClaim) { + if features.DefaultSpokeRegistrationMutableFeatureGate.Enabled(ocmfeature.ClusterClaim) { go managedClusterClaimController.Run(ctx, 1) } - if features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.AddonManagement) { + if features.DefaultSpokeRegistrationMutableFeatureGate.Enabled(ocmfeature.AddonManagement) { go addOnLeaseController.Run(ctx, 1) go addOnRegistrationController.Run(ctx, 1) } @@ -411,7 +411,7 @@ func (o *SpokeAgentOptions) RunSpokeAgent(ctx context.Context, controllerContext // AddFlags registers flags for Agent func (o *SpokeAgentOptions) AddFlags(fs *pflag.FlagSet) { - features.DefaultSpokeMutableFeatureGate.AddFlag(fs) + features.DefaultSpokeRegistrationMutableFeatureGate.AddFlag(fs) fs.StringVar(&o.ClusterName, "cluster-name", o.ClusterName, "If non-empty, will use as cluster name instead of generated random name.") fs.StringVar(&o.BootstrapKubeconfig, "bootstrap-kubeconfig", o.BootstrapKubeconfig, diff --git a/pkg/registration/version/version.go b/pkg/registration/version/version.go deleted file mode 100644 index 8408066fe..000000000 --- a/pkg/registration/version/version.go +++ /dev/null @@ -1,47 +0,0 @@ -package version - -import ( - "k8s.io/apimachinery/pkg/version" - "k8s.io/component-base/metrics" - "k8s.io/component-base/metrics/legacyregistry" -) - -var ( - // commitFromGit is a constant representing the source version that - // generated this build. It should be set during build via -ldflags. - commitFromGit string - // versionFromGit is a constant representing the version tag that - // generated this build. It should be set during build via -ldflags. - versionFromGit string - // major version - majorFromGit string - // minor version - minorFromGit string - // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') - buildDate string -) - -// Get returns the overall codebase version. It's for detecting -// what code a binary was built from. -func Get() version.Info { - return version.Info{ - Major: majorFromGit, - Minor: minorFromGit, - GitCommit: commitFromGit, - GitVersion: versionFromGit, - BuildDate: buildDate, - } -} - -func init() { - buildInfo := metrics.NewGaugeVec( - &metrics.GaugeOpts{ - Name: "open_cluster_management_registration_build_info", - Help: "A metric with a constant '1' value labeled by major, minor, git commit & git version from which Open Cluster Management Registration was built.", - }, - []string{"major", "minor", "gitCommit", "gitVersion"}, - ) - buildInfo.WithLabelValues(majorFromGit, minorFromGit, commitFromGit, versionFromGit).Set(1) - - legacyregistry.MustRegister(buildInfo) -} diff --git a/pkg/registration/cmd/webhook/option.go b/pkg/registration/webhook/option.go similarity index 100% rename from pkg/registration/cmd/webhook/option.go rename to pkg/registration/webhook/option.go diff --git a/pkg/registration/cmd/webhook/start.go b/pkg/registration/webhook/start.go similarity index 100% rename from pkg/registration/cmd/webhook/start.go rename to pkg/registration/webhook/start.go diff --git a/pkg/registration/webhook/v1/managedcluster_mutating.go b/pkg/registration/webhook/v1/managedcluster_mutating.go index 327f17ef7..f1d894fe5 100644 --- a/pkg/registration/webhook/v1/managedcluster_mutating.go +++ b/pkg/registration/webhook/v1/managedcluster_mutating.go @@ -13,7 +13,7 @@ import ( clusterv1 "open-cluster-management.io/api/cluster/v1" clusterv1beta2 "open-cluster-management.io/api/cluster/v1beta2" ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/registration/features" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/helpers" "sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook/admission" @@ -52,7 +52,7 @@ func (r *ManagedClusterWebhook) Default(ctx context.Context, obj runtime.Object) } //Set default clusterset label - if features.DefaultHubMutableFeatureGate.Enabled(ocmfeature.DefaultClusterSet) { + if features.DefaultHubRegistrationMutableFeatureGate.Enabled(ocmfeature.DefaultClusterSet) { r.addDefaultClusterSetLabel(managedCluster) } diff --git a/pkg/registration/webhook/v1/managedcluster_mutating_test.go b/pkg/registration/webhook/v1/managedcluster_mutating_test.go index 52b619e40..d5a660abe 100644 --- a/pkg/registration/webhook/v1/managedcluster_mutating_test.go +++ b/pkg/registration/webhook/v1/managedcluster_mutating_test.go @@ -12,7 +12,7 @@ import ( "k8s.io/apimachinery/pkg/util/runtime" ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/registration/features" + "open-cluster-management.io/ocm/pkg/features" admissionv1 "k8s.io/api/admission/v1" "sigs.k8s.io/controller-runtime/pkg/webhook/admission" @@ -447,8 +447,8 @@ func TestDefault(t *testing.T) { }, }, } - runtime.Must(features.DefaultHubMutableFeatureGate.Add(ocmfeature.DefaultHubRegistrationFeatureGates)) - if err := features.DefaultHubMutableFeatureGate.Set(fmt.Sprintf("%s=true", string(ocmfeature.DefaultClusterSet))); err != nil { + runtime.Must(features.DefaultHubRegistrationMutableFeatureGate.Add(ocmfeature.DefaultHubRegistrationFeatureGates)) + if err := features.DefaultHubRegistrationMutableFeatureGate.Set(fmt.Sprintf("%s=true", string(ocmfeature.DefaultClusterSet))); err != nil { t.Fatal(err) } for _, c := range cases { diff --git a/pkg/placement/version/version.go b/pkg/version/version.go similarity index 94% rename from pkg/placement/version/version.go rename to pkg/version/version.go index d28b390f4..b58aae03a 100644 --- a/pkg/placement/version/version.go +++ b/pkg/version/version.go @@ -36,8 +36,8 @@ func Get() version.Info { func init() { buildInfo := metrics.NewGaugeVec( &metrics.GaugeOpts{ - Name: "open_cluster_management_placement_build_info", - Help: "A metric with a constant '1' value labeled by major, minor, git commit & git version from which Open Cluster Management Placement was built.", + Name: "open_cluster_management_build_info", + Help: "A metric with a constant '1' value labeled by major, minor, git commit & git version from which Open Cluster Management was built.", }, []string{"major", "minor", "gitCommit", "gitVersion"}, ) diff --git a/pkg/work/cmd/webhook/webhook.go b/pkg/work/cmd/webhook/webhook.go deleted file mode 100644 index de422b1a7..000000000 --- a/pkg/work/cmd/webhook/webhook.go +++ /dev/null @@ -1,25 +0,0 @@ -package webhook - -import ( - "github.com/spf13/cobra" - utilfeature "k8s.io/apiserver/pkg/util/feature" - _ "open-cluster-management.io/ocm/pkg/work/features" -) - -func NewWebhook() *cobra.Command { - ops := NewOptions() - cmd := &cobra.Command{ - Use: "webhook-server", - Short: "Start the webhook server", - RunE: func(c *cobra.Command, args []string) error { - err := ops.RunWebhookServer() - return err - }, - } - - flags := cmd.Flags() - ops.AddFlags(flags) - featureGate := utilfeature.DefaultMutableFeatureGate - featureGate.AddFlag(flags) - return cmd -} diff --git a/pkg/work/dependencymagnet/doc.go b/pkg/work/dependencymagnet/doc.go deleted file mode 100644 index 10b80ece4..000000000 --- a/pkg/work/dependencymagnet/doc.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build tools -// +build tools - -// go mod won't pull in code that isn't depended upon, but we have some code we don't depend on from code that must be included -// for our build to work. -package dependencymagnet - -import ( - _ "github.com/openshift/build-machinery-go" -) diff --git a/pkg/work/features/feature.go b/pkg/work/features/feature.go deleted file mode 100644 index c08999ab8..000000000 --- a/pkg/work/features/feature.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Red Hat, Inc. -// Copyright Contributors to the Open Cluster Management project - -package features - -import ( - "k8s.io/apimachinery/pkg/util/runtime" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/component-base/featuregate" - ocmfeature "open-cluster-management.io/api/feature" -) - -var ( - // DefaultSpokeMutableFeatureGate is made up of multiple mutable feature-gates for work agent. - DefaultSpokeMutableFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate() -) - -func init() { - runtime.Must(DefaultSpokeMutableFeatureGate.Add(ocmfeature.DefaultSpokeWorkFeatureGates)) - runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(ocmfeature.DefaultHubWorkFeatureGates)) -} diff --git a/pkg/work/spoke/spokeagent.go b/pkg/work/spoke/spokeagent.go index 36d1345bb..aedc252b4 100644 --- a/pkg/work/spoke/spokeagent.go +++ b/pkg/work/spoke/spokeagent.go @@ -3,12 +3,12 @@ package spoke import ( "context" "fmt" + "open-cluster-management.io/ocm/pkg/features" "time" workclientset "open-cluster-management.io/api/client/work/clientset/versioned" workinformers "open-cluster-management.io/api/client/work/informers/externalversions" ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/work/features" "open-cluster-management.io/ocm/pkg/work/helper" "open-cluster-management.io/ocm/pkg/work/spoke/auth" "open-cluster-management.io/ocm/pkg/work/spoke/controllers/appliedmanifestcontroller" @@ -63,7 +63,7 @@ func NewWorkloadAgentOptions() *WorkloadAgentOptions { // AddFlags register and binds the default flags func (o *WorkloadAgentOptions) AddFlags(cmd *cobra.Command) { flags := cmd.Flags() - features.DefaultSpokeMutableFeatureGate.AddFlag(flags) + features.DefaultSpokeWorkMutableFeatureGate.AddFlag(flags) // This command only supports reading from config flags.StringVar(&o.HubKubeconfigFile, "hub-kubeconfig", o.HubKubeconfigFile, "Location of kubeconfig file to connect to hub cluster.") flags.StringVar(&o.SpokeKubeconfigFile, "spoke-kubeconfig", o.SpokeKubeconfigFile, @@ -135,7 +135,7 @@ func (o *WorkloadAgentOptions) RunWorkloadAgent(ctx context.Context, controllerC o.SpokeClusterName, controllerContext.EventRecorder, restMapper, - ).NewExecutorValidator(ctx, features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.ExecutorValidatingCaches)) + ).NewExecutorValidator(ctx, features.DefaultSpokeWorkMutableFeatureGate.Enabled(ocmfeature.ExecutorValidatingCaches)) manifestWorkController := manifestcontroller.NewManifestWorkController( controllerContext.EventRecorder, diff --git a/pkg/work/spoke/statusfeedback/reader.go b/pkg/work/spoke/statusfeedback/reader.go index 5642e3670..b65f92d54 100644 --- a/pkg/work/spoke/statusfeedback/reader.go +++ b/pkg/work/spoke/statusfeedback/reader.go @@ -3,6 +3,7 @@ package statusfeedback import ( "encoding/json" "fmt" + "open-cluster-management.io/ocm/pkg/features" "reflect" "k8s.io/utils/pointer" @@ -12,7 +13,6 @@ import ( utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/client-go/util/jsonpath" workapiv1 "open-cluster-management.io/api/work/v1" - "open-cluster-management.io/ocm/pkg/work/features" "open-cluster-management.io/ocm/pkg/work/spoke/statusfeedback/rules" ) @@ -129,7 +129,7 @@ func getValueByJsonPath(name, path string, obj *unstructured.Unstructured) (*wor Value: fieldValue, }, nil default: - if features.DefaultSpokeMutableFeatureGate.Enabled(ocmfeature.RawFeedbackJsonString) { + if features.DefaultSpokeWorkMutableFeatureGate.Enabled(ocmfeature.RawFeedbackJsonString) { jsonRaw, err := json.Marshal(&t) if err != nil { return nil, fmt.Errorf("failed to parse the resource to json string for name %s: %v", name, err) diff --git a/pkg/work/spoke/statusfeedback/reader_test.go b/pkg/work/spoke/statusfeedback/reader_test.go index 293623743..6d76325b0 100644 --- a/pkg/work/spoke/statusfeedback/reader_test.go +++ b/pkg/work/spoke/statusfeedback/reader_test.go @@ -2,14 +2,13 @@ package statusfeedback import ( "fmt" + "open-cluster-management.io/ocm/pkg/features" "testing" - "k8s.io/utils/pointer" - ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/work/features" - apiequality "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/utils/pointer" + ocmfeature "open-cluster-management.io/api/feature" workapiv1 "open-cluster-management.io/api/work/v1" ) @@ -286,7 +285,7 @@ func TestStatusReader(t *testing.T) { reader := NewStatusReader() for _, c := range cases { t.Run(c.name, func(t *testing.T) { - err := features.DefaultSpokeMutableFeatureGate.Set(fmt.Sprintf("%s=%t", ocmfeature.RawFeedbackJsonString, c.enableRaw)) + err := features.DefaultSpokeWorkMutableFeatureGate.Set(fmt.Sprintf("%s=%t", ocmfeature.RawFeedbackJsonString, c.enableRaw)) if err != nil { t.Fatal(err) } diff --git a/pkg/work/version/version.go b/pkg/work/version/version.go deleted file mode 100644 index 8408066fe..000000000 --- a/pkg/work/version/version.go +++ /dev/null @@ -1,47 +0,0 @@ -package version - -import ( - "k8s.io/apimachinery/pkg/version" - "k8s.io/component-base/metrics" - "k8s.io/component-base/metrics/legacyregistry" -) - -var ( - // commitFromGit is a constant representing the source version that - // generated this build. It should be set during build via -ldflags. - commitFromGit string - // versionFromGit is a constant representing the version tag that - // generated this build. It should be set during build via -ldflags. - versionFromGit string - // major version - majorFromGit string - // minor version - minorFromGit string - // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') - buildDate string -) - -// Get returns the overall codebase version. It's for detecting -// what code a binary was built from. -func Get() version.Info { - return version.Info{ - Major: majorFromGit, - Minor: minorFromGit, - GitCommit: commitFromGit, - GitVersion: versionFromGit, - BuildDate: buildDate, - } -} - -func init() { - buildInfo := metrics.NewGaugeVec( - &metrics.GaugeOpts{ - Name: "open_cluster_management_registration_build_info", - Help: "A metric with a constant '1' value labeled by major, minor, git commit & git version from which Open Cluster Management Registration was built.", - }, - []string{"major", "minor", "gitCommit", "gitVersion"}, - ) - buildInfo.WithLabelValues(majorFromGit, minorFromGit, commitFromGit, versionFromGit).Set(1) - - legacyregistry.MustRegister(buildInfo) -} diff --git a/pkg/work/cmd/webhook/option.go b/pkg/work/webhook/option.go similarity index 100% rename from pkg/work/cmd/webhook/option.go rename to pkg/work/webhook/option.go diff --git a/pkg/work/cmd/webhook/start.go b/pkg/work/webhook/start.go similarity index 100% rename from pkg/work/cmd/webhook/start.go rename to pkg/work/webhook/start.go diff --git a/pkg/work/webhook/v1/manifestwork_validating.go b/pkg/work/webhook/v1/manifestwork_validating.go index 305d24daf..4c13c6836 100644 --- a/pkg/work/webhook/v1/manifestwork_validating.go +++ b/pkg/work/webhook/v1/manifestwork_validating.go @@ -3,6 +3,7 @@ package v1 import ( "context" "fmt" + "open-cluster-management.io/ocm/pkg/features" "reflect" "open-cluster-management.io/ocm/pkg/work/webhook/common" @@ -12,7 +13,6 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/kubernetes" ocmfeature "open-cluster-management.io/api/feature" workv1 "open-cluster-management.io/api/work/v1" @@ -75,7 +75,7 @@ func (r *ManifestWorkWebhook) validateRequest(newWork, oldWork *workv1.ManifestW func validateExecutor(kubeClient kubernetes.Interface, work *workv1.ManifestWork, userInfo authenticationv1.UserInfo) error { executor := work.Spec.Executor - if !utilfeature.DefaultMutableFeatureGate.Enabled(ocmfeature.NilExecutorValidating) { + if !features.DefaultHubWorkMutableFeatureGate.Enabled(ocmfeature.NilExecutorValidating) { if executor == nil { return nil } diff --git a/pkg/work/webhook/v1/manifestwork_validating_test.go b/pkg/work/webhook/v1/manifestwork_validating_test.go index 847f4be16..4e945f367 100644 --- a/pkg/work/webhook/v1/manifestwork_validating_test.go +++ b/pkg/work/webhook/v1/manifestwork_validating_test.go @@ -8,11 +8,9 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" - _ "open-cluster-management.io/ocm/pkg/work/features" + "open-cluster-management.io/ocm/pkg/features" admissionv1 "k8s.io/api/admission/v1" - utilfeature "k8s.io/apiserver/pkg/util/feature" - clienttesting "k8s.io/client-go/testing" "sigs.k8s.io/controller-runtime/pkg/webhook/admission" @@ -254,7 +252,7 @@ func TestManifestWorkExecutorValidate(t *testing.T) { }, } - utilruntime.Must(utilfeature.DefaultMutableFeatureGate.Set( + utilruntime.Must(features.DefaultHubWorkMutableFeatureGate.Set( fmt.Sprintf("%s=true", ocmfeature.NilExecutorValidating), )) diff --git a/test/registration/integration/addon_lease_test.go b/test/registration/integration/addon_lease_test.go index 7b99fcad3..8efa6a21b 100644 --- a/test/registration/integration/addon_lease_test.go +++ b/test/registration/integration/addon_lease_test.go @@ -11,7 +11,7 @@ import ( addonv1alpha1 "open-cluster-management.io/api/addon/v1alpha1" clusterv1 "open-cluster-management.io/api/cluster/v1" - "open-cluster-management.io/ocm/pkg/registration/features" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/spoke" "open-cluster-management.io/ocm/test/registration/integration/util" @@ -164,7 +164,7 @@ var _ = ginkgo.Describe("Addon Lease Resync", func() { hubKubeconfigDir = path.Join(util.TestDir, fmt.Sprintf("addontest-%s", suffix), "hub-kubeconfig") addOnName = fmt.Sprintf("addon-%s", suffix) - err := features.DefaultSpokeMutableFeatureGate.Set("AddonManagement=true") + err := features.DefaultSpokeRegistrationMutableFeatureGate.Set("AddonManagement=true") gomega.Expect(err).NotTo(gomega.HaveOccurred()) agentOptions := spoke.SpokeAgentOptions{ diff --git a/test/registration/integration/addon_registration_test.go b/test/registration/integration/addon_registration_test.go index 22057cc3f..bedd49762 100644 --- a/test/registration/integration/addon_registration_test.go +++ b/test/registration/integration/addon_registration_test.go @@ -19,8 +19,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" addonv1alpha1 "open-cluster-management.io/api/addon/v1alpha1" clusterv1 "open-cluster-management.io/api/cluster/v1" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/clientcert" - "open-cluster-management.io/ocm/pkg/registration/features" "open-cluster-management.io/ocm/pkg/registration/spoke" "open-cluster-management.io/ocm/test/registration/integration/util" ) @@ -37,7 +37,7 @@ var _ = ginkgo.Describe("Addon Registration", func() { hubKubeconfigDir = path.Join(util.TestDir, fmt.Sprintf("addontest-%s", suffix), "hub-kubeconfig") addOnName = fmt.Sprintf("addon-%s", suffix) - err := features.DefaultSpokeMutableFeatureGate.Set("AddonManagement=true") + err := features.DefaultSpokeRegistrationMutableFeatureGate.Set("AddonManagement=true") gomega.Expect(err).NotTo(gomega.HaveOccurred()) agentOptions := spoke.SpokeAgentOptions{ diff --git a/test/registration/integration/disaster_recovery_test.go b/test/registration/integration/disaster_recovery_test.go index ddfcbc6f6..167b97c5f 100644 --- a/test/registration/integration/disaster_recovery_test.go +++ b/test/registration/integration/disaster_recovery_test.go @@ -22,8 +22,8 @@ import ( addonclientset "open-cluster-management.io/api/client/addon/clientset/versioned" clusterclientset "open-cluster-management.io/api/client/cluster/clientset/versioned" clusterv1 "open-cluster-management.io/api/cluster/v1" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/clientcert" - "open-cluster-management.io/ocm/pkg/registration/features" "open-cluster-management.io/ocm/pkg/registration/hub" "open-cluster-management.io/ocm/pkg/registration/spoke" "open-cluster-management.io/ocm/test/registration/integration/util" @@ -88,7 +88,7 @@ var _ = ginkgo.Describe("Disaster Recovery", func() { } startRegistrationAgent := func(managedClusterName, bootstrapKubeConfigFile, hubKubeconfigSecret, hubKubeconfigDir string) context.CancelFunc { - err := features.DefaultSpokeMutableFeatureGate.Set("AddonManagement=true") + err := features.DefaultSpokeRegistrationMutableFeatureGate.Set("AddonManagement=true") gomega.Expect(err).NotTo(gomega.HaveOccurred()) agentOptions := spoke.SpokeAgentOptions{ diff --git a/test/registration/integration/integration_suite_test.go b/test/registration/integration/integration_suite_test.go index e26c58ca5..54c6d2126 100644 --- a/test/registration/integration/integration_suite_test.go +++ b/test/registration/integration/integration_suite_test.go @@ -22,8 +22,8 @@ import ( clusterclientset "open-cluster-management.io/api/client/cluster/clientset/versioned" workclientset "open-cluster-management.io/api/client/work/clientset/versioned" clusterv1 "open-cluster-management.io/api/cluster/v1" + "open-cluster-management.io/ocm/pkg/features" "open-cluster-management.io/ocm/pkg/registration/clientcert" - "open-cluster-management.io/ocm/pkg/registration/features" "open-cluster-management.io/ocm/pkg/registration/hub" "open-cluster-management.io/ocm/pkg/registration/spoke" "open-cluster-management.io/ocm/pkg/registration/spoke/addon" @@ -157,11 +157,11 @@ var _ = ginkgo.BeforeSuite(func() { gomega.Expect(err).ToNot(gomega.HaveOccurred()) // enable DefaultClusterSet feature gate - err = features.DefaultHubMutableFeatureGate.Set("DefaultClusterSet=true") + err = features.DefaultHubRegistrationMutableFeatureGate.Set("DefaultClusterSet=true") gomega.Expect(err).ToNot(gomega.HaveOccurred()) // enable ManagedClusterAutoApproval feature gate - err = features.DefaultHubMutableFeatureGate.Set("ManagedClusterAutoApproval=true") + err = features.DefaultHubRegistrationMutableFeatureGate.Set("ManagedClusterAutoApproval=true") gomega.Expect(err).NotTo(gomega.HaveOccurred()) // start hub controller diff --git a/test/work/integration/executor_test.go b/test/work/integration/executor_test.go index d03ac77ed..35a4ded54 100644 --- a/test/work/integration/executor_test.go +++ b/test/work/integration/executor_test.go @@ -3,6 +3,7 @@ package integration import ( "context" "encoding/json" + "open-cluster-management.io/ocm/pkg/features" "time" jsonpatch "github.com/evanphx/json-patch" @@ -15,7 +16,6 @@ import ( utilrand "k8s.io/apimachinery/pkg/util/rand" workclientset "open-cluster-management.io/api/client/work/clientset/versioned" workapiv1 "open-cluster-management.io/api/work/v1" - "open-cluster-management.io/ocm/pkg/work/features" "open-cluster-management.io/ocm/pkg/work/spoke" "open-cluster-management.io/ocm/test/work/integration/util" ) @@ -35,7 +35,7 @@ var _ = ginkgo.Describe("ManifestWork Executor Subject", func() { o.HubKubeconfigFile = hubKubeconfigFileName o.SpokeClusterName = utilrand.String(5) o.StatusSyncInterval = 3 * time.Second - err := features.DefaultSpokeMutableFeatureGate.Set("ExecutorValidatingCaches=true") + err := features.DefaultSpokeWorkMutableFeatureGate.Set("ExecutorValidatingCaches=true") gomega.Expect(err).NotTo(gomega.HaveOccurred()) ns := &corev1.Namespace{} diff --git a/test/work/integration/statusfeedback_test.go b/test/work/integration/statusfeedback_test.go index bf92981eb..12c271ff0 100644 --- a/test/work/integration/statusfeedback_test.go +++ b/test/work/integration/statusfeedback_test.go @@ -3,12 +3,9 @@ package integration import ( "context" "fmt" + "open-cluster-management.io/ocm/pkg/features" "time" - "k8s.io/utils/pointer" - ocmfeature "open-cluster-management.io/api/feature" - "open-cluster-management.io/ocm/pkg/work/features" - "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" appsv1 "k8s.io/api/apps/v1" @@ -16,6 +13,8 @@ import ( apiequality "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" utilrand "k8s.io/apimachinery/pkg/util/rand" + "k8s.io/utils/pointer" + ocmfeature "open-cluster-management.io/api/feature" workapiv1 "open-cluster-management.io/api/work/v1" "open-cluster-management.io/ocm/pkg/work/spoke" "open-cluster-management.io/ocm/test/work/integration/util" @@ -455,7 +454,7 @@ var _ = ginkgo.Describe("ManifestWork Status Feedback", func() { gomega.Expect(err).ToNot(gomega.HaveOccurred()) manifests = append(manifests, util.ToManifest(u)) - err = features.DefaultSpokeMutableFeatureGate.Set(fmt.Sprintf("%s=true", ocmfeature.RawFeedbackJsonString)) + err = features.DefaultSpokeWorkMutableFeatureGate.Set(fmt.Sprintf("%s=true", ocmfeature.RawFeedbackJsonString)) gomega.Expect(err).NotTo(gomega.HaveOccurred()) var ctx context.Context ctx, cancel = context.WithCancel(context.Background())