func()

in controllers/gerritreplicationconfig/gerritreplicationconfig_controller.go [205:249]


func (r *ReconcileGerritReplicationConfig) configureReplication(config *gerritApi.GerritReplicationConfig, gerritObj *gerritApi.Gerrit) error {
	gerritTemplatesPath := platformHelper.LocalTemplatesRelativePath

	executableFilePath, err := helper.GetExecutableFilePath()
	if err != nil {
		return errors.New("failed to check if operator running in cluster")
	}

	if helper.RunningInCluster() {
		gerritTemplatesPath = fmt.Sprintf("%s/../%s/%s",
			executableFilePath, platformHelper.LocalConfigsRelativePath, platformHelper.DefaultTemplatesDirectory)
	}

	configArgs, err := r.getConfigurationArgs(gerritObj)
	if err != nil {
		return fmt.Errorf("failed to get configuration arguments: %w", err)
	}

	if err := r.saveSshReplicationKey(gerritObj.Namespace, configArgs.gerritPodName,
		string(configArgs.gerritVCSSshKey["ssh-privatekey"])); err != nil {
		return err
	}

	k8sClient := gerritClient.Client{}

	if err := k8sClient.InitNewSshClient(spec.GerritDefaultAdminUser, configArgs.gerritAdminSshKeys["id_rsa"],
		configArgs.gerritUrl, configArgs.sshPortService); err != nil {
		return fmt.Errorf("failed to init ssh client for Gerrit admin user: %w", err)
	}

	if err := r.createReplicationConfig(gerritObj.Namespace, configArgs.gerritPodName); err != nil {
		return err
	}

	if err := r.updateReplicationConfig(gerritObj.Namespace, configArgs.gerritPodName, gerritTemplatesPath, config); err != nil {
		return err
	}

	if err := r.updateSshConfig(gerritObj.Namespace, configArgs.gerritPodName, gerritTemplatesPath,
		filepath.Join(spec.GerritDefaultVCSKeyPath, spec.GerritDefaultVCSKeyName), config); err != nil {
		return err
	}

	return r.reloadReplicationPlugin(&k8sClient)
}