fix(kube): improve error handling EE-7196 (#11977)

pull/11991/head
andres-portainer 5 months ago committed by GitHub
parent 65871207f0
commit 9c775396fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -142,30 +142,37 @@ func InitialMetricsDetection(endpoint *portainer.Endpoint, endpointService datas
} }
func storageDetect(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) error { func storageDetect(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) error {
if endpoint.Kubernetes.Flags.IsServerStorageDetected {
return nil
}
defer func() {
endpoint.Kubernetes.Flags.IsServerStorageDetected = true
if err := endpointService.UpdateEndpoint(endpoint.ID, endpoint); err != nil {
log.Info().Err(err).Msg("unable to enable storage class inside the database")
}
}()
cli, err := factory.GetKubeClient(endpoint) cli, err := factory.GetKubeClient(endpoint)
if err != nil { if err != nil {
log.Debug().Err(err).Msg("unable to create Kubernetes client for initial storage detection") log.Debug().Err(err).Msg("unable to create Kubernetes client for initial storage detection")
return err return err
} }
storage, err := cli.GetStorage() storage, err := cli.GetStorage()
if err != nil { if err != nil {
log.Debug().Err(err).Msg("unable to fetch storage classes: leaving storage classes disabled") log.Debug().Err(err).Msg("unable to fetch storage classes: leaving storage classes disabled")
return err return err
} } else if len(storage) == 0 {
if len(storage) == 0 {
log.Info().Err(err).Msg("zero storage classes found: they may be still building, retrying in 30 seconds") log.Info().Err(err).Msg("zero storage classes found: they may be still building, retrying in 30 seconds")
return fmt.Errorf("zero storage classes found: they may be still building, retrying in 30 seconds") return fmt.Errorf("zero storage classes found: they may be still building, retrying in 30 seconds")
} }
endpoint.Kubernetes.Configuration.StorageClasses = storage endpoint.Kubernetes.Configuration.StorageClasses = storage
err = endpointService.UpdateEndpoint(
portainer.EndpointID(endpoint.ID),
endpoint,
)
if err != nil {
log.Debug().Err(err).Msg("unable to enable storage class inside the database")
return err
}
return nil return nil
} }

Loading…
Cancel
Save