in pkg/service/platform/kubernetes/k8s.go [96:132]
func (s *K8SService) AddVolumeToInitContainer(instance *jenkinsApi.Jenkins, containerName string,
vol []coreV1Api.Volume, volMount []coreV1Api.VolumeMount,
) error {
if len(vol) == 0 || len(volMount) == 0 {
return nil
}
deployment, err := s.appsV1Client.Deployments(instance.Namespace).Get(context.TODO(), instance.Name, metav1.GetOptions{})
if err != nil {
return nil
}
initContainer, err := selectContainer(deployment.Spec.Template.Spec.InitContainers, containerName)
if err != nil {
return err
}
initContainer.VolumeMounts = updateVolumeMounts(initContainer.VolumeMounts, volMount)
deployment.Spec.Template.Spec.InitContainers = append(deployment.Spec.Template.Spec.InitContainers, initContainer)
volumes := deployment.Spec.Template.Spec.Volumes
volumes = updateVolumes(volumes, vol)
deployment.Spec.Template.Spec.Volumes = volumes
jsonDc, err := json.Marshal(deployment)
if err != nil {
return fmt.Errorf("failed to marshal: %w", err)
}
_, err = s.appsV1Client.
Deployments(deployment.Namespace).
Patch(context.TODO(), deployment.Name, types.StrategicMergePatchType, jsonDc, metav1.PatchOptions{})
if err != nil {
return fmt.Errorf("failed to patch deployment: %w", err)
}
return nil
}