diff --git a/controllers/hcloudmachine_controller.go b/controllers/hcloudmachine_controller.go index 7ea00ca49..be22a0f00 100644 --- a/controllers/hcloudmachine_controller.go +++ b/controllers/hcloudmachine_controller.go @@ -69,7 +69,7 @@ type HCloudMachineReconciler struct { // Reconcile manages the lifecycle of an HCloud machine object. func (r *HCloudMachineReconciler) Reconcile(ctx context.Context, req reconcile.Request) (res reconcile.Result, reterr error) { log := ctrl.LoggerFrom(ctx) - + log.V(1).Info("Start reconciling HCloudMachine") // Fetch the HCloudMachine instance. hcloudMachine := &infrav1.HCloudMachine{} err := r.Get(ctx, req.NamespacedName, hcloudMachine) @@ -165,9 +165,11 @@ func (r *HCloudMachineReconciler) Reconcile(ctx context.Context, req reconcile.R } if !hcloudMachine.ObjectMeta.DeletionTimestamp.IsZero() { + log.V(1).Info("Reconciling HCloudMachine - delete") return r.reconcileDelete(ctx, machineScope) } + log.V(1).Info("Reconciling HCloudMachine - normal") return r.reconcileNormal(ctx, machineScope) } @@ -468,11 +470,14 @@ func IgnoreInsignificantHCloudMachineStatusUpdates(logger logr.Logger) predicate return false } - log.V(1).Info("HCloudMachine event") + log.V(1).Info("HCloudMachine update event received") + return true + }, + CreateFunc: func(_ event.CreateEvent) bool { return true }, + DeleteFunc: func(_ event.DeleteEvent) bool { + logger.V(1).Info("HCloudMachine delete event received") return true }, - CreateFunc: func(_ event.CreateEvent) bool { return true }, - DeleteFunc: func(_ event.DeleteEvent) bool { return true }, GenericFunc: func(_ event.GenericEvent) bool { return true }, } } diff --git a/pkg/services/hcloud/server/server.go b/pkg/services/hcloud/server/server.go index 8cd3c308f..671d588ed 100644 --- a/pkg/services/hcloud/server/server.go +++ b/pkg/services/hcloud/server/server.go @@ -223,6 +223,8 @@ func (s *Service) Delete(ctx context.Context) (res reconcile.Result, err error) return res, nil } + s.scope.V(1).Info("HcloudMachine reconcile delete - server found") + // control planes have to be deleted as targets of server if s.scope.IsControlPlane() && s.scope.HetznerCluster.Spec.ControlPlaneLoadBalancer.Enabled { for _, target := range s.scope.HetznerCluster.Status.ControlPlaneLoadBalancer.Target { @@ -235,6 +237,8 @@ func (s *Service) Delete(ctx context.Context) (res reconcile.Result, err error) } } + s.scope.V(1).Info("HcloudMachine reconcile delete", "server status", server.Status) + // first shut the server down, then delete it switch server.Status { case hcloud.ServerStatusRunning: @@ -243,6 +247,7 @@ func (s *Service) Delete(ctx context.Context) (res reconcile.Result, err error) return s.handleDeleteServerStatusOff(ctx, server) } + s.scope.V(1).Info("Requeue for five seconds - unknown state") return reconcile.Result{RequeueAfter: 5 * time.Second}, nil } @@ -621,6 +626,7 @@ func (s *Service) handleDeleteServerStatusRunning(ctx context.Context, server *h // Shut down the server if one of the two conditions apply: // 1. The server has not yet been tried to shut down and still is marked as "ready". // 2. The server has been tried to shut down without an effect and the timeout is not reached yet. + s.scope.V(1).Info("Handle server status running") if s.scope.HasServerAvailableCondition() { if err := s.scope.HCloudClient.ShutdownServer(ctx, server); err != nil { @@ -634,26 +640,33 @@ func (s *Service) handleDeleteServerStatusRunning(ctx context.Context, server *h "Instance has been shut down", ) + s.scope.V(1).Info("Shut down server - requeue for 30 seconds") return reconcile.Result{RequeueAfter: 30 * time.Second}, nil } + s.scope.V(1).Info("Delete server") + // timeout for shutdown has been reached - delete server if err := s.scope.HCloudClient.DeleteServer(ctx, server); err != nil { record.Warnf(s.scope.HCloudMachine, "FailedDeleteHCloudServer", "Failed to delete HCloud server %s", s.scope.Name()) return reconcile.Result{}, handleRateLimit(s.scope.HCloudMachine, err, "DeleteServer", "failed to delete server") } + s.scope.V(1).Info("Server deleted") record.Eventf(s.scope.HCloudMachine, "HCloudServerDeleted", "HCloud server %s deleted", s.scope.Name()) return res, nil } func (s *Service) handleDeleteServerStatusOff(ctx context.Context, server *hcloud.Server) (res reconcile.Result, err error) { // server is off and can be deleted + s.scope.V(1).Info("Handle server status off") + if err := s.scope.HCloudClient.DeleteServer(ctx, server); err != nil { record.Warnf(s.scope.HCloudMachine, "FailedDeleteHCloudServer", "Failed to delete HCloud server %s", s.scope.Name()) return reconcile.Result{}, handleRateLimit(s.scope.HCloudMachine, err, "DeleteServer", "failed to delete server") } + s.scope.V(1).Info("Server deleted after server status off") record.Eventf(s.scope.HCloudMachine, "HCloudServerDeleted", "HCloud server %s deleted", s.scope.Name()) return res, nil }