mirror of https://github.com/portainer/portainer
fix(kube): improve error handling EE-7199 (#11975)
parent
dc3e20acac
commit
65871207f0
|
@ -79,21 +79,26 @@ func InitialIngressClassDetection(endpoint *portainer.Endpoint, endpointService
|
||||||
if endpoint.Kubernetes.Flags.IsServerIngressClassDetected {
|
if endpoint.Kubernetes.Flags.IsServerIngressClassDetected {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
endpoint.Kubernetes.Flags.IsServerIngressClassDetected = true
|
endpoint.Kubernetes.Flags.IsServerIngressClassDetected = true
|
||||||
endpointService.UpdateEndpoint(
|
|
||||||
portainer.EndpointID(endpoint.ID),
|
if err := endpointService.UpdateEndpoint(endpoint.ID, endpoint); err != nil {
|
||||||
endpoint,
|
log.Debug().Err(err).Msg("unable to store found IngressClasses 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 ingress class detection")
|
log.Debug().Err(err).Msg("unable to create kubernetes client for ingress class detection")
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
controllers, err := cli.GetIngressControllers()
|
controllers, err := cli.GetIngressControllers()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug().Err(err).Msg("failed to fetch ingressclasses")
|
log.Debug().Err(err).Msg("failed to fetch ingressclasses")
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,42 +111,34 @@ func InitialIngressClassDetection(endpoint *portainer.Endpoint, endpointService
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoint.Kubernetes.Configuration.IngressClasses = updatedClasses
|
endpoint.Kubernetes.Configuration.IngressClasses = updatedClasses
|
||||||
err = endpointService.UpdateEndpoint(
|
|
||||||
portainer.EndpointID(endpoint.ID),
|
|
||||||
endpoint,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Debug().Err(err).Msg("unable to store found IngressClasses inside the database")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitialMetricsDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
func InitialMetricsDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
||||||
if endpoint.Kubernetes.Flags.IsServerMetricsDetected {
|
if endpoint.Kubernetes.Flags.IsServerMetricsDetected {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
endpoint.Kubernetes.Flags.IsServerMetricsDetected = true
|
endpoint.Kubernetes.Flags.IsServerMetricsDetected = true
|
||||||
endpointService.UpdateEndpoint(
|
if err := endpointService.UpdateEndpoint(endpoint.ID, endpoint); err != nil {
|
||||||
portainer.EndpointID(endpoint.ID),
|
log.Debug().Err(err).Msg("unable to enable UseServerMetrics inside the database")
|
||||||
endpoint,
|
}
|
||||||
)
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
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 metrics detection")
|
log.Debug().Err(err).Msg("unable to create kubernetes client for initial metrics detection")
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = cli.GetMetrics()
|
|
||||||
if err != nil {
|
if _, err := cli.GetMetrics(); err != nil {
|
||||||
log.Debug().Err(err).Msg("unable to fetch metrics: leaving metrics collection disabled.")
|
log.Debug().Err(err).Msg("unable to fetch metrics: leaving metrics collection disabled.")
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoint.Kubernetes.Configuration.UseServerMetrics = true
|
endpoint.Kubernetes.Configuration.UseServerMetrics = true
|
||||||
if err != nil {
|
|
||||||
log.Debug().Err(err).Msg("unable to enable UseServerMetrics inside the database")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func storageDetect(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) error {
|
func storageDetect(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) error {
|
||||||
|
|
Loading…
Reference in New Issue