controllers/user/chain/remove_user.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"
)
// RemoveUser is a handler for removing user.
type RemoveUser struct {
nexusUserApiClient nexus.User
}
// NewRemoveUser creates an instance of RemoveUser handler.
func NewRemoveUser(nexusUserApiClient nexus.User) *RemoveUser {
return &RemoveUser{nexusUserApiClient: nexusUserApiClient}
}
// ServeRequest implements the logic of removing user.
func (c RemoveUser) ServeRequest(ctx context.Context, user *nexusApi.NexusUser) error {
log := ctrl.LoggerFrom(ctx).WithValues("id", user.Spec.ID)
log.Info("Start removing user")
if err := c.nexusUserApiClient.Delete(user.Spec.ID); err != nil {
if !nexus.IsErrNotFound(err) {
return fmt.Errorf("failed to delete user: %w", err)
}
log.Info("User doesn't exist, skipping removal")
}
log.Info("User has been removed")
return nil
}