Skip to content

Commit 633944b

Browse files
committed
ServerBootConfig Conditions Populations from Internal APIs
1 parent 5717ea8 commit 633944b

File tree

6 files changed

+40
-22
lines changed

6 files changed

+40
-22
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*.dll
66
*.so
77
*.dylib
8+
.DS_Store
89
bin/*
910
Dockerfile.cross
1011
.DS_Store

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ ADDLICENSE ?= $(LOCALBIN)/addlicense
192192
GOIMPORTS ?= $(LOCALBIN)/goimports
193193
GEN_CRD_API_REFERENCE_DOCS ?= $(LOCALBIN)/gen-crd-api-reference-docs
194194
KUBEBUILDER ?= $(LOCALBIN)/kubebuilder
195+
SETUP_ENVTEST_VERSION ?= v0.17.1 # example pre-0.22
195196

196197
## Tool Versions
197198
KUSTOMIZE_VERSION ?= v5.5.0

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
github.com/go-logr/logr v1.4.3
99
github.com/ironcore-dev/controller-utils v0.11.0
1010
github.com/ironcore-dev/metal v0.0.0-20240624131301-18385f342755
11-
github.com/ironcore-dev/metal-operator v0.1.0
11+
github.com/ironcore-dev/metal-operator v0.1.1-0.20251106073609-33d5f16e0db1
1212
github.com/onsi/ginkgo/v2 v2.27.2
1313
github.com/onsi/gomega v1.38.2
1414
github.com/opencontainers/image-spec v1.1.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ github.com/ironcore-dev/controller-utils v0.11.0 h1:vQhZgPxxFwmSi+fSlPEuwCmI5sOP
140140
github.com/ironcore-dev/controller-utils v0.11.0/go.mod h1:kPIgIjGNMA5zUlwH04rCdDbYnvvDtd79z3Rgav1Yrpg=
141141
github.com/ironcore-dev/metal v0.0.0-20240624131301-18385f342755 h1:EmR3Ngg2wmOXJkxgsdYVuPXLRfwWmO2Fi+htjih6QGY=
142142
github.com/ironcore-dev/metal v0.0.0-20240624131301-18385f342755/go.mod h1:+/bmkghOE7acqXDT/LDH57RemaUzlVwnQjttsOjdoyg=
143-
github.com/ironcore-dev/metal-operator v0.1.0 h1:0GqpKgfH5hG5jULUESsTr1dUH73ip3YJYIqtV8kBqoY=
144-
github.com/ironcore-dev/metal-operator v0.1.0/go.mod h1:JMxYoN5PJ0jvKhWlpV6kR9fhBXdLy2NNtvzJXXN/Iuc=
143+
github.com/ironcore-dev/metal-operator v0.1.1-0.20251106073609-33d5f16e0db1 h1:29bxRPvWNYGfMvAD06uS+bmfFndsAiCNtYbErEdOACc=
144+
github.com/ironcore-dev/metal-operator v0.1.1-0.20251106073609-33d5f16e0db1/go.mod h1:v6j2+CC/3iyRmXUp7JzyGpp/2EGDTEIQGYhlcegD+as=
145145
github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE=
146146
github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung=
147147
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=

internal/controller/serverbootconfiguration_http_controller.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
"fmt"
1010
"strings"
1111

12+
apimeta "k8s.io/apimachinery/pkg/api/meta"
13+
1214
"github.com/containerd/containerd/remotes/docker"
1315
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
1416

@@ -133,24 +135,26 @@ func (r *ServerBootConfigurationHTTPReconciler) reconcile(ctx context.Context, l
133135
return ctrl.Result{}, nil
134136
}
135137

136-
func (r *ServerBootConfigurationHTTPReconciler) patchConfigStateFromHTTPState(ctx context.Context, httpBootConfig *bootv1alpha1.HTTPBootConfig, config *metalv1alpha1.ServerBootConfiguration) error {
137-
if httpBootConfig.Status.State == bootv1alpha1.HTTPBootConfigStateReady {
138-
return r.patchState(ctx, config, metalv1alpha1.ServerBootConfigurationStateReady)
138+
func (r *ServerBootConfigurationHTTPReconciler) patchConfigStateFromHTTPState(ctx context.Context, httpBootConfig *bootv1alpha1.HTTPBootConfig, cfg *metalv1alpha1.ServerBootConfiguration) error {
139+
key := types.NamespacedName{Name: cfg.Name, Namespace: cfg.Namespace}
140+
var cur metalv1alpha1.ServerBootConfiguration
141+
if err := r.Get(ctx, key, &cur); err != nil {
142+
return err
139143
}
144+
base := cur.DeepCopy()
140145

141-
if httpBootConfig.Status.State == bootv1alpha1.HTTPBootConfigStateError {
142-
return r.patchState(ctx, config, metalv1alpha1.ServerBootConfigurationStateError)
146+
switch httpBootConfig.Status.State {
147+
case bootv1alpha1.HTTPBootConfigStateReady:
148+
cur.Status.State = metalv1alpha1.ServerBootConfigurationStateReady
149+
case bootv1alpha1.HTTPBootConfigStateError:
150+
cur.Status.State = metalv1alpha1.ServerBootConfigurationStateError
143151
}
144-
return nil
145-
}
146152

147-
func (r *ServerBootConfigurationHTTPReconciler) patchState(ctx context.Context, config *metalv1alpha1.ServerBootConfiguration, state metalv1alpha1.ServerBootConfigurationState) error {
148-
configBase := config.DeepCopy()
149-
config.Status.State = state
150-
if err := r.Status().Patch(ctx, config, client.MergeFrom(configBase)); err != nil {
151-
return err
153+
for _, c := range httpBootConfig.Status.Conditions {
154+
apimeta.SetStatusCondition(&cur.Status.Conditions, c)
152155
}
153-
return nil
156+
157+
return r.Status().Patch(ctx, &cur, client.MergeFrom(base))
154158
}
155159

156160
// getSystemUUIDFromServer fetches the UUID from the referenced Server object.

internal/controller/serverbootconfiguration_pxe_controller.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"sigs.k8s.io/controller-runtime/pkg/reconcile"
3131

3232
"github.com/ironcore-dev/boot-operator/api/v1alpha1"
33+
apimeta "k8s.io/apimachinery/pkg/api/meta"
3334
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3435
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3536

@@ -159,15 +160,26 @@ func (r *ServerBootConfigurationPXEReconciler) reconcile(ctx context.Context, lo
159160
return ctrl.Result{}, nil
160161
}
161162

162-
func (r *ServerBootConfigurationPXEReconciler) patchConfigStateFromIPXEState(ctx context.Context, ipxeConfig *v1alpha1.IPXEBootConfig, config *metalv1alpha1.ServerBootConfiguration) error {
163-
if ipxeConfig.Status.State == v1alpha1.IPXEBootConfigStateReady {
164-
return r.patchState(ctx, config, metalv1alpha1.ServerBootConfigurationStateReady)
163+
func (r *ServerBootConfigurationPXEReconciler) patchConfigStateFromIPXEState(ctx context.Context, ipxeConfig *v1alpha1.IPXEBootConfig, cfg *metalv1alpha1.ServerBootConfiguration) error {
164+
key := types.NamespacedName{Name: cfg.Name, Namespace: cfg.Namespace}
165+
var cur metalv1alpha1.ServerBootConfiguration
166+
if err := r.Get(ctx, key, &cur); err != nil {
167+
return err
165168
}
169+
base := cur.DeepCopy()
166170

167-
if ipxeConfig.Status.State == v1alpha1.IPXEBootConfigStateError {
168-
return r.patchState(ctx, config, metalv1alpha1.ServerBootConfigurationStateError)
171+
switch ipxeConfig.Status.State {
172+
case v1alpha1.IPXEBootConfigStateReady:
173+
cur.Status.State = metalv1alpha1.ServerBootConfigurationStateReady
174+
case v1alpha1.IPXEBootConfigStateError:
175+
cur.Status.State = metalv1alpha1.ServerBootConfigurationStateError
169176
}
170-
return nil
177+
178+
for _, c := range ipxeConfig.Status.Conditions {
179+
apimeta.SetStatusCondition(&cur.Status.Conditions, c)
180+
}
181+
182+
return r.Status().Patch(ctx, &cur, client.MergeFrom(base))
171183
}
172184

173185
func (r *ServerBootConfigurationPXEReconciler) patchState(ctx context.Context, config *metalv1alpha1.ServerBootConfiguration, state metalv1alpha1.ServerBootConfigurationState) error {

0 commit comments

Comments
 (0)