Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c09fb2e
:seedling: Before using the ssh Rescue Client, ensure the rescue syst…
guettli May 7, 2025
78ef843
revert remove of unused func.
guettli May 7, 2025
685a42f
Merge remote-tracking branch 'origin/main' into tg/check-hostname-bef…
guettli May 8, 2025
4c2c41f
fix e2e tests.
guettli May 8, 2025
4c515a7
log reboots, and retry if hostname does not match.
guettli May 8, 2025
ae4d56d
:seedling: Show conflicts in SaveHostAndReturn in logs
guettli May 9, 2025
fe40256
Merge branch 'tg/show-conflicts-in-SaveHostAndReturn-in-logs' into tg…
guettli May 9, 2025
75a4f40
fix tests (add ctx)
guettli May 9, 2025
b0d0078
use uncached APIReader to avoid cache issues
guettli May 9, 2025
2cf266d
more debug output.
guettli May 9, 2025
d48f03e
log every reconcile.
guettli May 9, 2025
ce03621
logs are not visible. Strange, try print.
guettli May 9, 2025
d9b837d
found "bug": hostname changes during "installimage".
guettli May 9, 2025
5e2029f
typo.
guettli May 9, 2025
e7f1d54
Merge remote-tracking branch 'origin/main' into tg/check-hostname-bef…
guettli May 9, 2025
182da6b
Merge remote-tracking branch 'origin/main' into tg/check-hostname-bef…
guettli May 13, 2025
0979533
set permanent error, if hostname is unexpected (not rescue system).
guettli May 13, 2025
023af57
added HetznerCluster to log values again.
guettli May 13, 2025
b8ba0d3
fixed typo.
guettli May 13, 2025
3e6fd3e
inlined function which gets used only once.
guettli May 13, 2025
951c144
add log of HetznerBareMetalMachine again.
guettli May 13, 2025
cb977e6
git restore -s main controllers/hetznerbaremetalhost_controller.go
guettli May 14, 2025
c74dd1f
remove setting permanent error.
guettli May 14, 2025
e060a31
Merge remote-tracking branch 'origin/main' into tg/check-hostname-bef…
guettli May 14, 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
29 changes: 11 additions & 18 deletions controllers/hetznerbaremetalhost_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types"
"k8s.io/klog/v2"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/cluster-api/util"
"sigs.k8s.io/cluster-api/util/conditions"
Expand Down Expand Up @@ -69,16 +68,10 @@ func (r *HetznerBareMetalHostReconciler) Reconcile(ctx context.Context, req ctrl
log := ctrl.LoggerFrom(ctx)

start := time.Now()
defer func() {
// check duration of reconcile. Warn if it took too long.
duration := time.Since(start)
if duration > 15*time.Second {
log.Info("Reconcile took too long", "duration", duration, "res", res, "reterr", reterr)
}
}()

// Fetch the Hetzner bare metal host instance.
bmHost := &infrav1.HetznerBareMetalHost{}
// Use uncached APIReader to avoid cache issues.
err := r.Get(ctx, req.NamespacedName, bmHost)
if err != nil {
if apierrors.IsNotFound(err) {
Expand All @@ -87,10 +80,18 @@ func (r *HetznerBareMetalHostReconciler) Reconcile(ctx context.Context, req ctrl
return reconcile.Result{}, err
}

log = log.WithValues("state", bmHost.Spec.Status.ProvisioningState)
ctx = ctrl.LoggerInto(ctx, log)

initialProvisioningState := bmHost.Spec.Status.ProvisioningState
defer func() {
// check duration of reconcile. Warn if it took too long.
duration := time.Since(start)
if duration > 10*time.Second {
log.Info("Reconcile took too long", "duration", duration, "res", res, "reterr", reterr)
}
if initialProvisioningState != bmHost.Spec.Status.ProvisioningState {
log.Info("Provisioning state changed", "from", initialProvisioningState, "to", bmHost.Spec.Status.ProvisioningState)
log.Info("Provisioning state changed", "newState", bmHost.Spec.Status.ProvisioningState, "duration", duration)
}
}()

Expand Down Expand Up @@ -140,21 +141,18 @@ func (r *HetznerBareMetalHostReconciler) Reconcile(ctx context.Context, req ctrl
}
if err := r.Client.Get(ctx, hetznerClusterName, hetznerCluster); err != nil {
if apierrors.IsNotFound(err) {
log.Info("HetznerCluster not found. Requeueing")
return reconcile.Result{RequeueAfter: 10 * time.Second}, nil
}
return reconcile.Result{}, fmt.Errorf("failed to get HetznerCluster: %w", err)
}

log = log.WithValues("HetznerCluster", klog.KObj(hetznerCluster))

// Fetch the Cluster.
cluster, err := util.GetClusterFromMetadata(ctx, r.Client, hetznerCluster.ObjectMeta)
if err != nil {
return reconcile.Result{}, fmt.Errorf("failed to get Cluster: %w", err)
}

log = log.WithValues("Cluster", klog.KObj(cluster))

hetznerBareMetalMachine := &infrav1.HetznerBareMetalMachine{}

if bmHost.Spec.ConsumerRef != nil {
Expand All @@ -168,10 +166,6 @@ func (r *HetznerBareMetalHostReconciler) Reconcile(ctx context.Context, req ctrl
}
}

log = log.WithValues("HetznerBareMetalMachine", klog.KObj(hetznerBareMetalMachine))

ctx = ctrl.LoggerInto(ctx, log)

// Get Hetzner robot api credentials
secretManager := secretutil.NewSecretManager(log, r.Client, r.APIReader)
robotCreds, err := getAndValidateRobotCredentials(ctx, req.Namespace, hetznerCluster, secretManager)
Expand Down Expand Up @@ -245,7 +239,6 @@ func (r *HetznerBareMetalHostReconciler) reconcileSelectedStates(ctx context.Con
return reconcile.Result{}, fmt.Errorf("Update() failed after setting ProvisioningState: %w", err)
}
}

return ctrl.Result{RequeueAfter: 10 * time.Second}, nil

// Handle StateDeleting
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ func main() {
os.Exit(1)
}

setupLog.Info("starting manager", "version", caphversion.Get().String())
setupLog.Info("starting manager", "version", caphversion.Get().String(), "args", os.Args)
if err := mgr.Start(ctx); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
Expand Down
Loading
Loading