From 2aac26227b4c30814922c80fed25c7d56076bba5 Mon Sep 17 00:00:00 2001 From: Aleksey Dukhovniy Date: Tue, 9 Jun 2020 16:16:03 +0200 Subject: [PATCH] KEP-29: instance controller reconciliation for parent instances (#1555) --- pkg/apis/kudo/v1beta1/instance_types.go | 4 ++-- pkg/apis/kudo/v1beta1/instance_types_helpers.go | 13 ------------- pkg/controller/instance/instance_controller.go | 1 + pkg/engine/task/task_kudo_operator.go | 2 +- .../operator-with-dependencies/01-assert.yaml | 10 ++++++++++ 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/pkg/apis/kudo/v1beta1/instance_types.go b/pkg/apis/kudo/v1beta1/instance_types.go index a1fc9078b..9f178482f 100644 --- a/pkg/apis/kudo/v1beta1/instance_types.go +++ b/pkg/apis/kudo/v1beta1/instance_types.go @@ -182,12 +182,12 @@ var ( } ) -// IsTerminal returns true if the status is terminal (either complete, or in a nonrecoverable error) +// IsTerminal returns true if the status is terminal (either complete, or in a fatal error) func (s ExecutionStatus) IsTerminal() bool { return s == ExecutionComplete || s == ExecutionFatalError } -// IsFinished returns true if the status is complete regardless of errors +// IsFinished returns true if the status is complete successfully (not in 'FATAL_ERROR' state) func (s ExecutionStatus) IsFinished() bool { return s == ExecutionComplete } diff --git a/pkg/apis/kudo/v1beta1/instance_types_helpers.go b/pkg/apis/kudo/v1beta1/instance_types_helpers.go index 7e6b147dd..8cc048a86 100644 --- a/pkg/apis/kudo/v1beta1/instance_types_helpers.go +++ b/pkg/apis/kudo/v1beta1/instance_types_helpers.go @@ -208,19 +208,6 @@ func wasRunAfter(p1 PlanStatus, p2 PlanStatus) bool { return p1.LastUpdatedTimestamp.Time.After(p2.LastUpdatedTimestamp.Time) } -// GetExistingParamDefinitions retrieves parameter metadata from OperatorVersion -func GetExistingParamDefinitions(params map[string]string, ov *OperatorVersion) []Parameter { - defs := []Parameter{} - for p1 := range params { - for _, p2 := range ov.Spec.Parameters { - if p2.Name == p1 { - defs = append(defs, p2) - } - } - } - return defs -} - // GetParamDefinitions retrieves parameter metadata from OperatorVersion but returns an error if any parameter is missing func GetParamDefinitions(params map[string]string, ov *OperatorVersion) ([]Parameter, error) { defs := []Parameter{} diff --git a/pkg/controller/instance/instance_controller.go b/pkg/controller/instance/instance_controller.go index 93bf0b61f..cfbb40411 100644 --- a/pkg/controller/instance/instance_controller.go +++ b/pkg/controller/instance/instance_controller.go @@ -175,6 +175,7 @@ func (r *Reconciler) Reconcile(request ctrl.Request) (ctrl.Result, error) { } // ---------- 2. Get currently scheduled plan if it exists ---------- + // get the scheduled plan plan, uid := scheduledPlan(instance, ov) if plan == "" { diff --git a/pkg/engine/task/task_kudo_operator.go b/pkg/engine/task/task_kudo_operator.go index abaccd2e3..08b442778 100644 --- a/pkg/engine/task/task_kudo_operator.go +++ b/pkg/engine/task/task_kudo_operator.go @@ -137,7 +137,7 @@ func instanceResource(instanceName, operatorName, operatorVersionName, namespace }, Status: v1beta1.InstanceStatus{}, } - if err := controllerutil.SetControllerReference(owner, instance, scheme); err != nil { + if err := controllerutil.SetOwnerReference(owner, instance, scheme); err != nil { return nil, fmt.Errorf("failed to set resource ownership for the new instance: %v", err) } diff --git a/test/integration/operator-with-dependencies/01-assert.yaml b/test/integration/operator-with-dependencies/01-assert.yaml index 6e1a93160..7cae89075 100644 --- a/test/integration/operator-with-dependencies/01-assert.yaml +++ b/test/integration/operator-with-dependencies/01-assert.yaml @@ -1,5 +1,15 @@ apiVersion: kudo.dev/v1beta1 kind: Instance +metadata: + name: dummy-instance +status: + planStatus: + deploy: + status: COMPLETE + +--- +apiVersion: kudo.dev/v1beta1 +kind: Instance metadata: name: dummy-instance.child status: