in pkg/controller/keyvault/placeholder_pod.go [66:115]
func (p *PlaceholderPodController) Reconcile(ctx context.Context, req ctrl.Request) (res ctrl.Result, retErr error) {
// do metrics
defer func() {
// placing this call inside a closure allows for result and err to be bound after Reconcile executes
// this makes sure they have the proper value
// just calling defer metrics.HandleControllerReconcileMetrics(controllerName, result, err) would bind
// the values of result and err to their zero values, since they were just instantiated
metrics.HandleControllerReconcileMetrics(placeholderPodControllerName, res, retErr)
}()
logger, err := logr.FromContext(ctx)
if err != nil {
return ctrl.Result{}, fmt.Errorf("creating logger: %w", err)
}
logger = placeholderPodControllerName.AddToLogger(logger).WithValues("namespace", req.Namespace, "name", req.Name)
logger.Info("getting secret provider class")
spc := &secv1.SecretProviderClass{}
err = p.client.Get(ctx, req.NamespacedName, spc)
if err != nil {
if client.IgnoreNotFound(err) != nil {
logger.Error(err, "failed to fetch SPC: %s", err.Error())
return ctrl.Result{}, fmt.Errorf("fetching SPC: %w", err)
}
return ctrl.Result{}, nil
}
logger = logger.WithValues("name", spc.Name, "namespace", spc.Namespace, "generation", spc.Generation)
dep := &appsv1.Deployment{
TypeMeta: metav1.TypeMeta{
APIVersion: "apps/v1",
Kind: "Deployment",
},
ObjectMeta: metav1.ObjectMeta{
Name: spc.Name,
Namespace: spc.Namespace,
Labels: spc.Labels,
OwnerReferences: []metav1.OwnerReference{{
APIVersion: spc.APIVersion,
Controller: util.ToPtr(true),
Kind: spc.Kind,
Name: spc.Name,
UID: spc.UID,
}},
},
}
logger = logger.WithValues("deployment", dep.Name)
return p.reconcileObjectDeployment(dep, spc, req, ctx, logger)
}