Skip to content

Commit f1eeb7a

Browse files
committed
fix: guard against nil hub in spoke upgrade; only delete spokes managed by the hub being deleted
Signed-off-by: Artur Shad Nik <arturshadnik@gmail.com>
1 parent db04335 commit f1eeb7a

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

fleetconfig-controller/internal/controller/v1beta1/hub_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func (r *HubReconciler) cleanHub(ctx context.Context, hub *v1beta1.Hub) error {
196196
// Mark all Spokes for deletion if they haven't been deleted yet
197197
for i := range spokes {
198198
spoke := &spokes[i]
199-
if spoke.DeletionTimestamp.IsZero() {
199+
if spoke.DeletionTimestamp.IsZero() && spoke.Spec.HubRef.Name == hub.Name {
200200
logger.Info("Marking Spoke for deletion", "spoke", spoke.Name)
201201
if err := r.Delete(ctx, spoke); err != nil && !kerrs.IsNotFound(err) {
202202
return fmt.Errorf("failed to delete spoke %s: %w", spoke.Name, err)

fleetconfig-controller/internal/controller/v1beta1/spoke_controller.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -384,14 +384,16 @@ func (r *SpokeReconciler) handleSpoke(ctx context.Context, spoke *v1beta1.Spoke,
384384
if err != nil {
385385
return fmt.Errorf("failed to compute hash of spoke %s klusterlet values: %w", spoke.Name, err)
386386
}
387-
upgrade, err := r.spokeNeedsUpgrade(ctx, spoke, currKlusterletHash, hub.Spec.ClusterManager.Source)
388-
if err != nil {
389-
return fmt.Errorf("failed to check if spoke cluster needs upgrade: %w", err)
390-
}
387+
if hub != nil && hub.Spec.ClusterManager.Source.BundleVersion != "" {
388+
upgrade, err := r.spokeNeedsUpgrade(ctx, spoke, currKlusterletHash, hub.Spec.ClusterManager.Source)
389+
if err != nil {
390+
return fmt.Errorf("failed to check if spoke cluster needs upgrade: %w", err)
391+
}
391392

392-
if upgrade {
393-
if err := r.upgradeSpoke(ctx, spoke, klusterletValues, hub.Spec.ClusterManager.Source); err != nil {
394-
return fmt.Errorf("failed to upgrade spoke cluster %s: %w", spoke.Name, err)
393+
if upgrade {
394+
if err := r.upgradeSpoke(ctx, spoke, klusterletValues, hub.Spec.ClusterManager.Source); err != nil {
395+
return fmt.Errorf("failed to upgrade spoke cluster %s: %w", spoke.Name, err)
396+
}
395397
}
396398
}
397399

0 commit comments

Comments
 (0)