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
16 changes: 8 additions & 8 deletions operator/internal/controller/fleet_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@ func (r *FleetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
return ctrl.Result{}, err
}

// Handle resource deletion
if fleet.DeletionTimestamp != nil || !fleet.GetDeletionTimestamp().IsZero() {
if err := r.handleDeletion(ctx, fleet); err != nil {
return ctrl.Result{Requeue: true}, fmt.Errorf("failed to handle fleet deletion: %w", err)
}
return ctrl.Result{Requeue: true}, nil // Return after so we do not accidentally scale again
}

// Handle finalizer addition
if fleet.DeletionTimestamp == nil && !controllerutil.ContainsFinalizer(fleet, FLEET_FINALIZER) {
controllerutil.AddFinalizer(fleet, FLEET_FINALIZER)
Expand All @@ -68,14 +76,6 @@ func (r *FleetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
return ctrl.Result{Requeue: true}, nil
}

// Handle resource deletion
if fleet.DeletionTimestamp != nil || !fleet.GetDeletionTimestamp().IsZero() {
if err := r.handleDeletion(ctx, fleet); err != nil {
return ctrl.Result{}, fmt.Errorf("failed to handle fleet deletion: %w", err)
}
return ctrl.Result{}, nil // Return after so we do not accidentally scale again
}

servers, err := r.getServers(ctx, fleet)
if err != nil {
return ctrl.Result{Requeue: true}, err
Expand Down
25 changes: 12 additions & 13 deletions operator/internal/controller/gametype_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,19 +156,17 @@ func (r *GameTypeReconciler) handleUpdating(ctx context.Context, gametype *netwo
r.emitEvent(gametype, corev1.EventTypeNormal, utils.ReasonGametypeSpecUpdated, "Creating new fleet")
res, err := r.handleCreation(ctx, gametype, logger)
return res, err, true
} else {
if gametype.Spec.FleetSpec.Scaling.Replicas != gametype.Status.CurrentFleetReplicas {
gametype.Status.CurrentFleetReplicas = gametype.Spec.FleetSpec.Scaling.Replicas
fleet.Spec.Scaling.Replicas = gametype.Spec.FleetSpec.Scaling.Replicas
if err := r.Update(ctx, &fleet); err != nil {
return ctrl.Result{Requeue: true}, err, true
}
err := r.Status().Update(ctx, gametype)
if err != nil {
return ctrl.Result{Requeue: true}, err, true
}
r.emitEventf(gametype, corev1.EventTypeNormal, utils.ReasonGametypeReplicasUpdated, "Scaling gametype to %d", fleet.Spec.Scaling.Replicas)
} else if gametype.Spec.FleetSpec.Scaling.Replicas != gametype.Status.CurrentFleetReplicas {
gametype.Status.CurrentFleetReplicas = gametype.Spec.FleetSpec.Scaling.Replicas
fleet.Spec.Scaling.Replicas = gametype.Spec.FleetSpec.Scaling.Replicas
if err := r.Update(ctx, &fleet); err != nil {
return ctrl.Result{Requeue: true}, err, true
}
err := r.Status().Update(ctx, gametype)
if err != nil {
return ctrl.Result{Requeue: true}, err, true
}
r.emitEventf(gametype, corev1.EventTypeNormal, utils.ReasonGametypeReplicasUpdated, "Scaling gametype to %d", fleet.Spec.Scaling.Replicas)
}
}
if len(fleets.Items) > 1 {
Expand All @@ -180,9 +178,9 @@ func (r *GameTypeReconciler) handleUpdating(ctx context.Context, gametype *netwo
oldestFleet = &fleet
}
}
r.emitEvent(gametype, corev1.EventTypeNormal, utils.ReasonGametypeSpecUpdated, "Deleting extra fleet")

if oldestFleet != nil && oldestFleet.GetDeletionTimestamp() == nil {
r.emitEvent(gametype, corev1.EventTypeNormal, utils.ReasonGametypeSpecUpdated, "Deleting extra fleet")
if err := r.Delete(ctx, oldestFleet); err != nil {
return ctrl.Result{}, err, true
}
Expand Down Expand Up @@ -210,6 +208,7 @@ func (r *GameTypeReconciler) handleDeletion(ctx context.Context, gametype *netwo
return err
}
for _, fleet := range fleets.Items {
r.emitEventf(gametype, corev1.EventTypeNormal, utils.ReasonGameTypeDeleting, "Deleting fleet %s", fleet.Name)
if err := r.Delete(ctx, &fleet); err != nil {
r.emitEventf(gametype, corev1.EventTypeWarning, utils.ReasonGametypeServersDeleted, "Failed to delete fleet %s", fleet.Name)
return err
Expand Down
1 change: 1 addition & 0 deletions operator/internal/utils/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const (
ReasonFleetScaleServers EventReason = "FleetScaleServers"

ReasonGametypeInitialized EventReason = "GametypeInitialized"
ReasonGameTypeDeleting EventReason = "GameTypeDeleting"
ReasonGametypeServersDeleted EventReason = "GametypeServersDeleted"
ReasonGametypeSpecUpdated EventReason = "GametypeSpecUpdated"
ReasonGametypeReplicasUpdated EventReason = "GametypeReplicasUpdated"
Expand Down