@@ -36,6 +36,7 @@ import (
3636 "github.com/devfile/devworkspace-operator/pkg/library/flatten"
3737 kubesync "github.com/devfile/devworkspace-operator/pkg/library/kubernetes"
3838 "github.com/devfile/devworkspace-operator/pkg/library/projects"
39+ "github.com/devfile/devworkspace-operator/pkg/library/status"
3940 "github.com/devfile/devworkspace-operator/pkg/provision/automount"
4041 "github.com/devfile/devworkspace-operator/pkg/provision/metadata"
4142 "github.com/devfile/devworkspace-operator/pkg/provision/storage"
@@ -221,7 +222,14 @@ func (r *DevWorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request
221222 // encountered in main reconcile loop.
222223 if err == nil {
223224 if timeoutErr := checkForStartTimeout (clusterWorkspace ); timeoutErr != nil {
224- reconcileResult , err = r .failWorkspace (workspace , timeoutErr .Error (), metrics .ReasonInfrastructureFailure , reqLogger , & reconcileStatus )
225+ // Check if an ignoredUnrecoverableEvent occured and report it alongside the timeout notice
226+ errMsg := status .CheckForIgnoredWorkspacePodEvents (workspace , clusterAPI )
227+ if errMsg != "" {
228+ failureMsg := fmt .Sprintf ("%s. Reason: %s" , timeoutErr .Error (), errMsg )
229+ reconcileResult , err = r .failWorkspace (workspace , failureMsg , metrics .DetermineProvisioningFailureReason (errMsg ), reqLogger , & reconcileStatus )
230+ } else {
231+ reconcileResult , err = r .failWorkspace (workspace , timeoutErr .Error (), metrics .ReasonInfrastructureFailure , reqLogger , & reconcileStatus )
232+ }
225233 }
226234 }
227235 if reconcileStatus .phase == dw .DevWorkspaceStatusRunning {
@@ -480,7 +488,7 @@ func (r *DevWorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request
480488 deploymentStatus := wsprovision .SyncDeploymentToCluster (workspace , allPodAdditions , serviceAcctName , clusterAPI )
481489 if ! deploymentStatus .Continue {
482490 if deploymentStatus .FailStartup {
483- failureReason := metrics .DetermineProvisioningFailureReason (deploymentStatus )
491+ failureReason := metrics .DetermineProvisioningFailureReason (deploymentStatus . Info () )
484492 return r .failWorkspace (workspace , deploymentStatus .Info (), failureReason , reqLogger , & reconcileStatus )
485493 }
486494 reqLogger .Info ("Waiting on deployment to be ready" )
0 commit comments