Skip to content
This repository was archived by the owner on Nov 18, 2020. It is now read-only.

Commit 3af4c87

Browse files
authored
Merge pull request #45 from estroz/unittests-and-updates
Unit tests, revendor, logging updates
2 parents 4c69344 + 7187102 commit 3af4c87

File tree

198 files changed

+1656
-31845
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

198 files changed

+1656
-31845
lines changed

memcached-operator/Gopkg.lock

Lines changed: 10 additions & 67 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

memcached-operator/Gopkg.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ required = [
4848
[prune]
4949
go-tests = true
5050
non-go = true
51-
51+
5252
[[prune.project]]
5353
name = "k8s.io/code-generator"
5454
non-go = false

memcached-operator/cmd/manager/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
"github.com/operator-framework/operator-sdk-samples/memcached-operator/pkg/apis"
99
"github.com/operator-framework/operator-sdk-samples/memcached-operator/pkg/controller"
10-
k8sutil "github.com/operator-framework/operator-sdk/pkg/util/k8sutil"
10+
k8sutil "github.com/operator-framework/operator-sdk/pkg/k8sutil"
1111
sdkVersion "github.com/operator-framework/operator-sdk/version"
1212
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
1313
"sigs.k8s.io/controller-runtime/pkg/client/config"

memcached-operator/pkg/controller/memcached/memcached_controller.go

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package memcached
22

33
import (
44
"context"
5-
"log"
65
"reflect"
76

87
cachev1alpha1 "github.com/operator-framework/operator-sdk-samples/memcached-operator/pkg/apis/cache/v1alpha1"
@@ -20,9 +19,12 @@ import (
2019
"sigs.k8s.io/controller-runtime/pkg/handler"
2120
"sigs.k8s.io/controller-runtime/pkg/manager"
2221
"sigs.k8s.io/controller-runtime/pkg/reconcile"
22+
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
2323
"sigs.k8s.io/controller-runtime/pkg/source"
2424
)
2525

26+
var log = logf.Log.WithName("controller_memcached")
27+
2628
// Add creates a new Memcached Controller and adds it to the Manager. The Manager will set fields on the Controller
2729
// and Start it when the Manager is Started.
2830
func Add(mgr manager.Manager) error {
@@ -80,7 +82,8 @@ type ReconcileMemcached struct {
8082
// The Controller will requeue the Request to be processed again if the returned error is non-nil or
8183
// Result.Requeue is true, otherwise upon completion it will remove the work from the queue.
8284
func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Result, error) {
83-
log.Printf("Reconciling Memcached %s/%s\n", request.Namespace, request.Name)
85+
reqLogger := log.WithValues("Request.Namespace", request.Namespace, "Request.Name", request.Name)
86+
reqLogger.Info("Reconciling Memcached.")
8487

8588
// Fetch the Memcached instance
8689
memcached := &cachev1alpha1.Memcached{}
@@ -90,11 +93,11 @@ func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Res
9093
// Request object not found, could have been deleted after reconcile request.
9194
// Owned objects are automatically garbage collected. For additional cleanup logic use finalizers.
9295
// Return and don't requeue
93-
log.Printf("Memcached %s/%s not found. Ignoring since object must be deleted\n", request.Namespace, request.Name)
96+
reqLogger.Info("Memcached resource not found. Ignoring since object must be deleted.")
9497
return reconcile.Result{}, nil
9598
}
9699
// Error reading the object - requeue the request.
97-
log.Printf("Failed to get Memcached: %v", err)
100+
reqLogger.Error(err, "Failed to get Memcached.")
98101
return reconcile.Result{}, err
99102
}
100103

@@ -104,16 +107,16 @@ func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Res
104107
if err != nil && errors.IsNotFound(err) {
105108
// Define a new deployment
106109
dep := r.deploymentForMemcached(memcached)
107-
log.Printf("Creating a new Deployment %s/%s\n", dep.Namespace, dep.Name)
110+
reqLogger.Info("Creating a new Deployment.", "Deployment.Namespace", dep.Namespace, "Deployment.Name", dep.Name)
108111
err = r.client.Create(context.TODO(), dep)
109112
if err != nil {
110-
log.Printf("Failed to create new Deployment: %v\n", err)
113+
reqLogger.Error(err, "Failed to create new Deployment.", "Deployment.Namespace", dep.Namespace, "Deployment.Name", dep.Name)
111114
return reconcile.Result{}, err
112115
}
113116
// Deployment created successfully - return and requeue
114117
return reconcile.Result{Requeue: true}, nil
115118
} else if err != nil {
116-
log.Printf("Failed to get Deployment: %v\n", err)
119+
reqLogger.Error(err, "Failed to get Deployment.")
117120
return reconcile.Result{}, err
118121
}
119122

@@ -123,7 +126,7 @@ func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Res
123126
found.Spec.Replicas = &size
124127
err = r.client.Update(context.TODO(), found)
125128
if err != nil {
126-
log.Printf("Failed to update Deployment: %v\n", err)
129+
reqLogger.Error(err, "Failed to update Deployment.", "Deployment.Namespace", found.Namespace, "Deployment.Name", found.Name)
127130
return reconcile.Result{}, err
128131
}
129132
// Spec updated - return and requeue
@@ -134,10 +137,23 @@ func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Res
134137
// List the pods for this memcached's deployment
135138
podList := &corev1.PodList{}
136139
labelSelector := labels.SelectorFromSet(labelsForMemcached(memcached.Name))
137-
listOps := &client.ListOptions{Namespace: memcached.Namespace, LabelSelector: labelSelector}
140+
listOps := &client.ListOptions{
141+
Namespace: memcached.Namespace,
142+
LabelSelector: labelSelector,
143+
// HACK: due to a fake client bug, ListOptions.Raw.TypeMeta must be
144+
// explicitly populated for testing.
145+
//
146+
// See https://github.com/kubernetes-sigs/controller-runtime/issues/168
147+
Raw: &metav1.ListOptions{
148+
TypeMeta: metav1.TypeMeta{
149+
Kind: "Memcached",
150+
APIVersion: cachev1alpha1.SchemeGroupVersion.Version,
151+
},
152+
},
153+
}
138154
err = r.client.List(context.TODO(), listOps, podList)
139155
if err != nil {
140-
log.Printf("Failed to list pods: %v", err)
156+
reqLogger.Error(err, "Failed to list pods.", "Memcached.Namespace", memcached.Namespace, "Memcached.Name", memcached.Name)
141157
return reconcile.Result{}, err
142158
}
143159
podNames := getPodNames(podList.Items)
@@ -147,7 +163,7 @@ func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Res
147163
memcached.Status.Nodes = podNames
148164
err := r.client.Update(context.TODO(), memcached)
149165
if err != nil {
150-
log.Printf("failed to update memcached status: %v", err)
166+
reqLogger.Error(err, "Failed to update Memcached status.")
151167
return reconcile.Result{}, err
152168
}
153169
}

0 commit comments

Comments
 (0)