Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .custom-gcl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# with all the plugins listed below.
#
# See: https://golangci-lint.run/plugins/module-plugins/
version: v2.8.0
version: v2.11.4
plugins:
# logcheck validates structured logging calls and parameters (e.g., balanced key-value pairs)
- module: "sigs.k8s.io/logtools"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ jobs:
- name: Run linter
uses: golangci/golangci-lint-action@v9
with:
version: v2.10
version: v2.11
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and Cust

.PHONY: generate
generate: controller-gen goimports ## Generate code containing DeepCopy, DeepCopyInto, DeepCopyObject, and ApplyConfiguration implementations.
"$(CONTROLLER_GEN)" object:headerFile="hack/boilerplate.go.txt" paths="./..."
"$(CONTROLLER_GEN)" object paths="./..."
"$(CONTROLLER_GEN)" applyconfiguration:headerFile="hack/boilerplate.go.txt" paths="./api/..." output:applyconfiguration:dir=./client/applyconfiguration
"$(GOIMPORTS)" -w .

Expand Down Expand Up @@ -295,7 +295,7 @@ ENVTEST_K8S_VERSION ?= $(shell go list -m -f "{{ .Version }}" k8s.io/api | awk -
GOLANGCI_LINT_VERSION ?= v2.10
GOIMPORTS_VERSION ?= v0.38.0
CRD_REF_DOCS_VERSION ?= v0.2.0
KUBEBUILDER_VERSION ?= v4.13.1
KUBEBUILDER_VERSION ?= v4.14.0
ADDLICENSE_VERSION ?= v1.1.1
GINKGO_VERSION ?= $(shell go list -m -f '{{.Version}}' github.com/onsi/ginkgo/v2)
PROMTOOL_VERSION ?= 3.11.3
Expand Down
2 changes: 1 addition & 1 deletion PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# This file is used to track the info used to scaffold your project
# and allow the plugins properly work.
# More info: https://book.kubebuilder.io/reference/project-config.html
cliVersion: 4.13.1
cliVersion: 4.14.0
domain: ironcore.dev
layout:
- go.kubebuilder.io/v4
Expand Down
3 changes: 2 additions & 1 deletion REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ path = [
"package-lock.json",
"internal/cmd/visualizer/index.html",
"test/data/*.json",
"test/data/*.yaml"
"test/data/*.yaml",
"api/v1alpha1/zz_generated.deepcopy.go"
]
precedence = "aggregate"
SPDX-FileCopyrightText = "2024 SAP SE or an SAP affiliate company and IronCore contributors"
Expand Down
2 changes: 1 addition & 1 deletion api/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and IronCore contributors
// SPDX-License-Identifier: Apache-2.0

// Package v1alpha1 contains API Schema definitions for the metal v1alpha1 API group
// Package v1alpha1 contains API Schema definitions for the metal v1alpha1 API group.
Comment thread
afritzler marked this conversation as resolved.
// +kubebuilder:object:generate=true
// +groupName=metal.ironcore.dev
// +kubebuilder:ac:generate=true
Expand Down
3 changes: 0 additions & 3 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 23 additions & 23 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,14 +413,14 @@ func main() { // nolint: gocyclo
DefaultProtocol: effectiveProtocol,
SkipCertValidation: effectiveSkipCert,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "Endpoint")
setupLog.Error(err, "Failed to create controller", "controller", "endpoint")
os.Exit(1)
}
if err = (&controller.BMCSecretReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMCSecret")
setupLog.Error(err, "Failed to create controller", "controller", "bmcsecret")
os.Exit(1)
}
if err = (&controller.BMCReconciler{
Expand All @@ -439,7 +439,7 @@ func main() { // nolint: gocyclo
BasicAuth: true,
},
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMC")
setupLog.Error(err, "Failed to create controller", "controller", "bmc")
os.Exit(1)
}
if err = (&controller.ServerReconciler{
Expand Down Expand Up @@ -470,14 +470,14 @@ func main() { // nolint: gocyclo
},
DiscoveryTimeout: discoveryTimeout,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "Server")
setupLog.Error(err, "Failed to create controller", "controller", "server")
os.Exit(1)
}
if err = (&controller.ServerBootConfigurationReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "ServerBootConfiguration")
setupLog.Error(err, "Failed to create controller", "controller", "serverbootconfiguration")
os.Exit(1)
}
if err = (&controller.ServerClaimReconciler{
Expand All @@ -487,14 +487,14 @@ func main() { // nolint: gocyclo
Scheme: mgr.GetScheme(),
MaxConcurrentReconciles: serverClaimMaxConcurrentReconciles,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "ServerClaim")
setupLog.Error(err, "Failed to create controller", "controller", "serverclaim")
os.Exit(1)
}
if err = (&controller.ServerMaintenanceReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "ServerMaintenance")
setupLog.Error(err, "Failed to create controller", "controller", "servermaintenance")
os.Exit(1)
}
if err = (&controller.BIOSSettingsReconciler{
Expand All @@ -515,7 +515,7 @@ func main() { // nolint: gocyclo
TimeoutExpiry: biosSettingsApplyTimeout,
DefaultFailedAutoRetryCount: int32(defaultFailedAutoRetryCount),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BIOSSettings")
setupLog.Error(err, "Failed to create controller", "controller", "biossettings")
os.Exit(1)
}
if err = (&controller.BIOSVersionReconciler{
Expand All @@ -535,7 +535,7 @@ func main() { // nolint: gocyclo
},
DefaultFailedAutoRetryCount: int32(defaultFailedAutoRetryCount),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BIOSVersion")
setupLog.Error(err, "Failed to create controller", "controller", "biosversion")
os.Exit(1)
}
if err = (&controller.BMCSettingsReconciler{
Expand All @@ -555,7 +555,7 @@ func main() { // nolint: gocyclo
},
DefaultFailedAutoRetryCount: int32(defaultFailedAutoRetryCount),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMCSettings")
setupLog.Error(err, "Failed to create controller", "controller", "bmcsettings")
os.Exit(1)
}
if err = (&controller.BMCVersionReconciler{
Expand All @@ -575,39 +575,39 @@ func main() { // nolint: gocyclo
},
DefaultFailedAutoRetryCount: int32(defaultFailedAutoRetryCount),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMCVersion")
setupLog.Error(err, "Failed to create controller", "controller", "bmcversion")
os.Exit(1)
}
if err = (&controller.BIOSVersionSetReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
ResyncInterval: maintenanceResyncInterval,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BIOSVersionSet")
setupLog.Error(err, "Failed to create controller", "controller", "biosversionset")
os.Exit(1)
}
if err = (&controller.BIOSSettingsSetReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
ResyncInterval: maintenanceResyncInterval,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BIOSSettingsSet")
setupLog.Error(err, "Failed to create controller", "controller", "biossettingsset")
os.Exit(1)
}
if err = (&controller.BMCVersionSetReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
ResyncInterval: maintenanceResyncInterval,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMCVersionSet")
setupLog.Error(err, "Failed to create controller", "controller", "bmcversionset")
os.Exit(1)
}
if err := (&controller.BMCSettingsSetReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
ResyncInterval: maintenanceResyncInterval,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMCSettingsSet")
setupLog.Error(err, "Failed to create controller", "controller", "bmcsettingsset")
os.Exit(1)
}
if err = (&controller.BMCUserReconciler{
Expand All @@ -623,56 +623,56 @@ func main() { // nolint: gocyclo
ResourcePollingTimeout: resourcePollingTimeout,
},
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create controller", "controller", "BMCUser")
setupLog.Error(err, "Failed to create controller", "controller", "bmcuser")
os.Exit(1)
}

// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupEndpointWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "Endpoint")
setupLog.Error(err, "Failed to create webhook", "webhook", "endpoint")
os.Exit(1)
}
}
// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupBMCSecretWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "BMCSecret")
setupLog.Error(err, "Failed to create webhook", "webhook", "bmcsecret")
os.Exit(1)
}
}
// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupServerWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "Server")
setupLog.Error(err, "Failed to create webhook", "webhook", "server")
os.Exit(1)
}
}
// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupBIOSSettingsWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "BIOSSettings")
setupLog.Error(err, "Failed to create webhook", "webhook", "biossettings")
os.Exit(1)
}
}
// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupBIOSVersionWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "BIOSVersion")
setupLog.Error(err, "Failed to create webhook", "webhook", "biosversion")
os.Exit(1)
}
}
// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupBMCSettingsWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "BMCSettings")
setupLog.Error(err, "Failed to create webhook", "webhook", "bmcsettings")
os.Exit(1)
}
}
// nolint:goconst
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
if err := webhookv1alpha1.SetupBMCVersionWebhookWithManager(mgr); err != nil {
setupLog.Error(err, "Failed to create webhook", "webhook", "BMCVersion")
setupLog.Error(err, "Failed to create webhook", "webhook", "bmcversion")
os.Exit(1)
}
}
Expand Down
5 changes: 4 additions & 1 deletion config/manager/manager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ spec:
- --leader-elect
image: controller:latest
name: manager
ports: []
ports:
- containerPort: 8081
name: health
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
capabilities:
Expand Down
2 changes: 1 addition & 1 deletion docs/api-reference/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Package v1alpha1 contains API Schema definitions for the metal.ironcore.dev API group

Package v1alpha1 contains API Schema definitions for the metal v1alpha1 API group
Package v1alpha1 contains API Schema definitions for the metal v1alpha1 API group.

### Resource Types
- [BIOSSettings](#biossettings)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/ironcore-dev/metal-operator

go 1.25.6
go 1.25.7

require (
github.com/go-logr/logr v1.4.3
Expand Down
1 change: 0 additions & 1 deletion internal/controller/bmcsettingsset_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -804,6 +804,5 @@ var _ = Describe("BMCSettingsSet Controller", func() {
HaveField("Status.State", Not(Equal(metalv1alpha1.ServerStateMaintenance))),
)
})

})
})
6 changes: 2 additions & 4 deletions internal/webhook/v1alpha1/endpoint_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ type EndpointCustomValidator struct {
func (v *EndpointCustomValidator) ValidateCreate(ctx context.Context, obj *metalv1alpha1.Endpoint) (admission.Warnings, error) {
endpointlog.Info("Validation for Endpoint upon creation", "name", obj.GetName())

allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateMACAddressCreate(ctx, v.Client, obj.Spec, field.NewPath("spec"))...)
allErrs := ValidateMACAddressCreate(ctx, v.Client, obj.Spec, field.NewPath("spec"))

if len(allErrs) != 0 {
return nil, apierrors.NewInvalid(
Expand All @@ -62,8 +61,7 @@ func (v *EndpointCustomValidator) ValidateCreate(ctx context.Context, obj *metal
func (v *EndpointCustomValidator) ValidateUpdate(ctx context.Context, oldObj, newObj *metalv1alpha1.Endpoint) (admission.Warnings, error) {
endpointlog.Info("Validation for Endpoint upon update", "name", newObj.GetName())

allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateMACAddressUpdate(ctx, v.Client, newObj, field.NewPath("spec"))...)
allErrs := ValidateMACAddressUpdate(ctx, v.Client, newObj, field.NewPath("spec"))

if len(allErrs) != 0 {
return nil, apierrors.NewInvalid(
Expand Down
10 changes: 5 additions & 5 deletions test/e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ var _ = Describe("controller", Ordered, func() {
It("should run successfully", func() {
By("validating that the controller-manager pod is running as expected")
verifyControllerUp := func(g Gomega) {
// Get the name of the controller-manager pod
By("getting the name of the controller-manager pod")
cmd := exec.Command("kubectl", "get",
"pods", "-l", "control-plane=controller-manager",
"-o", "go-template={{ range .items }}"+
Expand All @@ -150,7 +150,7 @@ var _ = Describe("controller", Ordered, func() {
controllerPodName = podNames[0]
g.Expect(controllerPodName).To(ContainSubstring("controller-manager"))

// Validate the pod's status
By("validating the pod's status")
cmd = exec.Command("kubectl", "get",
"pods", controllerPodName, "-o", "jsonpath={.status.phase}",
"-n", namespace,
Expand Down Expand Up @@ -334,7 +334,7 @@ func serviceAccountToken() (string, error) {
"kind": "TokenRequest"
}`

// Temporary file to store the token request
By("creating temporary file to store the token request")
secretName := fmt.Sprintf("%s-token-request", serviceAccountName)
tokenRequestFile := filepath.Join("/tmp", secretName)
err := os.WriteFile(tokenRequestFile, []byte(tokenRequestRawString), os.FileMode(0o644))
Expand All @@ -344,7 +344,7 @@ func serviceAccountToken() (string, error) {

var out string
verifyTokenCreation := func(g Gomega) {
// Execute kubectl command to create the token
By("executing kubectl command to create the token")
cmd := exec.Command("kubectl", "create", "--raw", fmt.Sprintf(
"/api/v1/namespaces/%s/serviceaccounts/%s/token",
namespace,
Expand All @@ -354,7 +354,7 @@ func serviceAccountToken() (string, error) {
output, err := cmd.CombinedOutput()
g.Expect(err).NotTo(HaveOccurred())

// Parse the JSON output to extract the token
By("parsing the JSON output to extract the token")
var token tokenRequest
err = json.Unmarshal(output, &token)
g.Expect(err).NotTo(HaveOccurred())
Expand Down
2 changes: 1 addition & 1 deletion test/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
)

const (
certmanagerVersion = "v1.20.0"
certmanagerVersion = "v1.20.2"
certmanagerURLTmpl = "https://github.com/cert-manager/cert-manager/releases/download/%s/cert-manager.yaml"

prometheusOperatorVersion = "v0.77.1"
Expand Down
Loading