From d1d252c5c29e962ff7dbb711ea88fd79f2093d57 Mon Sep 17 00:00:00 2001 From: Yuichiro Ueno Date: Sat, 11 Dec 2021 11:26:21 +0900 Subject: [PATCH] core: add context parameter to k8sutil endpoint This commit adds context parameter to k8sutil endpoint functions. By this, we can handle cancellation during API call of endpoint resource. Signed-off-by: Yuichiro Ueno --- pkg/operator/ceph/controller/spec.go | 2 +- pkg/operator/ceph/object/spec.go | 2 +- pkg/operator/k8sutil/endpoint.go | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/operator/ceph/controller/spec.go b/pkg/operator/ceph/controller/spec.go index e583260590f7..183a6a424ea4 100644 --- a/pkg/operator/ceph/controller/spec.go +++ b/pkg/operator/ceph/controller/spec.go @@ -714,7 +714,7 @@ func ConfigureExternalMetricsEndpoint(ctx *clusterd.Context, monitoringSpec ceph } logger.Debugf("diff between current endpoint and newly generated one: %v \n", cmp.Diff(currentEndpoints, endpoint, cmp.Comparer(func(x, y resource.Quantity) bool { return x.Cmp(y) == 0 }))) - _, err = k8sutil.CreateOrUpdateEndpoint(ctx.Clientset, clusterInfo.Namespace, endpoint) + _, err = k8sutil.CreateOrUpdateEndpoint(clusterInfo.Context, ctx.Clientset, clusterInfo.Namespace, endpoint) if err != nil { return errors.Wrap(err, "failed to create or update mgr endpoint") } diff --git a/pkg/operator/ceph/object/spec.go b/pkg/operator/ceph/object/spec.go index 2152b3275bd4..974c3267c150 100644 --- a/pkg/operator/ceph/object/spec.go +++ b/pkg/operator/ceph/object/spec.go @@ -496,7 +496,7 @@ func (c *clusterConfig) reconcileExternalEndpoint(cephObjectStore *cephv1.CephOb return errors.Wrapf(err, "failed to set owner reference to ceph object store endpoint %q", endpoint.Name) } - _, err = k8sutil.CreateOrUpdateEndpoint(c.context.Clientset, cephObjectStore.Namespace, endpoint) + _, err = k8sutil.CreateOrUpdateEndpoint(c.clusterInfo.Context, c.context.Clientset, cephObjectStore.Namespace, endpoint) if err != nil { return errors.Wrapf(err, "failed to create or update object store %q endpoint", cephObjectStore.Name) } diff --git a/pkg/operator/k8sutil/endpoint.go b/pkg/operator/k8sutil/endpoint.go index 2db0eaa0cc28..2cef36f18cc6 100644 --- a/pkg/operator/k8sutil/endpoint.go +++ b/pkg/operator/k8sutil/endpoint.go @@ -27,8 +27,7 @@ import ( ) // CreateOrUpdateEndpoint creates a service or updates the service declaratively if it already exists. -func CreateOrUpdateEndpoint(clientset kubernetes.Interface, namespace string, endpointDefinition *v1.Endpoints) (*v1.Endpoints, error) { - ctx := context.TODO() +func CreateOrUpdateEndpoint(ctx context.Context, clientset kubernetes.Interface, namespace string, endpointDefinition *v1.Endpoints) (*v1.Endpoints, error) { name := endpointDefinition.Name logger.Debugf("creating endpoint %q. %v", name, endpointDefinition.Subsets) ep, err := clientset.CoreV1().Endpoints(namespace).Create(ctx, endpointDefinition, metav1.CreateOptions{})