func()

in pkg/service/jenkins/jenkins.go [103:150]


func (j JenkinsServiceImpl) newIntegrationKeycloakClient(instance *jenkinsApi.Jenkins) (*keycloakApi.KeycloakClient, error) {
	keycloakClient := keycloakApi.KeycloakClient{
		ObjectMeta: metav1.ObjectMeta{
			Name:      instance.Name,
			Namespace: instance.Namespace,
		},
		Spec: keycloakApi.KeycloakClientSpec{
			ClientId: instance.Name,
			Public:   !instance.Spec.KeycloakSpec.IsPrivate,
			Secret:   instance.Spec.KeycloakSpec.SecretName,
			WebUrl:   instance.Spec.ExternalURL,
			RealmRoles: &[]keycloakApi.RealmRole{
				{
					Name:      "jenkins-administrators",
					Composite: "administrator",
				},
				{
					Name:      "jenkins-users",
					Composite: "developer",
				},
			},
		},
	}

	if keycloakClient.Spec.WebUrl == "" {
		externalURL, err := j.getExternalUrl(instance)
		if err != nil {
			return nil, fmt.Errorf("failed to get route from cluster: %w", err)
		}

		keycloakClient.Spec.WebUrl = externalURL
	}

	if instance.Spec.KeycloakSpec.Realm != "" {
		keycloakClient.Spec.TargetRealm = instance.Spec.KeycloakSpec.Realm
	}

	if err := j.platformService.CreateKeycloakClient(&keycloakClient); err != nil {
		return nil, fmt.Errorf("failed to create Keycloak Client data: %w", err)
	}

	keycloakClient, err := j.platformService.GetKeycloakClient(instance.Name, instance.Namespace)
	if err != nil {
		return nil, fmt.Errorf("failed to get Keycloak Client CR: %w", err)
	}

	return &keycloakClient, nil
}