func()

in controllers/user/chain/create_user.go [30:74]


func (c *CreateUser) ServeRequest(ctx context.Context, user *nexusApi.NexusUser) error {
	log := ctrl.LoggerFrom(ctx).WithValues("id", user.Spec.ID)
	log.Info("Start creating user")

	nexusUser, err := c.nexusUserApiClient.Get(user.Spec.ID)
	if err != nil {
		return fmt.Errorf("failed to get user: %w", err)
	}

	if nexusUser == nil {
		log.Info("User doesn't exist, creating new one")

		var pass string

		if pass, err = c.getSecretFromRef(ctx, user.Spec.Secret, user.Namespace); err != nil {
			return fmt.Errorf("failed to get password from secret: %w", err)
		}

		if err = c.nexusUserApiClient.Create(specToUser(&user.Spec, pass)); err != nil {
			return fmt.Errorf("failed to create user: %w", err)
		}

		log.Info("User has been created")

		return nil
	}

	if userChanged(&user.Spec, nexusUser) {
		log.Info("Updating user")

		updateUserFields(&user.Spec, nexusUser)

		if err = c.nexusUserApiClient.Update(user.Spec.ID, *nexusUser); err != nil {
			return fmt.Errorf("failed to update user: %w", err)
		}

		log.Info("User has been updated")

		return nil
	}

	log.Info("User unchanged, skip updating")

	return nil
}