mirror of https://github.com/portainer/portainer
74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
![]() |
package handlers
|
||
|
|
||
|
import (
|
||
|
portainer "github.com/portainer/portainer/api"
|
||
|
"github.com/portainer/portainer/api/dataservices"
|
||
|
"github.com/portainer/portainer/api/internal/authorization"
|
||
|
kubecli "github.com/portainer/portainer/api/kubernetes/cli"
|
||
|
"github.com/portainer/portainer/api/pendingactions/actions"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
HandlerDeleteK8sRegistrySecrets struct {
|
||
|
authorizationService *authorization.Service
|
||
|
dataStore dataservices.DataStore
|
||
|
kubeFactory *kubecli.ClientFactory
|
||
|
}
|
||
|
|
||
|
deleteK8sRegistrySecretsData struct {
|
||
|
RegistryID portainer.RegistryID `json:"RegistryID"`
|
||
|
Namespaces []string `json:"Namespaces"`
|
||
|
}
|
||
|
)
|
||
|
|
||
|
// NewDeleteK8sRegistrySecrets creates a new DeleteK8sRegistrySecrets pending action
|
||
|
func NewDeleteK8sRegistrySecrets(endpointID portainer.EndpointID, registryID portainer.RegistryID, namespaces []string) portainer.PendingAction {
|
||
|
return portainer.PendingAction{
|
||
|
EndpointID: endpointID,
|
||
|
Action: actions.DeleteK8sRegistrySecrets,
|
||
|
ActionData: &deleteK8sRegistrySecretsData{
|
||
|
RegistryID: registryID,
|
||
|
Namespaces: namespaces,
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// NewHandlerDeleteRegistrySecrets creates a new handler to execute DeleteK8sRegistrySecrets pending action
|
||
|
func NewHandlerDeleteRegistrySecrets(
|
||
|
authorizationService *authorization.Service,
|
||
|
dataStore dataservices.DataStore,
|
||
|
kubeFactory *kubecli.ClientFactory,
|
||
|
) *HandlerDeleteK8sRegistrySecrets {
|
||
|
return &HandlerDeleteK8sRegistrySecrets{
|
||
|
authorizationService: authorizationService,
|
||
|
dataStore: dataStore,
|
||
|
kubeFactory: kubeFactory,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (h *HandlerDeleteK8sRegistrySecrets) Execute(pa portainer.PendingAction, endpoint *portainer.Endpoint) error {
|
||
|
if endpoint == nil || pa.ActionData == nil {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
var registryData deleteK8sRegistrySecretsData
|
||
|
err := pa.UnmarshallActionData(®istryData)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
kubeClient, err := h.kubeFactory.GetKubeClient(endpoint)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
for _, namespace := range registryData.Namespaces {
|
||
|
err = kubeClient.DeleteRegistrySecret(registryData.RegistryID, namespace)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|