remove *Endpoint in execute to allow it to be imported into EE

pull/11817/head
hookenz 2024-05-13 13:22:21 +12:00
parent 6a51b6b41e
commit 2b31f0ea42
5 changed files with 31 additions and 12 deletions

View File

@ -13,7 +13,7 @@ type (
} }
PendingActionHandler interface { PendingActionHandler interface {
Execute(PendingAction, *Endpoint) error Execute(PendingAction) error
} }
) )

View File

@ -48,14 +48,20 @@ func NewHandlerCleanNAPWithOverridePolicies(
} }
} }
func (h *HandlerCleanNAPWithOverridePolicies) Execute(pendingAction portainer.PendingAction, endpoint *portainer.Endpoint) error { func (h *HandlerCleanNAPWithOverridePolicies) Execute(pa portainer.PendingAction) error {
if pendingAction.ActionData == nil { endpoint, err := h.dataStore.Endpoint().Endpoint(pa.EndpointID)
if err != nil {
log.Debug().Msgf("failed to retrieve environment %d: %v", pa.EndpointID, err)
return nil
}
if pa.ActionData == nil {
h.authorizationService.CleanNAPWithOverridePolicies(h.dataStore, endpoint, nil) h.authorizationService.CleanNAPWithOverridePolicies(h.dataStore, endpoint, nil)
return nil return nil
} }
var payload cleanNAPWithOverridePolicies var payload cleanNAPWithOverridePolicies
err := pendingAction.UnmarshallActionData(&payload) err = pa.UnmarshallActionData(&payload)
if err != nil { if err != nil {
log.Error().Err(err).Msgf("Error unmarshalling endpoint group ID for cleaning NAP with override policies for environment %d", endpoint.ID) log.Error().Err(err).Msgf("Error unmarshalling endpoint group ID for cleaning NAP with override policies for environment %d", endpoint.ID)
return fmt.Errorf("failed to unmarshal endpoint group ID for cleaning NAP with override policies for environment %d: %w", endpoint.ID, err) return fmt.Errorf("failed to unmarshal endpoint group ID for cleaning NAP with override policies for environment %d: %w", endpoint.ID, err)

View File

@ -6,6 +6,7 @@ import (
"github.com/portainer/portainer/api/internal/authorization" "github.com/portainer/portainer/api/internal/authorization"
kubecli "github.com/portainer/portainer/api/kubernetes/cli" kubecli "github.com/portainer/portainer/api/kubernetes/cli"
"github.com/portainer/portainer/api/pendingactions/actions" "github.com/portainer/portainer/api/pendingactions/actions"
"github.com/rs/zerolog/log"
) )
type ( type (
@ -46,13 +47,19 @@ func NewHandlerDeleteRegistrySecrets(
} }
} }
func (h *HandlerDeleteK8sRegistrySecrets) Execute(pa portainer.PendingAction, endpoint *portainer.Endpoint) error { func (h *HandlerDeleteK8sRegistrySecrets) Execute(pa portainer.PendingAction) error {
if endpoint == nil || pa.ActionData == nil { if pa.ActionData == nil {
return nil
}
endpoint, err := h.dataStore.Endpoint().Endpoint(pa.EndpointID)
if err != nil {
log.Debug().Msgf("failed to retrieve environment %d: %v", pa.EndpointID, err)
return nil return nil
} }
var registryData deleteK8sRegistrySecretsData var registryData deleteK8sRegistrySecretsData
err := pa.UnmarshallActionData(&registryData) err = pa.UnmarshallActionData(&registryData)
if err != nil { if err != nil {
return err return err
} }

View File

@ -40,7 +40,13 @@ func NewHandlerPostInitMigrateEnvironment(
} }
} }
func (h *HandlerPostInitMigrateEnvironment) Execute(_ portainer.PendingAction, endpoint *portainer.Endpoint) error { func (h *HandlerPostInitMigrateEnvironment) Execute(pa portainer.PendingAction) error {
endpoint, err := h.dataStore.Endpoint().Endpoint(pa.EndpointID)
if err != nil {
log.Debug().Msgf("failed to retrieve environment %d: %v", pa.EndpointID, err)
return nil
}
postInitMigrator := postinit.NewPostInitMigrator( postInitMigrator := postinit.NewPostInitMigrator(
h.kubeFactory, h.kubeFactory,
h.dockerFactory, h.dockerFactory,
@ -48,7 +54,7 @@ func (h *HandlerPostInitMigrateEnvironment) Execute(_ portainer.PendingAction, e
h.assetsPath, h.assetsPath,
h.kubernetesDeployer, h.kubernetesDeployer,
) )
err := postInitMigrator.MigrateEnvironment(endpoint) err = postInitMigrator.MigrateEnvironment(endpoint)
if err != nil { if err != nil {
log.Error().Err(err).Msgf("Error running post-init migrations for edge environment %d", endpoint.ID) log.Error().Err(err).Msgf("Error running post-init migrations for edge environment %d", endpoint.ID)
return fmt.Errorf("failed running post-init migrations for edge environment %d: %w", endpoint.ID, err) return fmt.Errorf("failed running post-init migrations for edge environment %d: %w", endpoint.ID, err)

View File

@ -89,7 +89,7 @@ func (service *PendingActionsService) Execute(id portainer.EndpointID) {
for _, pendingAction := range pendingActions { for _, pendingAction := range pendingActions {
if pendingAction.EndpointID == id { if pendingAction.EndpointID == id {
log.Debug().Msgf("executing pending action id=%d, action=%s", pendingAction.ID, pendingAction.Action) log.Debug().Msgf("executing pending action id=%d, action=%s", pendingAction.ID, pendingAction.Action)
err := service.executePendingAction(pendingAction, endpoint) err := service.executePendingAction(pendingAction)
if err != nil { if err != nil {
log.Warn().Msgf("failed to execute pending action: %v", err) log.Warn().Msgf("failed to execute pending action: %v", err)
return return
@ -106,7 +106,7 @@ func (service *PendingActionsService) Execute(id portainer.EndpointID) {
} }
} }
func (service *PendingActionsService) executePendingAction(pendingAction portainer.PendingAction, endpoint *portainer.Endpoint) error { func (service *PendingActionsService) executePendingAction(pendingAction portainer.PendingAction) error {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
log.Error().Msgf("recovered from panic while executing pending action %s for environment %d: %v", pendingAction.Action, pendingAction.EndpointID, r) log.Error().Msgf("recovered from panic while executing pending action %s for environment %d: %v", pendingAction.Action, pendingAction.EndpointID, r)
@ -119,5 +119,5 @@ func (service *PendingActionsService) executePendingAction(pendingAction portain
return nil return nil
} }
return handler.Execute(pendingAction, endpoint) return handler.Execute(pendingAction)
} }