Skip to content

Commit

Permalink
fix crd example to satisfy #319
Browse files Browse the repository at this point in the history
  • Loading branch information
Mengqi Yu committed Feb 28, 2019
1 parent 573a850 commit 49dca2b
Showing 1 changed file with 9 additions and 22 deletions.
31 changes: 9 additions & 22 deletions examples/crd/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,10 @@ package main
import (
"context"

"github.com/go-logr/logr"

appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/examples/crd/pkg"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
Expand Down Expand Up @@ -65,28 +62,18 @@ func (r *FirstMateController) Reconcile(request reconcile.Request) (reconcile.Re
}

dep := &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: request.Name, Namespace: request.Namespace}}
updateFn := (&createOrUpdateDeployment{firstMate: fm, log: fmLog}).do

_, err := controllerutil.CreateOrUpdate(ctx, r.client, dep, updateFn)
_, err := controllerutil.CreateOrUpdate(ctx, r.client, dep, func() error {
fmLog.Info("creating or updating deployment")
dep.Labels = fm.Labels
dep.Spec.Replicas = &fm.Spec.Crew
dep.Spec.Template.Labels = fm.Labels
dep.Spec.Selector.MatchLabels = fm.Labels
dep.Spec.Template.Spec.Containers = []corev1.Container{{Name: "nginx", Image: "nginx"}}
return nil
})
if err != nil {
return reconcile.Result{}, err
}

return reconcile.Result{}, nil
}

type createOrUpdateDeployment struct {
firstMate *pkg.FirstMate
log logr.Logger
}

func (r *createOrUpdateDeployment) do(existing runtime.Object) error {
r.log.Info("creating or updating deployment")
dep := existing.(*appsv1.Deployment)
dep.Labels = r.firstMate.Labels
dep.Spec.Replicas = &r.firstMate.Spec.Crew
dep.Spec.Template.Labels = r.firstMate.Labels
dep.Spec.Selector.MatchLabels = r.firstMate.Labels
dep.Spec.Template.Spec.Containers = []corev1.Container{{Name: "nginx", Image: "nginx"}}
return nil
}

0 comments on commit 49dca2b

Please sign in to comment.