Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
8d24435
remove spacebinding request migration controller
mfrancisc Dec 7, 2023
a25fb02
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Jan 2, 2024
fd840c6
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Feb 7, 2024
0221d40
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Feb 14, 2024
0f4717d
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Feb 19, 2024
0977ae6
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Mar 26, 2024
7aa35c5
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Apr 3, 2024
d09f3b8
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Apr 4, 2024
79c20ca
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Apr 25, 2024
b21f39f
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc May 27, 2024
b0aea00
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc May 31, 2024
e9e35bc
Merge branch 'master' of github.com:mfrancisc/host-operator
mfrancisc Jul 29, 2024
969562e
Merge branch 'master' of github.com:mfrancisc/host-operator
Aug 28, 2024
344bc04
Merge branch 'master' of github.com:mfrancisc/host-operator
Sep 12, 2024
ea71877
Merge branch 'master' of github.com:mfrancisc/host-operator
Sep 23, 2024
ef294f7
Merge branch 'master' of github.com:mfrancisc/host-operator
Sep 27, 2024
1f8d51d
Merge branch 'master' of github.com:mfrancisc/host-operator
Oct 31, 2024
b27cde7
Merge branch 'master' of github.com:mfrancisc/host-operator
Nov 6, 2024
bbb2689
Merge branch 'master' of github.com:mfrancisc/host-operator
Nov 18, 2024
ec51de9
Merge branch 'master' of github.com:mfrancisc/host-operator
Nov 28, 2024
cc3a260
Merge branch 'master' of github.com:mfrancisc/host-operator
Dec 16, 2024
14b1b26
Merge branch 'master' of github.com:mfrancisc/host-operator
Jan 7, 2025
28b6608
Merge branch 'master' of github.com:mfrancisc/host-operator
Jan 9, 2025
d844c83
Merge branch 'master' of github.com:mfrancisc/host-operator
Jan 16, 2025
a08f667
Merge branch 'master' of github.com:mfrancisc/host-operator
Jan 17, 2025
553b7fe
Merge branch 'master' of github.com:mfrancisc/host-operator
Jan 23, 2025
4e38ce0
Merge branch 'master' of github.com:mfrancisc/host-operator
Feb 10, 2025
094954e
Merge branch 'master' of github.com:mfrancisc/host-operator
Feb 25, 2025
09f9f30
handle conditions on nstemplatetier
Feb 25, 2025
e1fa93c
move reasons into api
Feb 26, 2025
66d81bd
Merge branch 'master' of github.com:mfrancisc/host-operator
Feb 27, 2025
d81141c
merge conflicts
Feb 27, 2025
3e142e5
Merge branch 'master' into tierconditions
fbm3307 Feb 28, 2025
30342fb
Merge branch 'master' into tierconditions
mfrancisc Mar 3, 2025
45404cd
refactor err conditions
Mar 3, 2025
79863da
Merge branch 'master' of github.com:mfrancisc/host-operator
Mar 4, 2025
7978510
update api
Mar 4, 2025
5e18a51
Empty-Commit
Mar 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 52 additions & 2 deletions controllers/nstemplatetier/nstemplatetier_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
toolchainv1alpha1 "github.com/codeready-toolchain/api/api/v1alpha1"
"github.com/codeready-toolchain/host-operator/controllers/toolchainconfig"
"github.com/codeready-toolchain/host-operator/pkg/templates/nstemplatetiers"
"github.com/codeready-toolchain/toolchain-common/pkg/condition"
"github.com/redhat-cop/operator-utils/pkg/util"
corev1 "k8s.io/api/core/v1"

"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
Expand Down Expand Up @@ -71,14 +74,21 @@

// check if the `status.revisions` field is up-to-date and create a TTR for each TierTemplate
if created, err := r.ensureRevision(ctx, tier); err != nil {
// todo add/update ready condition false in the NSTemplateTier when something fails
// set ready condition false in the NSTemplateTier
if err := r.setStatusFailed(ctx, tier, FailedCondition(toolchainv1alpha1.NSTemplateTierUnableToEnsureRevisionsReason, err.Error())); err != nil {
return reconcile.Result{}, err
}

Check warning on line 80 in controllers/nstemplatetier/nstemplatetier_controller.go

View check run for this annotation

Codecov / codecov/patch

controllers/nstemplatetier/nstemplatetier_controller.go#L79-L80

Added lines #L79 - L80 were not covered by tests

return reconcile.Result{}, fmt.Errorf("unable to create new TierTemplateRevision after NSTemplateTier changed: %w", err)
} else if created {
logger.Info("Requeue after creating a new TTR")
return reconcile.Result{RequeueAfter: time.Second}, nil
}

return reconcile.Result{}, nil
// set ready condition on NSTemplateTier
err = r.updateStatus(ctx, tier, ReadyCondition())

return reconcile.Result{}, err
}

// ensureRevision ensures that there is a TierTemplateRevision CR for each of the TierTemplate.
Expand Down Expand Up @@ -221,3 +231,43 @@

return ttr
}

func (r *Reconciler) setStatusFailed(ctx context.Context, tmplTier *toolchainv1alpha1.NSTemplateTier, failedCondition toolchainv1alpha1.Condition) error {
if err := r.updateStatus(
ctx,
tmplTier,
failedCondition,
); err != nil {
logger := log.FromContext(ctx)
logger.Error(err, "unable to update NSTemplateTier condition")
return err
}

Check warning on line 244 in controllers/nstemplatetier/nstemplatetier_controller.go

View check run for this annotation

Codecov / codecov/patch

controllers/nstemplatetier/nstemplatetier_controller.go#L241-L244

Added lines #L241 - L244 were not covered by tests
return nil
}

func (r *Reconciler) updateStatus(ctx context.Context, tmplTier *toolchainv1alpha1.NSTemplateTier, conditions ...toolchainv1alpha1.Condition) error {
var updated bool
tmplTier.Status.Conditions, updated = condition.AddOrUpdateStatusConditions(tmplTier.Status.Conditions, conditions...)
if !updated {
// Nothing changed
return nil
}

Check warning on line 254 in controllers/nstemplatetier/nstemplatetier_controller.go

View check run for this annotation

Codecov / codecov/patch

controllers/nstemplatetier/nstemplatetier_controller.go#L252-L254

Added lines #L252 - L254 were not covered by tests
return r.Client.Status().Update(ctx, tmplTier)
}

func FailedCondition(reason string, cause string) toolchainv1alpha1.Condition {
return toolchainv1alpha1.Condition{
Type: toolchainv1alpha1.ConditionReady,
Status: corev1.ConditionFalse,
Reason: reason,
Message: cause,
}
}

func ReadyCondition() toolchainv1alpha1.Condition {
return toolchainv1alpha1.Condition{
Type: toolchainv1alpha1.ConditionReady,
Status: corev1.ConditionTrue,
Reason: toolchainv1alpha1.NSTemplateTierProvisionedReason,
}
}
12 changes: 11 additions & 1 deletion controllers/nstemplatetier/nstemplatetier_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ func TestReconcile(t *testing.T) {
require.Equal(t, reconcile.Result{Requeue: false}, res) // no reconcile
// revisions are the same
tiertest.AssertThatNSTemplateTier(t, "base1ns", cl).
HasConditions(
nstemplatetier.ReadyCondition(),
).
HasStatusTierTemplateRevisions(tierTemplatesRefs)
// no TierTemplateRevision CRs were created
tiertemplaterevision.AssertThatTTRs(t, cl, base1nsTier.GetNamespace()).DoNotExist()
Expand Down Expand Up @@ -161,6 +164,9 @@ func TestReconcile(t *testing.T) {
require.Equal(t, reconcile.Result{Requeue: false}, res) // no reconcile
// revisions are the same
tiertest.AssertThatNSTemplateTier(t, "base1ns", cl).
HasConditions(
nstemplatetier.ReadyCondition(),
).
HasStatusTierTemplateRevisions(tierTemplatesRefs)
// expected TierTemplateRevision CRs are still there
ttrs := toolchainv1alpha1.TierTemplateRevisionList{}
Expand Down Expand Up @@ -268,9 +274,13 @@ func TestReconcile(t *testing.T) {
_, err := r.Reconcile(context.TODO(), req)
// then
// we expect an error caused by the absence of the tiertemplate for the `code` namespace CR
require.ErrorContains(t, err, "tiertemplates.toolchain.dev.openshift.com \"base1ns-code-123456new\" not found")
errCause := "tiertemplates.toolchain.dev.openshift.com \"base1ns-code-123456new\" not found"
require.ErrorContains(t, err, errCause)
// the revisions field also should remain empty
tiertest.AssertThatNSTemplateTier(t, "base1ns", cl).
HasConditions(
nstemplatetier.FailedCondition(toolchainv1alpha1.NSTemplateTierUnableToEnsureRevisionsReason, errCause),
).
HasNoStatusTierTemplateRevisions()
// and the TierTemplateRevision CRs are not created
tiertemplaterevision.AssertThatTTRs(t, cl, base1nsTier.GetNamespace()).DoNotExist()
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module github.com/codeready-toolchain/host-operator

require (
cloud.google.com/go/recaptchaenterprise/v2 v2.13.0
github.com/codeready-toolchain/api v0.0.0-20250227073728-5999971adb48
github.com/codeready-toolchain/api v0.0.0-20250304130838-c9c2ff18f4de
github.com/codeready-toolchain/toolchain-common v0.0.0-20250303095208-d379ee86d136
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-bindata/go-bindata v3.1.2+incompatible
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/codeready-toolchain/api v0.0.0-20250227073728-5999971adb48 h1:jqGcYw4KdQzqe5WEp+06HXBRyosAktgO5Y6ADs+NF5A=
github.com/codeready-toolchain/api v0.0.0-20250227073728-5999971adb48/go.mod h1:gPwicZPTmRm1PF75ysEYXaYKdXoFgwgCggTJd1oYmOs=
github.com/codeready-toolchain/api v0.0.0-20250304130838-c9c2ff18f4de h1:64key4W/2oUqzwt3z4ZOanPGgHKJMiKUwYaUUpeUO8Q=
github.com/codeready-toolchain/api v0.0.0-20250304130838-c9c2ff18f4de/go.mod h1:gPwicZPTmRm1PF75ysEYXaYKdXoFgwgCggTJd1oYmOs=
github.com/codeready-toolchain/toolchain-common v0.0.0-20250303095208-d379ee86d136 h1:IqJ1tXl6IJuCqAW9MSji9TbMX2zWLBMEWD82u6+yui8=
github.com/codeready-toolchain/toolchain-common v0.0.0-20250303095208-d379ee86d136/go.mod h1:mNRKnxjBHxggT03t6TwGJT5AZvmHMn6oQ32DrkGwV+w=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
Expand Down
7 changes: 7 additions & 0 deletions test/nstemplatetier/assertion.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,10 @@ func (a *Assertion) HasNoStatusTierTemplateRevisions() *Assertion {
require.Nil(a.t, a.tier.Status.Revisions)
return a
}

func (a *Assertion) HasConditions(expected ...toolchainv1alpha1.Condition) *Assertion {
err := a.loadResource()
require.NoError(a.t, err)
test.AssertConditionsMatch(a.t, a.tier.Status.Conditions, expected...)
return a
}
Loading