func initServices()

in main.go [177:249]


func initServices(sch *runtime.Scheme, restConf *rest.Config, appConf *config.Settings, logger *zap.Logger) (*config.Services, error) {
	if appConf.Mock != "" {
		return mocks.InitServices(appConf), nil
	}

	var err error
	serviceItems := config.Services{}

	serviceItems.EDPComponent, err = edpComponent.Make(sch, restConf, appConf.Namespace)
	if err != nil {
		return nil, fmt.Errorf("unable to init edp component service, %w", err)
	}

	serviceItems.Codebase, err = codebase.Make(sch, restConf, appConf.Namespace)
	if err != nil {
		return nil, fmt.Errorf("unable to init codebase service, %w", err)
	}

	serviceItems.K8S, err = k8s.Make(restConf, appConf.Namespace)
	if err != nil {
		return nil, fmt.Errorf("unable to init k8s service, %w", err)
	}

	serviceItems.Jenkins, err = jenkins.Make(sch, restConf, serviceItems.K8S,
		jenkins.Config{Namespace: appConf.Namespace, APIUrl: appConf.JenkinsAPIURL,
			AdminSecretName: appConf.JenkinsAdminSecretName})
	if err != nil {
		return nil, fmt.Errorf("unable to init jenkins service, %w", err)
	}

	serviceItems.OpenShift, err = openshift.Make(restConf, serviceItems.K8S)
	if err != nil {
		return nil, fmt.Errorf("unable to init open shift service, %w", err)
	}

	serviceItems.Gerrit, err = gerrit.Make(sch, restConf,
		gerrit.Config{Namespace: appConf.Namespace, GerritAPIUrlTemplate: appConf.GerritAPIUrlTemplate,
			RootGerritName: appConf.RootGerritName})
	if err != nil {
		return nil, fmt.Errorf("unable to create gerrit service, %w", err)
	}

	serviceItems.GitServer, err = gitserver.New(sch, restConf, appConf.Namespace)
	if err != nil {
		return nil, fmt.Errorf("failed to create gitServer service: %w", err)
	}

	serviceItems.Keycloak, err = keycloak.Make(sch, restConf, appConf.UsersNamespace)
	if err != nil {
		return nil, fmt.Errorf("unable to create keycloak service, %w", err)
	}

	serviceItems.Vault, err = vault.Make(appConf.VaultConfig(), serviceItems.K8S)
	if err != nil {
		return nil, fmt.Errorf("unable to init vault service, %w", err)
	}

	serviceItems.Cache = cache.New(time.Hour, time.Minute)

	sigs := make(chan os.Signal, 1)
	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

	go exitWait(sigs, serviceItems.Cache)

	gob.Register([]registry.CachedFile{})
	if err := serviceItems.Cache.LoadFile(cachePath); err != nil {
		logger.Warn("unable to load cache")
	}

	serviceItems.PermService = permissions.Make(serviceItems.Codebase, serviceItems.K8S)

	return &serviceItems, nil
}