in pkg/service/gerrit/gerrit.go [427:484]
func (s ComponentService) Integrate(ctx context.Context, instance *gerritApi.Gerrit) (*gerritApi.Gerrit, error) {
l := ctrl.LoggerFrom(ctx)
externalUrl, err := s.getExternalUrl(instance)
if err != nil {
return nil, errors.Wrapf(err, "Failed to get Route for %v/%v", instance.Namespace, instance.Name)
}
if instance.Spec.KeycloakSpec.Enabled {
l.Info("Keycloak integration enabled")
var keycloakClient *keycloakApi.KeycloakClient
keycloakClient, err = s.getKeycloakClient(ctx, instance)
if err != nil {
return instance, err
}
if keycloakClient == nil {
err = s.createKeycloakClient(ctx, instance, externalUrl)
if err != nil {
return instance, err
}
}
var keycloakEnvironmentValue []coreV1Api.EnvVar
keycloakEnvironmentValue, err = s.PlatformService.GenerateKeycloakSettings(instance)
if err != nil {
return instance, fmt.Errorf("failed to generate Keycloak %q env values: %w", instance.Name, err)
}
if err = s.PlatformService.PatchDeploymentEnv(instance, keycloakEnvironmentValue); err != nil {
return instance, errors.Wrap(err, "Failed to add identity service information")
}
} else {
l.Info("Keycloak integration not enabled. Restarting deployment.")
gerritDep := &v1.Deployment{}
if err = s.client.Get(ctx, types.NamespacedName{Name: instance.Name, Namespace: instance.Namespace}, gerritDep); err != nil {
return nil, fmt.Errorf("failed to get deployment %q: %w", instance.Name, err)
}
old := gerritDep.DeepCopy()
if gerritDep.Spec.Template.Annotations == nil {
gerritDep.Spec.Template.Annotations = map[string]string{}
}
gerritDep.Spec.Template.Annotations[DeploymentRestartAnnotation] = time.Now().Format(time.RFC3339)
if err = s.client.Patch(ctx, gerritDep, client.MergeFrom(old)); err != nil {
return nil, fmt.Errorf("failed to patch deployment: %w", err)
}
}
return instance, nil
}