Skip to content

Commit 51f539a

Browse files
solve lint
1 parent deef4f5 commit 51f539a

1 file changed

Lines changed: 66 additions & 67 deletions

File tree

internal/operator-controller/controllers/clusterextension_reconcile_steps.go

Lines changed: 66 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -148,90 +148,89 @@ func ResolveBundle(r resolve.Resolver, c client.Client) ReconcileStepFunc {
148148
func handleResolutionError(ctx context.Context, c client.Client, state *reconcileState, ext *ocv1.ClusterExtension, err error) (*ctrl.Result, error) {
149149
l := log.FromContext(ctx)
150150

151-
// If we have an installed bundle, check if we can fall back to it
152-
if state.revisionStates.Installed != nil {
153-
// Check if the spec is requesting a specific version that differs from installed
154-
specVersion := ""
155-
if ext.Spec.Source.Catalog != nil {
156-
specVersion = ext.Spec.Source.Catalog.Version
157-
}
158-
installedVersion := state.revisionStates.Installed.Version
159-
160-
// If spec requests a different version, we cannot fall back - must fail and retry
161-
if specVersion != "" && specVersion != installedVersion {
162-
msg := fmt.Sprintf("unable to upgrade to version %s: %v (currently installed: %s)", specVersion, err, installedVersion)
163-
l.Error(err, "resolution failed and spec requests version change - cannot fall back",
164-
"requestedVersion", specVersion,
165-
"installedVersion", installedVersion)
166-
setStatusProgressing(ext, err)
167-
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
168-
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
169-
return nil, err
170-
}
151+
// No installed bundle and resolution failed - cannot proceed
152+
if state.revisionStates.Installed == nil {
153+
msg := fmt.Sprintf("failed to resolve bundle: %v", err)
154+
setStatusProgressing(ext, err)
155+
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
156+
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
157+
return nil, err
158+
}
171159

172-
// No version change requested - check if ClusterCatalogs exist
173-
// Only fall back if ClusterCatalogs have been deleted
174-
catalogsExist, catalogCheckErr := CheckCatalogsExist(ctx, c, ext)
175-
if catalogCheckErr != nil {
176-
msg := fmt.Sprintf("failed to resolve bundle: %v", err)
177-
var catalogName string
178-
if ext.Spec.Source.Catalog != nil {
179-
catalogName = getCatalogNameFromSelector(ext.Spec.Source.Catalog.Selector)
180-
}
181-
l.Error(catalogCheckErr, "error checking if ClusterCatalogs exist, will retry resolution",
182-
"resolutionError", err,
183-
"packageName", getPackageName(ext),
184-
"catalogName", catalogName)
185-
setStatusProgressing(ext, err)
186-
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
187-
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
188-
return nil, err
189-
}
160+
// Check if the spec is requesting a specific version that differs from installed
161+
specVersion := ""
162+
if ext.Spec.Source.Catalog != nil {
163+
specVersion = ext.Spec.Source.Catalog.Version
164+
}
165+
installedVersion := state.revisionStates.Installed.Version
166+
167+
// If spec requests a different version, we cannot fall back - must fail and retry
168+
if specVersion != "" && specVersion != installedVersion {
169+
msg := fmt.Sprintf("unable to upgrade to version %s: %v (currently installed: %s)", specVersion, err, installedVersion)
170+
l.Error(err, "resolution failed and spec requests version change - cannot fall back",
171+
"requestedVersion", specVersion,
172+
"installedVersion", installedVersion)
173+
setStatusProgressing(ext, err)
174+
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
175+
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
176+
return nil, err
177+
}
190178

191-
if catalogsExist {
192-
// ClusterCatalogs exist but resolution failed - likely a transient issue (ClusterCatalog updating, cache stale, etc.)
193-
// Retry resolution instead of falling back
194-
msg := fmt.Sprintf("failed to resolve bundle, retrying: %v", err)
195-
var catalogName string
196-
if ext.Spec.Source.Catalog != nil {
197-
catalogName = getCatalogNameFromSelector(ext.Spec.Source.Catalog.Selector)
198-
}
199-
l.Error(err, "resolution failed but matching ClusterCatalogs exist - retrying instead of falling back",
200-
"packageName", getPackageName(ext),
201-
"catalogName", catalogName)
202-
setStatusProgressing(ext, err)
203-
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
204-
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
205-
return nil, err
179+
// No version change requested - check if ClusterCatalogs exist
180+
// Only fall back if ClusterCatalogs have been deleted
181+
catalogsExist, catalogCheckErr := CheckCatalogsExist(ctx, c, ext)
182+
if catalogCheckErr != nil {
183+
msg := fmt.Sprintf("failed to resolve bundle: %v", err)
184+
var catalogName string
185+
if ext.Spec.Source.Catalog != nil {
186+
catalogName = getCatalogNameFromSelector(ext.Spec.Source.Catalog.Selector)
206187
}
188+
l.Error(catalogCheckErr, "error checking if ClusterCatalogs exist, will retry resolution",
189+
"resolutionError", err,
190+
"packageName", getPackageName(ext),
191+
"catalogName", catalogName)
192+
setStatusProgressing(ext, err)
193+
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
194+
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
195+
return nil, err
196+
}
207197

208-
// ClusterCatalogs don't exist (deleted) - fall back to installed bundle to maintain current state.
209-
// The controller watches ClusterCatalog resources, so when ClusterCatalogs become available again,
210-
// a reconcile will be triggered automatically, allowing the extension to upgrade.
211-
msg := fmt.Sprintf("continuing to maintain current installation at version %s due to catalog unavailability", state.revisionStates.Installed.Version)
198+
if catalogsExist {
199+
// ClusterCatalogs exist but resolution failed - likely a transient issue (ClusterCatalog updating, cache stale, etc.)
200+
// Retry resolution instead of falling back
201+
msg := fmt.Sprintf("failed to resolve bundle, retrying: %v", err)
212202
var catalogName string
213203
if ext.Spec.Source.Catalog != nil {
214204
catalogName = getCatalogNameFromSelector(ext.Spec.Source.Catalog.Selector)
215205
}
216-
l.Error(err, "matching ClusterCatalogs unavailable or deleted - falling back to installed bundle to maintain workload",
206+
l.Error(err, "resolution failed but matching ClusterCatalogs exist - retrying instead of falling back",
217207
"packageName", getPackageName(ext),
218-
"catalogName", catalogName,
219-
"installedBundle", state.revisionStates.Installed.Name,
220-
"installedVersion", state.revisionStates.Installed.Version)
208+
"catalogName", catalogName)
221209
setStatusProgressing(ext, err)
222210
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
223211
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
224-
state.resolvedRevisionMetadata = state.revisionStates.Installed
225-
// Return no error to allow Apply step to run and maintain resources.
226-
return nil, nil
212+
return nil, err
227213
}
228214

229-
// No installed bundle and resolution failed - cannot proceed
230-
msg := fmt.Sprintf("failed to resolve bundle: %v", err)
215+
// ClusterCatalogs don't exist (deleted) - fall back to installed bundle to maintain current state.
216+
// The controller watches ClusterCatalog resources, so when ClusterCatalogs become available again,
217+
// a reconcile will be triggered automatically, allowing the extension to upgrade.
218+
msg := fmt.Sprintf("continuing to maintain current installation at version %s due to catalog unavailability", state.revisionStates.Installed.Version)
219+
var catalogName string
220+
if ext.Spec.Source.Catalog != nil {
221+
catalogName = getCatalogNameFromSelector(ext.Spec.Source.Catalog.Selector)
222+
}
223+
l.Error(err, "matching ClusterCatalogs unavailable or deleted - falling back to installed bundle to maintain workload",
224+
"packageName", getPackageName(ext),
225+
"catalogName", catalogName,
226+
"installedBundle", state.revisionStates.Installed.Name,
227+
"installedVersion", state.revisionStates.Installed.Version)
231228
setStatusProgressing(ext, err)
232229
setInstalledStatusFromRevisionStates(ext, state.revisionStates)
233230
ensureAllConditionsWithReason(ext, ocv1.ReasonRetrying, msg)
234-
return nil, err
231+
state.resolvedRevisionMetadata = state.revisionStates.Installed
232+
// Return no error to allow Apply step to run and maintain resources.
233+
return nil, nil
235234
}
236235

237236
// getCatalogNameFromSelector extracts the catalog name from the selector if available.

0 commit comments

Comments
 (0)