func()

in pkg/service/platform/openshift/openshift.go [123:168]


func (service *OpenshiftService) AddVolumeToInitContainer(instance *jenkinsApi.Jenkins,
	containerName string, vol []coreV1Api.Volume, volMount []coreV1Api.VolumeMount,
) error {
	if os.Getenv(deploymentTypeEnvName) == deploymentConfigsDeploymentType {
		if len(vol) == 0 || len(volMount) == 0 {
			return nil
		}

		deploymentConfig, err := service.appClient.DeploymentConfigs(instance.Namespace).
			Get(context.TODO(), instance.Name, metav1.GetOptions{})
		if err != nil {
			return nil
		}

		initContainer, err := selectContainer(deploymentConfig.Spec.Template.Spec.InitContainers, containerName)
		if err != nil {
			return err
		}

		initContainer.VolumeMounts = updateVolumeMounts(initContainer.VolumeMounts, volMount)
		deploymentConfig.Spec.Template.Spec.InitContainers = append(deploymentConfig.Spec.Template.Spec.InitContainers, initContainer)
		volumes := deploymentConfig.Spec.Template.Spec.Volumes
		volumes = updateVolumes(volumes, vol)
		deploymentConfig.Spec.Template.Spec.Volumes = volumes

		jsonDc, err := json.Marshal(deploymentConfig)
		if err != nil {
			return fmt.Errorf("failed to marshal deployment config: %w", err)
		}

		_, err = service.appClient.
			DeploymentConfigs(deploymentConfig.Namespace).
			Patch(context.TODO(), deploymentConfig.Name, types.StrategicMergePatchType, jsonDc, metav1.PatchOptions{})
		if err != nil {
			return fmt.Errorf("failed to patch DeploymentConfigs: %w", err)
		}

		return nil
	}

	if err := service.K8SService.AddVolumeToInitContainer(instance, containerName, vol, volMount); err != nil {
		return fmt.Errorf("failed to add volume to init container: %w", err)
	}

	return nil
}