fix(pending-actions): correctly detect unreachable/down cluster [EE-7049] (#11811)

pull/11834/head
Matt Hook 7 months ago committed by GitHub
parent 39088b16b3
commit 2f1b5ec979
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,7 @@
package cli
import "k8s.io/apimachinery/pkg/version"
func (kcl *KubeClient) ServerVersion() (*version.Info, error) {
return kcl.cli.Discovery().ServerVersion()
}

@ -76,12 +76,13 @@ func (service *PendingActionsService) Execute(id portainer.EndpointID) error {
// For Kubernetes endpoints, we need to check if the endpoint is up by creating a kube client // For Kubernetes endpoints, we need to check if the endpoint is up by creating a kube client
if isKubernetesEndpoint { if isKubernetesEndpoint {
_, err := service.kubeFactory.GetKubeClient(endpoint) if client, _ := service.kubeFactory.GetKubeClient(endpoint); client != nil {
if err != nil { if _, err = client.ServerVersion(); err != nil {
log.Debug().Err(err).Msgf("Environment %q (id: %d) is not up", endpoint.Name, id) log.Debug().Err(err).Msgf("Environment %q (id: %d) is not up", endpoint.Name, id)
return fmt.Errorf("environment %q (id: %d) is not up", endpoint.Name, id) return fmt.Errorf("environment %q (id: %d) is not up", endpoint.Name, id)
} }
} }
}
pendingActions, err := service.dataStore.PendingActions().ReadAll() pendingActions, err := service.dataStore.PendingActions().ReadAll()
if err != nil { if err != nil {

@ -14,6 +14,7 @@ import (
"github.com/portainer/portainer/pkg/featureflags" "github.com/portainer/portainer/pkg/featureflags"
"golang.org/x/oauth2" "golang.org/x/oauth2"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/version"
) )
type ( type (
@ -1496,6 +1497,8 @@ type (
// KubeClient represents a service used to query a Kubernetes environment(endpoint) // KubeClient represents a service used to query a Kubernetes environment(endpoint)
KubeClient interface { KubeClient interface {
ServerVersion() (*version.Info, error)
SetupUserServiceAccount(userID int, teamIDs []int, restrictDefaultNamespace bool) error SetupUserServiceAccount(userID int, teamIDs []int, restrictDefaultNamespace bool) error
IsRBACEnabled() (bool, error) IsRBACEnabled() (bool, error)
GetServiceAccount(tokendata *TokenData) (*v1.ServiceAccount, error) GetServiceAccount(tokendata *TokenData) (*v1.ServiceAccount, error)

Loading…
Cancel
Save