Skip to content

Commit

Permalink
Move health checks to kubernetes package and extract logging (#1677)
Browse files Browse the repository at this point in the history
* Refactored health tool

Signed-off-by: Andreas Neumann <aneumann@mesosphere.com>

Co-authored-by: Ken Sipe <kensipe@gmail.com>
  • Loading branch information
ANeumann82 and kensipe committed Sep 10, 2020
1 parent 6fda0fa commit 8dccafc
Show file tree
Hide file tree
Showing 9 changed files with 234 additions and 167 deletions.
145 changes: 0 additions & 145 deletions pkg/engine/health/health.go

This file was deleted.

30 changes: 27 additions & 3 deletions pkg/engine/task/task_apply.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ import (

kudoapi "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1"
"github.com/kudobuilder/kudo/pkg/engine"
"github.com/kudobuilder/kudo/pkg/engine/health"
"github.com/kudobuilder/kudo/pkg/engine/resource"
"github.com/kudobuilder/kudo/pkg/kubernetes/status"
"github.com/kudobuilder/kudo/pkg/util/kudo"
)

Expand Down Expand Up @@ -238,15 +238,39 @@ func strategicThreeWayMergePatch(r runtime.Object, original, modified, current [

func isHealthy(ro []runtime.Object) error {
for _, r := range ro {
err := health.IsHealthy(r)
err := isResourceHealthy(r)
if err != nil {
key, _ := client.ObjectKeyFromObject(r)
key, _ := client.ObjectKeyFromObject(r) // err not possible as all runtime.Objects have metadata
return fmt.Errorf("object %s/%s is NOT healthy: %w", key.Namespace, key.Name, err)
}
}
return nil
}

func isResourceHealthy(obj runtime.Object) error {
healthy, msg, err := status.IsHealthy(obj)
if err != nil {
return err
}
if healthy {
if msg != "" {
log.Printf("HealthUtil: %s", msg)
}
return nil
}
isTerminal, terminalMsg, err := status.IsTerminallyFailed(obj)
if err != nil {
return err
}
if isTerminal {
log.Printf("HealthUtil: %s", terminalMsg)
return fmt.Errorf("%wHealthUtil: %s", engine.ErrFatalExecution, terminalMsg)
}

log.Printf("HealthUtil: %s", msg)
return errors.New(msg)
}

// copy from k8s.io/kubectl@v0.16.6/pkg/util/apply.go, with adjustments
// GetOriginalConfiguration retrieves the original configuration of the object
// from the annotation.
Expand Down
21 changes: 15 additions & 6 deletions pkg/engine/task/task_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
"log"

"github.com/kudobuilder/kudo/pkg/engine/health"
"github.com/kudobuilder/kudo/pkg/kubernetes/status"

apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -54,11 +54,20 @@ func (dt DeleteTask) Run(ctx Context) (bool, error) {
return false, err
}

// 6. - Check health: always true for Delete task -
err = health.IsDeleted(ctx.Client, ctx.Discovery, objs)
if err != nil {
log.Printf("TaskExecution: %v", err)
return false, nil
// 6. - Check health - wait for object deletion
return allObjsDeleted(ctx, objs)
}

func allObjsDeleted(ctx Context, objs []runtime.Object) (bool, error) {
for _, obj := range objs {
objDeleted, _, err := status.IsDeleted(ctx.Client, ctx.Discovery, obj)
if err != nil {
log.Printf("TaskExecution: wait for object deletion: %v", err)
return false, nil
}
if !objDeleted {
return false, nil
}
}
return true, nil
}
Expand Down
3 changes: 1 addition & 2 deletions pkg/engine/task/task_kudo_operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"

kudoapi "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1"
"github.com/kudobuilder/kudo/pkg/engine/health"
"github.com/kudobuilder/kudo/pkg/engine/renderer"
parser "github.com/kudobuilder/kudo/pkg/kudoctl/cmd/params"
"github.com/kudobuilder/kudo/pkg/kudoctl/packages"
Expand Down Expand Up @@ -63,7 +62,7 @@ func (kt KudoOperatorTask) Run(ctx Context) (bool, error) {
}

// 4. - Check the Instance health -
if err := health.IsHealthy(instance); err != nil {
if err := isResourceHealthy(instance); err != nil {
return false, nil
}

Expand Down
Loading

0 comments on commit 8dccafc

Please sign in to comment.