controllers/role/chain/remove_role.go (26 lines of code) (raw):
package chain
import (
"context"
"fmt"
ctrl "sigs.k8s.io/controller-runtime"
nexusApi "github.com/epam/edp-nexus-operator/api/v1alpha1"
"github.com/epam/edp-nexus-operator/pkg/client/nexus"
)
// RemoveRole is a handler for removing role.
type RemoveRole struct {
nexusRoleApiClient nexus.Role
}
// NewRemoveRole creates an instance of RemoveRole handler.
func NewRemoveRole(nexusRoleApiClient nexus.Role) *RemoveRole {
return &RemoveRole{nexusRoleApiClient: nexusRoleApiClient}
}
// ServeRequest implements the logic of removing role.
func (c RemoveRole) ServeRequest(ctx context.Context, role *nexusApi.NexusRole) error {
log := ctrl.LoggerFrom(ctx).WithValues("id", role.Spec.ID)
log.Info("Start removing role")
if err := c.nexusRoleApiClient.Delete(role.Spec.ID); err != nil {
if !nexus.IsErrNotFound(err) {
return fmt.Errorf("failed to delete role: %w", err)
}
log.Info("Role doesn't exist, skipping removal")
}
log.Info("Role has been removed")
return nil
}