From e278812cc12d791e17436c247c0349245f293f16 Mon Sep 17 00:00:00 2001 From: Yuichiro Ueno Date: Sat, 13 Nov 2021 15:09:31 +0900 Subject: [PATCH] core: add context parameter to k8sutil daemonset This commit adds context parameter to k8sutil daemonset functions. By this, we can handle cancellation during API call of daemonset resource. Signed-off-by: Yuichiro Ueno --- pkg/operator/ceph/csi/spec.go | 6 +++--- pkg/operator/k8sutil/daemonset.go | 9 +++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/pkg/operator/ceph/csi/spec.go b/pkg/operator/ceph/csi/spec.go index c7ef6591160d..fcd5a6939b3a 100644 --- a/pkg/operator/ceph/csi/spec.go +++ b/pkg/operator/ceph/csi/spec.go @@ -410,7 +410,7 @@ func (r *ReconcileCSI) startDrivers(ver *version.Info, ownerInfo *k8sutil.OwnerI if multusApplied { rbdPlugin.Spec.Template.Spec.HostNetwork = false } - err = k8sutil.CreateDaemonSet(csiRBDPlugin, r.opConfig.OperatorNamespace, r.context.Clientset, rbdPlugin) + err = k8sutil.CreateDaemonSet(r.opManagerContext, csiRBDPlugin, r.opConfig.OperatorNamespace, r.context.Clientset, rbdPlugin) if err != nil { return errors.Wrapf(err, "failed to start rbdplugin daemonset %q", rbdPlugin.Name) } @@ -478,7 +478,7 @@ func (r *ReconcileCSI) startDrivers(ver *version.Info, ownerInfo *k8sutil.OwnerI if multusApplied { cephfsPlugin.Spec.Template.Spec.HostNetwork = false } - err = k8sutil.CreateDaemonSet(csiCephFSPlugin, r.opConfig.OperatorNamespace, r.context.Clientset, cephfsPlugin) + err = k8sutil.CreateDaemonSet(r.opManagerContext, csiCephFSPlugin, r.opConfig.OperatorNamespace, r.context.Clientset, cephfsPlugin) if err != nil { return errors.Wrapf(err, "failed to start cephfs plugin daemonset %q", cephfsPlugin.Name) } @@ -570,7 +570,7 @@ func (r *ReconcileCSI) deleteCSIDriverResources(ver *version.Info, daemonset, de if ver.Major > KubeMinMajor || ver.Major == KubeMinMajor && ver.Minor >= kubeMinVerForV1csiDriver { csiDriverobj = v1CsiDriver{} } - err := k8sutil.DeleteDaemonset(r.context.Clientset, r.opConfig.OperatorNamespace, daemonset) + err := k8sutil.DeleteDaemonset(r.opManagerContext, r.context.Clientset, r.opConfig.OperatorNamespace, daemonset) if err != nil { logger.Errorf("failed to delete the %q. %v", daemonset, err) succeeded = false diff --git a/pkg/operator/k8sutil/daemonset.go b/pkg/operator/k8sutil/daemonset.go index d92bfe14aabf..c17894176f71 100644 --- a/pkg/operator/k8sutil/daemonset.go +++ b/pkg/operator/k8sutil/daemonset.go @@ -27,8 +27,7 @@ import ( ) // CreateDaemonSet creates -func CreateDaemonSet(name, namespace string, clientset kubernetes.Interface, ds *appsv1.DaemonSet) error { - ctx := context.TODO() +func CreateDaemonSet(ctx context.Context, name, namespace string, clientset kubernetes.Interface, ds *appsv1.DaemonSet) error { _, err := clientset.AppsV1().DaemonSets(namespace).Create(ctx, ds, metav1.CreateOptions{}) if err != nil { if k8serrors.IsAlreadyExists(err) { @@ -42,8 +41,7 @@ func CreateDaemonSet(name, namespace string, clientset kubernetes.Interface, ds } // DeleteDaemonset makes a best effort at deleting a daemonset and its pods, then waits for them to be deleted -func DeleteDaemonset(clientset kubernetes.Interface, namespace, name string) error { - ctx := context.TODO() +func DeleteDaemonset(ctx context.Context, clientset kubernetes.Interface, namespace, name string) error { deleteAction := func(options *metav1.DeleteOptions) error { return clientset.AppsV1().DaemonSets(namespace).Delete(ctx, name, *options) } @@ -69,9 +67,8 @@ func AddRookVersionLabelToDaemonSet(d *appsv1.DaemonSet) { // GetDaemonsets returns a list of daemonsets names labels matching a given selector // example of a label selector might be "app=rook-ceph-mon, mon!=b" // more: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ -func GetDaemonsets(clientset kubernetes.Interface, namespace, labelSelector string) (*appsv1.DaemonSetList, error) { +func GetDaemonsets(ctx context.Context, clientset kubernetes.Interface, namespace, labelSelector string) (*appsv1.DaemonSetList, error) { listOptions := metav1.ListOptions{LabelSelector: labelSelector} - ctx := context.TODO() daemonsets, err := clientset.AppsV1().DaemonSets(namespace).List(ctx, listOptions) if err != nil { return nil, fmt.Errorf("failed to list deployments with labelSelector %s: %v", labelSelector, err)