Merge pull request #19 from fluxcd/fix-resume

Fix resume waiting
pull/20/head
Stefan Prodan 5 years ago committed by GitHub
commit 4c7f133315
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -99,5 +99,6 @@ jobs:
kubectl version --client --short kubectl version --client --short
kustomize version --short kustomize version --short
kubectl -n gitops-system get all kubectl -n gitops-system get all
kubectl -n gitops-system get kustomizations -oyaml
kubectl -n gitops-system logs deploy/source-controller kubectl -n gitops-system logs deploy/source-controller
kubectl -n gitops-system logs deploy/kustomize-controller kubectl -n gitops-system logs deploy/kustomize-controller

@ -5,9 +5,12 @@ import (
"fmt" "fmt"
kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1alpha1" kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1alpha1"
sourcev1 "github.com/fluxcd/source-controller/api/v1alpha1"
"github.com/spf13/cobra" "github.com/spf13/cobra"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"sigs.k8s.io/controller-runtime/pkg/client"
) )
var resumeKsCmd = &cobra.Command{ var resumeKsCmd = &cobra.Command{
@ -55,7 +58,7 @@ func resumeKsCmdRun(cmd *cobra.Command, args []string) error {
logWaiting("waiting for kustomization sync") logWaiting("waiting for kustomization sync")
if err := wait.PollImmediate(pollInterval, timeout, if err := wait.PollImmediate(pollInterval, timeout,
isKustomizationReady(ctx, kubeClient, name, namespace)); err != nil { isKustomizationResumed(ctx, kubeClient, name, namespace)); err != nil {
return err return err
} }
@ -74,3 +77,33 @@ func resumeKsCmdRun(cmd *cobra.Command, args []string) error {
return nil return nil
} }
func isKustomizationResumed(ctx context.Context, kubeClient client.Client, name, namespace string) wait.ConditionFunc {
return func() (bool, error) {
var kustomization kustomizev1.Kustomization
namespacedName := types.NamespacedName{
Namespace: namespace,
Name: name,
}
err := kubeClient.Get(ctx, namespacedName, &kustomization)
if err != nil {
return false, err
}
for _, condition := range kustomization.Status.Conditions {
if condition.Type == sourcev1.ReadyCondition {
if condition.Status == corev1.ConditionTrue {
return true, nil
} else if condition.Status == corev1.ConditionFalse {
if condition.Reason == kustomizev1.SuspendedReason {
return false, nil
}
return false, fmt.Errorf(condition.Message)
}
}
}
return false, nil
}
}

Loading…
Cancel
Save