Skip to content

Commit 8555854

Browse files
amisevskJPinkney
authored andcommitted
Update codebase to reflect later k8s APIs
Prep code for supporting k8s 1.21: * Add context.Context parameter to Reconcile() functions [1] * Add RBAC get/create/update coordination.k8s.io/v1 Leases (replacing a configmap for leader election locks) [2] * Adapt event handler code to reflect simplification [3] * Adapt to apimachinery/pkg/runtime Log deprecation (replaced with pkg/client Log) [4] * client.Object is preferred in favor of runtime.Object (v0.7.0 release) [5] * Use admission/v1 instead of v1beta1 for webhook requests [6] [1] - kubernetes-sigs/controller-runtime#1054 [2] - kubernetes-sigs/controller-runtime#1144 [3] - kubernetes-sigs/controller-runtime#1119 [4] - kubernetes-sigs/controller-runtime#1105 [5] - kubernetes-sigs/controller-runtime#898 kubernetes-sigs/controller-runtime#1118 [6] - kubernetes-sigs/controller-runtime#1284 kubernetes-sigs/controller-runtime@a32b29d Signed-off-by: Angel Misevski <[email protected]>
1 parent 9fd9a7a commit 8555854

File tree

13 files changed

+25
-30
lines changed

13 files changed

+25
-30
lines changed

controllers/controller/devworkspacerouting/devworkspacerouting_controller.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ type DevWorkspaceRoutingReconciler struct {
6363
// +kubebuidler:rbac:groups=route.openshift.io,resources=routes/status,verbs=get,list,watch
6464
// +kubebuilder:rbac:groups=route.openshift.io,resources=routes/custom-host,verbs=create
6565

66-
func (r *DevWorkspaceRoutingReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
67-
ctx := context.Background()
68-
66+
func (r *DevWorkspaceRoutingReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
6967
reqLogger := r.Log.WithValues("Request.Namespace", req.Namespace, "Request.Name", req.Name)
7068

7169
// Fetch the DevWorkspaceRouting instance

controllers/workspace/devworkspace_controller.go

+6-7
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ type DevWorkspaceReconciler struct {
6767
// +kubebuilder:rbac:groups=workspace.devfile.io,resources=*,verbs=*
6868
// +kubebuilder:rbac:groups=controller.devfile.io,resources=*,verbs=*
6969
/////// Required permissions for controller
70+
// +kubebuilder:rbac:groups=coordination.k8s.io,resources=leases,verbs=get;create;update
7071
// +kubebuilder:rbac:groups=apps;extensions,resources=deployments;replicasets,verbs=*
7172
// +kubebuilder:rbac:groups="",resources=pods;serviceaccounts;secrets;configmaps;persistentvolumeclaims,verbs=*
7273
// +kubebuilder:rbac:groups="",resources=namespaces;events,verbs=get;list;watch
@@ -82,8 +83,7 @@ type DevWorkspaceReconciler struct {
8283
// +kubebuilder:rbac:groups=apps;extensions,resources=deployments,verbs=get;list;watch
8384
// +kubebuilder:rbac:groups="",resources=secrets,resourceNames=workspace-credentials-secret,verbs=get;create;delete
8485

85-
func (r *DevWorkspaceReconciler) Reconcile(req ctrl.Request) (reconcileResult ctrl.Result, err error) {
86-
ctx := context.Background()
86+
func (r *DevWorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (reconcileResult ctrl.Result, err error) {
8787
reqLogger := r.Log.WithValues("Request.Namespace", req.Namespace, "Request.Name", req.Name)
8888
clusterAPI := wsprovision.ClusterAPI{
8989
Client: r.Client,
@@ -465,9 +465,8 @@ func getWorkspaceId(instance *dw.DevWorkspace) (string, error) {
465465

466466
// Mapping the pod to the devworkspace
467467
func dwRelatedPodsHandler() handler.EventHandler {
468-
podToDW := func(mapObj handler.MapObject) []reconcile.Request {
469-
meta := mapObj.Meta
470-
labels := meta.GetLabels()
468+
podToDW := func(obj client.Object) []reconcile.Request {
469+
labels := obj.GetLabels()
471470
if _, ok := labels[constants.DevWorkspaceNameLabel]; !ok {
472471
return nil
473472
}
@@ -481,12 +480,12 @@ func dwRelatedPodsHandler() handler.EventHandler {
481480
{
482481
NamespacedName: types.NamespacedName{
483482
Name: labels[constants.DevWorkspaceNameLabel],
484-
Namespace: meta.GetNamespace(),
483+
Namespace: obj.GetNamespace(),
485484
},
486485
},
487486
}
488487
}
489-
return &handler.EnqueueRequestsFromMapFunc{ToRequests: handler.ToRequestsFunc(podToDW)}
488+
return handler.EnqueueRequestsFromMapFunc(podToDW)
490489
}
491490

492491
func (r *DevWorkspaceReconciler) SetupWithManager(mgr ctrl.Manager) error {

pkg/library/flatten/internal/testutil/k8sClient.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919

2020
dw "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
2121
k8sErrors "k8s.io/apimachinery/pkg/api/errors"
22-
"k8s.io/apimachinery/pkg/runtime"
2322
"k8s.io/apimachinery/pkg/runtime/schema"
2423
"sigs.k8s.io/controller-runtime/pkg/client"
2524
)
@@ -30,7 +29,7 @@ type FakeK8sClient struct {
3029
Errors map[string]TestPluginError
3130
}
3231

33-
func (client *FakeK8sClient) Get(_ context.Context, namespacedName client.ObjectKey, obj runtime.Object) error {
32+
func (client *FakeK8sClient) Get(_ context.Context, namespacedName client.ObjectKey, obj client.Object) error {
3433
template, ok := obj.(*dw.DevWorkspaceTemplate)
3534
if !ok {
3635
return fmt.Errorf("called Get() in fake client with non-DevWorkspaceTemplate")

pkg/provision/workspace/object.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2626
"k8s.io/apimachinery/pkg/runtime"
2727
"k8s.io/apimachinery/pkg/types"
28-
"sigs.k8s.io/controller-runtime/pkg/client"
28+
runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
2929
)
3030

3131
// Map to store diff options for each type we're handling.
@@ -39,7 +39,7 @@ var diffOpts = map[reflect.Type]cmp.Options{
3939
}
4040

4141
// SyncMutableObjects synchronizes runtime objects and changes/updates existing ones
42-
func SyncMutableObjects(objects []runtime.Object, client client.Client, reqLogger logr.Logger) (requeue bool, err error) {
42+
func SyncMutableObjects(objects []runtimeClient.Object, client runtimeClient.Client, reqLogger logr.Logger) (requeue bool, err error) {
4343
for _, object := range objects {
4444
_, shouldRequeue, err := SyncObject(object, client, reqLogger, true)
4545
if err != nil {
@@ -51,7 +51,7 @@ func SyncMutableObjects(objects []runtime.Object, client client.Client, reqLogge
5151
}
5252

5353
// SyncObject synchronizes a runtime object and changes/updates existing ones
54-
func SyncObject(object runtime.Object, client client.Client, reqLogger logr.Logger, update bool) (clusterObject runtime.Object, requeue bool, apiErr error) {
54+
func SyncObject(object runtimeClient.Object, client runtimeClient.Client, reqLogger logr.Logger, update bool) (clusterObject runtime.Object, requeue bool, apiErr error) {
5555
objMeta, isMeta := object.(metav1.Object)
5656
if !isMeta {
5757
return nil, true, errors.NewBadRequest("Converted objects are not valid K8s objects")
@@ -61,7 +61,7 @@ func SyncObject(object runtime.Object, client client.Client, reqLogger logr.Logg
6161

6262
reqLogger.V(1).Info("Managing K8s Object", "kind", objType.String(), "name", objMeta.GetName())
6363

64-
found := reflect.New(objType).Interface().(runtime.Object)
64+
found := reflect.New(objType).Interface().(runtimeClient.Object)
6565
err := client.Get(context.TODO(), types.NamespacedName{Name: objMeta.GetName(), Namespace: objMeta.GetNamespace()}, found)
6666
if err != nil {
6767
if !errors.IsNotFound(err) {

pkg/provision/workspace/rbac.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"github.com/go-logr/logr"
2121
rbacv1 "k8s.io/api/rbac/v1"
2222
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23-
"k8s.io/apimachinery/pkg/runtime"
2423
"sigs.k8s.io/controller-runtime/pkg/client"
2524
)
2625

@@ -32,9 +31,9 @@ func SyncRBAC(workspace *dw.DevWorkspace, client client.Client, reqLogger logr.L
3231
return ProvisioningStatus{Continue: !requeue, Err: err}
3332
}
3433

35-
func generateRBAC(namespace string) []runtime.Object {
34+
func generateRBAC(namespace string) []client.Object {
3635
// TODO: The rolebindings here are created namespace-wide; find a way to limit this, given that each workspace
37-
return []runtime.Object{
36+
return []client.Object{
3837
&rbacv1.Role{
3938
ObjectMeta: metav1.ObjectMeta{
4039
Name: "workspace",

pkg/webhook/kubernetes/tls.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/devfile/devworkspace-operator/pkg/webhook/service"
1919

2020
crclient "sigs.k8s.io/controller-runtime/pkg/client"
21-
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
21+
logf "sigs.k8s.io/controller-runtime/pkg/log"
2222
)
2323

2424
var log = logf.Log.WithName("webhook-k8s")

pkg/webhook/openshift/tls.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"context"
1717

1818
"github.com/devfile/devworkspace-operator/pkg/webhook/service"
19-
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
19+
logf "sigs.k8s.io/controller-runtime/pkg/log"
2020

2121
crclient "sigs.k8s.io/controller-runtime/pkg/client"
2222
)

test/e2e/pkg/client/pod.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func (w *K8sClient) WaitForRunningPodBySelector(namespace, selector string, time
5050
}
5151
if len(podList.Items) == 0 {
5252
log.Printf("Pod not created yet with selector '%s' in namespace %s", selector, namespace)
53-
return fmt.Errorf("Pod not created yet in %s with label %s", namespace, selector)
53+
return fmt.Errorf("pod not created yet in %s with label %s", namespace, selector)
5454
}
5555

5656
for _, pod := range podList.Items {

webhook/server/server.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import (
2020
"github.com/devfile/devworkspace-operator/pkg/constants"
2121
"github.com/devfile/devworkspace-operator/pkg/infrastructure"
2222

23+
logf "sigs.k8s.io/controller-runtime/pkg/log"
2324
"sigs.k8s.io/controller-runtime/pkg/manager"
24-
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
2525
"sigs.k8s.io/controller-runtime/pkg/webhook"
2626
)
2727

webhook/workspace/handler/log.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212

1313
package handler
1414

15-
import logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
15+
import logf "sigs.k8s.io/controller-runtime/pkg/log"
1616

1717
var log = logf.Log.WithName("webhook.workspace.handler")

webhook/workspace/log.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
// Red Hat, Inc. - initial API and implementation
1111
package workspace
1212

13-
import logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
13+
import logf "sigs.k8s.io/controller-runtime/pkg/log"
1414

1515
var log = logf.Log.WithName("webhook.devworkspace")

webhook/workspace/mutate.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"fmt"
1616

1717
"github.com/devfile/devworkspace-operator/webhook/workspace/handler"
18-
"k8s.io/api/admission/v1beta1"
18+
admissionv1 "k8s.io/api/admission/v1"
1919
"sigs.k8s.io/controller-runtime/pkg/client"
2020
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
2121
)
@@ -34,7 +34,7 @@ func NewResourcesMutator(controllerUID, controllerSAName string) *ResourcesMutat
3434
// ResourcesMutator verify if operation is a valid from Workspace controller perspective
3535
func (m *ResourcesMutator) Handle(ctx context.Context, req admission.Request) admission.Response {
3636
switch req.Operation {
37-
case v1beta1.Create:
37+
case admissionv1.Create:
3838
{
3939
switch req.Kind {
4040
case handler.V1alpha1DevWorkspaceKind:
@@ -51,7 +51,7 @@ func (m *ResourcesMutator) Handle(ctx context.Context, req admission.Request) ad
5151
return m.HandleRestrictedAccessCreate(ctx, req)
5252
}
5353
}
54-
case v1beta1.Update:
54+
case admissionv1.Update:
5555
{
5656
switch req.Kind {
5757
case handler.V1alpha1DevWorkspaceKind:

webhook/workspace/validate.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"fmt"
1616

1717
"github.com/devfile/devworkspace-operator/webhook/workspace/handler"
18-
"k8s.io/api/admission/v1beta1"
18+
admissionv1 "k8s.io/api/admission/v1"
1919
"sigs.k8s.io/controller-runtime/pkg/client"
2020
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
2121
)
@@ -32,7 +32,7 @@ func NewResourcesValidator(controllerUID, controllerSAName string) *ResourcesVal
3232
}
3333

3434
func (v *ResourcesValidator) Handle(ctx context.Context, req admission.Request) admission.Response {
35-
if req.Kind == handler.V1PodExecOptionKind && req.Operation == v1beta1.Connect {
35+
if req.Kind == handler.V1PodExecOptionKind && req.Operation == admissionv1.Connect {
3636
return v.ValidateExecOnConnect(ctx, req)
3737
}
3838
// Do not allow operation if the corresponding handler is not found

0 commit comments

Comments
 (0)