func()

in controllers/role/chain/create_role.go [26:58]


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

	nexusRole, err := c.nexusRoleApiClient.Get(role.Spec.ID)
	if err != nil {
		if !nexus.IsErrNotFound(err) {
			return fmt.Errorf("failed to get role: %w", err)
		}

		log.Info("Role doesn't exist, creating new one")

		if err = c.nexusRoleApiClient.Create(specToRole(&role.Spec)); err != nil {
			return fmt.Errorf("failed to create role: %w", err)
		}

		log.Info("Role has been created")

		return nil
	}

	if roleChanged(&role.Spec, nexusRole) {
		log.Info("Updating role")

		if err = c.nexusRoleApiClient.Update(role.Spec.ID, specToRole(&role.Spec)); err != nil {
			return fmt.Errorf("failed to update role: %w", err)
		}

		log.Info("Role has been updated")
	}

	return nil
}