From e8c609b87b69ae0b6d16744449f0a5136c2af75b Mon Sep 17 00:00:00 2001 From: Lionel Villard Date: Wed, 22 Apr 2020 10:34:21 -0400 Subject: [PATCH] add owner ref to mtping deployment --- config/core/deployments/controller.yaml | 8 ++++++++ pkg/reconciler/pingsource/controller.go | 4 ++++ pkg/reconciler/pingsource/controller_test.go | 12 ++++++++++++ .../pingsource/resources/mt_receive_adapter.go | 16 +++++++++++++++- .../resources/mt_receive_adapter_test.go | 10 ++++++++++ 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/config/core/deployments/controller.yaml b/config/core/deployments/controller.yaml index ffa1b6c8971..ae620e127d0 100644 --- a/config/core/deployments/controller.yaml +++ b/config/core/deployments/controller.yaml @@ -47,6 +47,14 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: CONTROLLER_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: CONTROLLER_UID + valueFrom: + fieldRef: + fieldPath: metadata.uid - name: CONFIG_LOGGING_NAME value: config-logging - name: CONFIG_OBSERVABILITY_NAME diff --git a/pkg/reconciler/pingsource/controller.go b/pkg/reconciler/pingsource/controller.go index e0f41c2002d..571d8141430 100644 --- a/pkg/reconciler/pingsource/controller.go +++ b/pkg/reconciler/pingsource/controller.go @@ -43,6 +43,10 @@ import ( type envConfig struct { Image string `envconfig:"PING_IMAGE" required:"true"` MTImage string `envconfig:"MT_PING_IMAGE" required:"true"` + + // Add this for validation purpose only of validation. + ControllerName string `envconfig:"CONTROLLER_NAME" required:"true"` + ControllerUID string `envconfig:"CONTROLLER_UID" required:"true"` } // NewController initializes the controller and is called by the generated code diff --git a/pkg/reconciler/pingsource/controller_test.go b/pkg/reconciler/pingsource/controller_test.go index 6c8e3e6991f..80c9e678ee8 100644 --- a/pkg/reconciler/pingsource/controller_test.go +++ b/pkg/reconciler/pingsource/controller_test.go @@ -47,6 +47,12 @@ func TestNew(t *testing.T) { if err := os.Setenv("PING_IMAGE", "anything"); err != nil { t.Fatalf("Failed to set env var: %v", err) } + if err := os.Setenv("CONTROLLER_NAME", "anything"); err != nil { + t.Fatalf("Failed to set env var: %v", err) + } + if err := os.Setenv("CONTROLLER_UID", "anything"); err != nil { + t.Fatalf("Failed to set env var: %v", err) + } if err := os.Setenv("MT_PING_IMAGE", "anything"); err != nil { t.Fatalf("Failed to set env var: %v", err) } @@ -54,6 +60,12 @@ func TestNew(t *testing.T) { if err := os.Unsetenv("PING_IMAGE"); err != nil { t.Fatalf("Failed to unset env var: %v", err) } + if err := os.Unsetenv("CONTROLLER_NAME"); err != nil { + t.Fatalf("Failed to unset env var: %v", err) + } + if err := os.Unsetenv("CONTROLLER_UID"); err != nil { + t.Fatalf("Failed to unset env var: %v", err) + } if err := os.Unsetenv("MT_PING_IMAGE"); err != nil { t.Fatalf("Failed to unset env var: %v", err) } diff --git a/pkg/reconciler/pingsource/resources/mt_receive_adapter.go b/pkg/reconciler/pingsource/resources/mt_receive_adapter.go index f15f8bf7fea..c5bb48c64b7 100644 --- a/pkg/reconciler/pingsource/resources/mt_receive_adapter.go +++ b/pkg/reconciler/pingsource/resources/mt_receive_adapter.go @@ -17,11 +17,13 @@ limitations under the License. package resources import ( + "os" + v1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - + "k8s.io/apimachinery/pkg/types" "knative.dev/pkg/system" ) @@ -41,6 +43,8 @@ type MTArgs struct { // MakeMTReceiveAdapter generates the mtping deployment for pingsources func MakeMTReceiveAdapter(args MTArgs) *v1.Deployment { replicas := int32(1) + blockOwnerDeletion := true + isController := true return &v1.Deployment{ TypeMeta: metav1.TypeMeta{ @@ -50,6 +54,16 @@ func MakeMTReceiveAdapter(args MTArgs) *v1.Deployment { ObjectMeta: metav1.ObjectMeta{ Namespace: system.Namespace(), Name: args.MTAdapterName, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "Deployment", + Name: os.Getenv("CONTROLLER_NAME"), // guarantee to be non-empty + UID: types.UID(os.Getenv("CONTROLLER_UID")), // guarantee to be non-empty + Controller: &isController, + BlockOwnerDeletion: &blockOwnerDeletion, + }, + }, }, Spec: v1.DeploymentSpec{ Replicas: &replicas, diff --git a/pkg/reconciler/pingsource/resources/mt_receive_adapter_test.go b/pkg/reconciler/pingsource/resources/mt_receive_adapter_test.go index 758f62c97cc..5856e07b901 100644 --- a/pkg/reconciler/pingsource/resources/mt_receive_adapter_test.go +++ b/pkg/reconciler/pingsource/resources/mt_receive_adapter_test.go @@ -30,6 +30,8 @@ import ( func TestMakeMTPingAdapter(t *testing.T) { replicas := int32(1) + blockOwnerDeletion := true + isController := true args := MTArgs{ ServiceAccountName: "test-sa", @@ -45,6 +47,14 @@ func TestMakeMTPingAdapter(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Namespace: system.Namespace(), Name: args.MTAdapterName, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "apps/v1", + Kind: "Deployment", + Controller: &isController, + BlockOwnerDeletion: &blockOwnerDeletion, + }, + }, }, Spec: v1.DeploymentSpec{ Replicas: &replicas,