Skip to content

Add Configured condition to all controllers#426

Open
adamtrizuljak-sap wants to merge 7 commits into
mainfrom
feat/configured-condition
Open

Add Configured condition to all controllers#426
adamtrizuljak-sap wants to merge 7 commits into
mainfrom
feat/configured-condition

Conversation

@adamtrizuljak-sap

@adamtrizuljak-sap adamtrizuljak-sap commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

https://github.wdf.sap.corp/sap-cloud-infrastructure/neutron-issues/issues/361

  • Initialize the ConfiguredCondition
  • Add deferred call of conditions.RecomputeReady() to ensure the Ready condition is evaluated and set at the end of the reconcile loop
  • cond := conditions.FromError(err) already returns the Configured condition, so we just remove the next line that was overriding it with the Ready condition
  • Update the associated tests to check that the Configured condition has been set
  • Add Kubebuilder printcolumn for the Configured condition

Todo

  • In BGP controller, EVPNInstance (and other) controllers check if it's correct to just replace the ReadyCondition to ConfiguredCondition - I suspect both conditions should be set
  • Fix tests

Comment on lines -446 to +448
Type: v1alpha1.ReadyCondition,
Type: v1alpha1.ConfiguredCondition,

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikatza I'm not sure if this is entirely correct and I'd like to discuss it with you. It seems like we should set both conditions here, not just replace the Ready condition with Configured condition. Same goes for the other files where this was done.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is correct with only setting the "Configured" Condition. The reconcileVRF func is called by reconcile. If the former sets the "Configured" condition, the later still calls RecomputeReady in it's defer call when returning. So the Ready condition would be set according on the "Configured" condition, which is what we want.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that seems to be right. We set the Configured condition explicitly here and setting the Ready condition is taken care off by the deferred call to conditions.RecomputeReady().

@felix-kaestner felix-kaestner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we are adding a new condition to these resources, should we also add a printcolumn like so?

diff --git a/api/core/v1alpha1/acl_types.go b/api/core/v1alpha1/acl_types.go
index 6501f362..a7a01b70 100644
--- a/api/core/v1alpha1/acl_types.go
+++ b/api/core/v1alpha1/acl_types.go
@@ -122,6 +122,7 @@ type AccessControlListStatus struct {
 // +kubebuilder:printcolumn:name="Device",type=string,JSONPath=`.spec.deviceRef.name`
 // +kubebuilder:printcolumn:name="Entries",type=string,JSONPath=`.status.entriesSummary`,priority=1
 // +kubebuilder:printcolumn:name="Ready",type=string,JSONPath=`.status.conditions[?(@.type=="Ready")].status`
+// +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=="Configured")].status`,priority=1
 // +kubebuilder:printcolumn:name="Paused",type=string,JSONPath=`.status.conditions[?(@.type=="Paused")].status`,priority=1
 // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"

@adamtrizuljak-sap adamtrizuljak-sap force-pushed the feat/configured-condition branch from 65211b0 to 4b9f4ad Compare June 30, 2026 14:07
Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
@adamtrizuljak-sap adamtrizuljak-sap force-pushed the feat/configured-condition branch from 032b437 to 8d76d7d Compare July 6, 2026 12:47
@github-actions github-actions Bot added size/M and removed size/L labels Jul 6, 2026
Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Merging this branch will increase overall coverage

Impacted Packages Coverage Δ 🤖
github.com/ironcore-dev/network-operator/api/core/v1alpha1 0.00% (ø)
github.com/ironcore-dev/network-operator/internal/controller/core 62.59% (+0.63%) 👍

Coverage by file

Changed files (no unit tests)

Changed File Coverage Δ Total Covered Missed 🤖
github.com/ironcore-dev/network-operator/api/core/v1alpha1/acl_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/banner_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/bgp_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/certificate_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/dhcprelay_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/dns_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/evpninstance_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/isis_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/managementaccess_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/ntp_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/pim_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/prefixset_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/routingpolicy_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/snmp_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/syslog_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/user_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/vrf_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/internal/controller/core/acl_controller.go 59.86% (+1.70%) 142 (+1) 85 (+3) 57 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/banner_controller.go 59.41% (+1.42%) 170 (+1) 101 (+3) 69 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/bgp_controller.go 70.17% (+0.13%) 238 (+1) 167 (+1) 71 👍
github.com/ironcore-dev/network-operator/internal/controller/core/certificate_controller.go 58.97% (+0.26%) 156 (+1) 92 (+1) 64 👍
github.com/ironcore-dev/network-operator/internal/controller/core/dhcprelay_controller.go 66.02% (+0.13%) 259 (+1) 171 (+1) 88 👍
github.com/ironcore-dev/network-operator/internal/controller/core/dns_controller.go 61.87% (+0.28%) 139 (+1) 86 (+1) 53 👍
github.com/ironcore-dev/network-operator/internal/controller/core/evpninstance_controller.go 69.38% (+4.47%) 209 (+1) 145 (+10) 64 (-9) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/isis_controller.go 61.63% (+1.51%) 172 (-1) 106 (+2) 66 (-3) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/managementaccess_controller.go 59.71% (+1.74%) 139 (+1) 83 (+3) 56 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/ntp_controller.go 59.71% (+1.74%) 139 (+1) 83 (+3) 56 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/pim_controller.go 61.05% (+0.23%) 172 (+1) 105 (+1) 67 👍
github.com/ironcore-dev/network-operator/internal/controller/core/prefixset_controller.go 63.38% (+1.68%) 142 (+1) 90 (+3) 52 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/routingpolicy_controller.go 68.75% (+1.21%) 192 (+1) 132 (+3) 60 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/snmp_controller.go 59.71% (+1.74%) 139 (+1) 83 (+3) 56 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/syslog_controller.go 59.86% (+1.70%) 142 (+1) 85 (+3) 57 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/user_controller.go 58.24% (+1.43%) 170 (+1) 99 (+3) 71 (-2) 👍
github.com/ironcore-dev/network-operator/internal/controller/core/vrf_controller.go 62.59% (+0.27%) 139 (+1) 87 (+1) 52 👍

Please note that the "Total", "Covered", and "Missed" counts above refer to code statements instead of lines of code. The value in brackets refers to the test coverage of that file in the old version of the code.

Changed unit test files

  • github.com/ironcore-dev/network-operator/internal/controller/core/acl_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/banner_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/bgp_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/certificate_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/dns_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/evpninstance_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/isis_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/managementaccess_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/ntp_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/pim_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/prefixset_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/routingpolicy_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/snmp_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/syslog_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/user_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/vrf_controller_test.go

@adamtrizuljak-sap adamtrizuljak-sap marked this pull request as ready for review July 6, 2026 13:35
@adamtrizuljak-sap adamtrizuljak-sap requested a review from a team as a code owner July 6, 2026 13:35

orig := obj.DeepCopy()
if conditions.InitializeConditions(obj, v1alpha1.ReadyCondition) {
if conditions.InitializeConditions(obj, v1alpha1.ReadyCondition, v1alpha1.ConfiguredCondition) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think it would make sense to include/refactor the dhcprelay_controller_test.go and align with the other tests style?

@nikatza

nikatza commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

@adamtrizuljak-sap We merged the aaa resource in the mean time, which unfortunately has the same issue that you fix in this PR. Could you please update your PR and include a fix for it?

Likewise, in this PR we only tackle core resources. There are some other resources like bordergateway and system in cisco/nx that could use this fix too.

Thanks a lot for your contribution! 🔥

Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
Signed-off-by: Adam Trizuljak <adam.trizuljak@sap.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants