From b799da39c7bdc5c1b0cb95d8406e9d4d6e2811db Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Thu, 1 Apr 2021 10:14:01 -0400 Subject: [PATCH] Reconcile with controller-runtime v0.7.2 changes This updates our controllers to work with recent controller runtime updates (Simplify usage of EnqueueRequestsFromMapFunc, and Remove MapObject type and use client.Object directly): - https://github.com/kubernetes-sigs/controller-runtime/pull/1119 - https://github.com/kubernetes-sigs/controller-runtime/pull/1207 --- config/manager/kustomization.yaml | 2 +- .../openstackbaremetalset_controller.go | 14 ++++------- controllers/openstackclient_controller.go | 3 +-- .../openstackcontrolplane_controller.go | 14 ++++------- controllers/openstackipset_controller.go | 3 +-- controllers/openstacknet_controller.go | 25 +++++++------------ .../openstackprovisionserver_controller.go | 3 +-- controllers/openstackvmset_controller.go | 5 ++-- 8 files changed, 25 insertions(+), 44 deletions(-) diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 29112a405..e412aaecc 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller - newName: quay.io/openstack-k8s-operators/osp-director-operator + newName: quay.io/dprince/osp-director-operator newTag: 0.0.1 diff --git a/controllers/openstackbaremetalset_controller.go b/controllers/openstackbaremetalset_controller.go index a786b3705..7259602aa 100644 --- a/controllers/openstackbaremetalset_controller.go +++ b/controllers/openstackbaremetalset_controller.go @@ -89,9 +89,8 @@ func (r *OpenStackBaremetalSetReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=core,resources=secrets/finalizers,verbs=create;delete;get;list;patch;update;watch // Reconcile baremetalset -func (r *OpenStackBaremetalSetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { +func (r *OpenStackBaremetalSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("openstackbaremetalset", req.NamespacedName) - ctx := context.Background() // Fetch the instance instance := &ospdirectorv1beta1.OpenStackBaremetalSet{} @@ -246,12 +245,12 @@ func (r *OpenStackBaremetalSetReconciler) Reconcile(req ctrl.Request) (ctrl.Resu // SetupWithManager - prepare controller for use with operator manager func (r *OpenStackBaremetalSetReconciler) SetupWithManager(mgr ctrl.Manager) error { - openshiftMachineAPIBareMetalHostsFn := handler.ToRequestsFunc(func(o handler.MapObject) []reconcile.Request { + openshiftMachineAPIBareMetalHostsFn := handler.EnqueueRequestsFromMapFunc(func(o client.Object) []reconcile.Request { result := []reconcile.Request{} - label := o.Meta.GetLabels() + label := o.GetLabels() // verify object has ownerUIDLabelSelector if uid, ok := label[baremetalset.OwnerUIDLabelSelector]; ok { - r.Log.Info(fmt.Sprintf("BareMetalHost object %s marked with OSP owner ref: %s", o.Meta.GetName(), uid)) + r.Log.Info(fmt.Sprintf("BareMetalHost object %s marked with OSP owner ref: %s", o.GetName(), uid)) // return namespace and Name of CR name := client.ObjectKey{ Namespace: label[baremetalset.OwnerNameSpaceLabelSelector], @@ -268,10 +267,7 @@ func (r *OpenStackBaremetalSetReconciler) SetupWithManager(mgr ctrl.Manager) err return ctrl.NewControllerManagedBy(mgr). For(&ospdirectorv1beta1.OpenStackBaremetalSet{}). Owns(&ospdirectorv1beta1.OpenStackProvisionServer{}). - Watches(&source.Kind{Type: &metal3v1alpha1.BareMetalHost{}}, - &handler.EnqueueRequestsFromMapFunc{ - ToRequests: openshiftMachineAPIBareMetalHostsFn, - }). + Watches(&source.Kind{Type: &metal3v1alpha1.BareMetalHost{}}, openshiftMachineAPIBareMetalHostsFn). Complete(r) } diff --git a/controllers/openstackclient_controller.go b/controllers/openstackclient_controller.go index 5b30e1709..cc6755d73 100644 --- a/controllers/openstackclient_controller.go +++ b/controllers/openstackclient_controller.go @@ -73,8 +73,7 @@ func (r *OpenStackClientReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=core,resources=pods,verbs=create;delete;get;list;patch;update;watch // Reconcile - openstackclient -func (r *OpenStackClientReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { - _ = context.Background() +func (r *OpenStackClientReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("openstackclient", req.NamespacedName) // Fetch the controller VM instance diff --git a/controllers/openstackcontrolplane_controller.go b/controllers/openstackcontrolplane_controller.go index e8e9d0c7c..9daead5d6 100644 --- a/controllers/openstackcontrolplane_controller.go +++ b/controllers/openstackcontrolplane_controller.go @@ -80,8 +80,7 @@ func (r *OpenStackControlPlaneReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=core,resources=secrets,verbs=create;delete;get;list;patch;update;watch // Reconcile - control plane -func (r *OpenStackControlPlaneReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { - _ = context.Background() +func (r *OpenStackControlPlaneReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("controlplane", req.NamespacedName) // Fetch the controller VM instance @@ -275,13 +274,13 @@ func (r *OpenStackControlPlaneReconciler) Reconcile(req ctrl.Request) (ctrl.Resu func (r *OpenStackControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error { // watch for objects in the same namespace as the controller CR - namespacedFn := handler.ToRequestsFunc(func(obj handler.MapObject) []reconcile.Request { + namespacedFn := handler.EnqueueRequestsFromMapFunc(func(obj client.Object) []reconcile.Request { result := []reconcile.Request{} // get all CRs from the same namespace crs := &ospdirectorv1beta1.OpenStackControlPlaneList{} listOpts := []client.ListOption{ - client.InNamespace(obj.Meta.GetNamespace()), + client.InNamespace(obj.GetNamespace()), } if err := r.Client.List(context.Background(), crs, listOpts...); err != nil { r.Log.Error(err, "Unable to retrieve CRs %v") @@ -289,7 +288,7 @@ func (r *OpenStackControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) err } for _, cr := range crs.Items { - if obj.Meta.GetNamespace() == cr.Namespace { + if obj.GetNamespace() == cr.Namespace { // return namespace and Name of CR name := client.ObjectKey{ Namespace: cr.Namespace, @@ -311,10 +310,7 @@ func (r *OpenStackControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) err Owns(&ospdirectorv1beta1.OpenStackClient{}). // watch pods in the same namespace as we want to reconcile if // e.g. a controller vm gets destroyed - Watches(&source.Kind{Type: &corev1.Pod{}}, - &handler.EnqueueRequestsFromMapFunc{ - ToRequests: namespacedFn, - }). + Watches(&source.Kind{Type: &corev1.Pod{}}, namespacedFn). Complete(r) } diff --git a/controllers/openstackipset_controller.go b/controllers/openstackipset_controller.go index bb8fc6b9c..be570b64a 100644 --- a/controllers/openstackipset_controller.go +++ b/controllers/openstackipset_controller.go @@ -69,8 +69,7 @@ func (r *OpenStackIPSetReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=osp-director.openstack.org,resources=openstackipsets/status,verbs=get;update;patch // Reconcile - reconcile OpenStackIPSet objects -func (r *OpenStackIPSetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { - _ = context.Background() +func (r *OpenStackIPSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("openstackipset", req.NamespacedName) // Fetch the controller VM instance diff --git a/controllers/openstacknet_controller.go b/controllers/openstacknet_controller.go index b6332b238..f1dfc2436 100644 --- a/controllers/openstacknet_controller.go +++ b/controllers/openstacknet_controller.go @@ -80,8 +80,7 @@ func (r *OpenStackNetReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=nmstate.io,resources=nodenetworkconfigurationpolicies,verbs=create;delete;get;list;patch;update;watch // Reconcile - -func (r *OpenStackNetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { - _ = context.Background() +func (r *OpenStackNetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("overcloudnet", req.NamespacedName) // Fetch the controller VM instance @@ -203,12 +202,12 @@ func (r *OpenStackNetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error // SetupWithManager - func (r *OpenStackNetReconciler) SetupWithManager(mgr ctrl.Manager) error { - sriovNetworkFn := handler.ToRequestsFunc(func(o handler.MapObject) []reconcile.Request { + sriovNetworkFn := handler.EnqueueRequestsFromMapFunc(func(o client.Object) []reconcile.Request { result := []reconcile.Request{} - label := o.Meta.GetLabels() + label := o.GetLabels() // verify object has ownerUIDLabelSelector if uid, ok := label[OwnerUIDLabelSelector]; ok { - r.Log.Info(fmt.Sprintf("SriovNetwork object %s marked with OSP owner ref: %s", o.Meta.GetName(), uid)) + r.Log.Info(fmt.Sprintf("SriovNetwork object %s marked with OSP owner ref: %s", o.GetName(), uid)) // return namespace and Name of CR name := client.ObjectKey{ Namespace: label[OwnerNameSpaceLabelSelector], @@ -222,12 +221,12 @@ func (r *OpenStackNetReconciler) SetupWithManager(mgr ctrl.Manager) error { return nil }) - sriovNetworkNodePolicyFn := handler.ToRequestsFunc(func(o handler.MapObject) []reconcile.Request { + sriovNetworkNodePolicyFn := handler.EnqueueRequestsFromMapFunc(func(o client.Object) []reconcile.Request { result := []reconcile.Request{} - label := o.Meta.GetLabels() + label := o.GetLabels() // verify object has ownerUIDLabelSelector if uid, ok := label[OwnerUIDLabelSelector]; ok { - r.Log.Info(fmt.Sprintf("SriovNetworkNodePolicy object %s marked with OSP owner ref: %s", o.Meta.GetName(), uid)) + r.Log.Info(fmt.Sprintf("SriovNetworkNodePolicy object %s marked with OSP owner ref: %s", o.GetName(), uid)) // return namespace and Name of CR name := client.ObjectKey{ Namespace: label[OwnerNameSpaceLabelSelector], @@ -244,14 +243,8 @@ func (r *OpenStackNetReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&ospdirectorv1beta1.OpenStackNet{}). Owns(&networkv1.NetworkAttachmentDefinition{}). - Watches(&source.Kind{Type: &sriovnetworkv1.SriovNetwork{}}, - &handler.EnqueueRequestsFromMapFunc{ - ToRequests: sriovNetworkFn, - }). - Watches(&source.Kind{Type: &sriovnetworkv1.SriovNetworkNodePolicy{}}, - &handler.EnqueueRequestsFromMapFunc{ - ToRequests: sriovNetworkNodePolicyFn, - }). + Watches(&source.Kind{Type: &sriovnetworkv1.SriovNetwork{}}, sriovNetworkFn). + Watches(&source.Kind{Type: &sriovnetworkv1.SriovNetworkNodePolicy{}}, sriovNetworkNodePolicyFn). Complete(r) } diff --git a/controllers/openstackprovisionserver_controller.go b/controllers/openstackprovisionserver_controller.go index f914aa5a7..d9158aa12 100644 --- a/controllers/openstackprovisionserver_controller.go +++ b/controllers/openstackprovisionserver_controller.go @@ -94,8 +94,7 @@ func (r *OpenStackProvisionServerReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=security.openshift.io,namespace=openstack,resources="securitycontextconstraints",resourceNames="anyuid",verbs="use" // Reconcile - provision image servers -func (r *OpenStackProvisionServerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { - _ = context.Background() +func (r *OpenStackProvisionServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("openstackprovisionserver", req.NamespacedName) // Fetch the ProvisionServer instance diff --git a/controllers/openstackvmset_controller.go b/controllers/openstackvmset_controller.go index 58889f022..a309fc9e8 100644 --- a/controllers/openstackvmset_controller.go +++ b/controllers/openstackvmset_controller.go @@ -97,8 +97,7 @@ func (r *OpenStackVMSetReconciler) GetScheme() *runtime.Scheme { // +kubebuilder:rbac:groups=sriovnetwork.openshift.io,resources=sriovnetworknodepolicies;sriovnetworks,verbs=get;list;watch;create;update;patch;delete // Reconcile - controller VMs -func (r *OpenStackVMSetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { - _ = context.Background() +func (r *OpenStackVMSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = r.Log.WithValues("vmset", req.NamespacedName) // Fetch the controller VM instance @@ -131,7 +130,7 @@ func (r *OpenStackVMSetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, err // registering our finalizer. if !controllerutil.ContainsFinalizer(instance, vmset.FinalizerName) { controllerutil.AddFinalizer(instance, vmset.FinalizerName) - if err := r.Update(context.Background(), instance); err != nil { + if err := r.Update(ctx, instance); err != nil { return ctrl.Result{}, err } r.Log.Info(fmt.Sprintf("Finalizer %s added to CR %s", vmset.FinalizerName, instance.Name))