MCPcopy Index your code
hub / github.com/devspace-sh/devspace / createPVC

Function createPVC

pkg/devspace/services/podreplace/replace.go:299–359  ·  view source on GitHub ↗
(ctx devspacecontext.Context, deployment *appsv1.Deployment, devPod *latest.DevPod)

Source from the content-addressed store, hash-verified

297}
298
299func createPVC(ctx devspacecontext.Context, deployment *appsv1.Deployment, devPod *latest.DevPod) error {
300 var err error
301 size := resource.MustParse("10Gi")
302 if devPod.PersistenceOptions != nil && devPod.PersistenceOptions.Size != "" {
303 size, err = resource.ParseQuantity(devPod.PersistenceOptions.Size)
304 if err != nil {
305 return fmt.Errorf("error parsing persistent volume size %s: %v", devPod.PersistenceOptions.Size, err)
306 }
307 }
308
309 var storageClassName *string
310 if devPod.PersistenceOptions != nil && devPod.PersistenceOptions.StorageClassName != "" {
311 storageClassName = &devPod.PersistenceOptions.StorageClassName
312 }
313
314 accessModes := []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}
315 if devPod.PersistenceOptions != nil && devPod.PersistenceOptions.AccessModes != nil {
316 accessModes = []corev1.PersistentVolumeAccessMode{}
317 for _, accessMode := range devPod.PersistenceOptions.AccessModes {
318 accessModes = append(accessModes, corev1.PersistentVolumeAccessMode(accessMode))
319 }
320 }
321
322 name := getClaimName(deployment, devPod)
323
324 _, err = ctx.KubeClient().KubeClient().CoreV1().PersistentVolumeClaims(deployment.Namespace).Create(ctx.Context(), &corev1.PersistentVolumeClaim{
325 ObjectMeta: metav1.ObjectMeta{
326 Name: name,
327 Namespace: deployment.Namespace,
328 OwnerReferences: []metav1.OwnerReference{
329 {
330 APIVersion: appsv1.SchemeGroupVersion.String(),
331 Kind: "Deployment",
332 Name: deployment.Name,
333 UID: deployment.UID,
334 Controller: ptr.Bool(true),
335 },
336 },
337 },
338 Spec: corev1.PersistentVolumeClaimSpec{
339 AccessModes: accessModes,
340 Resources: corev1.VolumeResourceRequirements{
341 Requests: map[corev1.ResourceName]resource.Quantity{
342 corev1.ResourceStorage: size,
343 },
344 },
345 StorageClassName: storageClassName,
346 },
347 }, metav1.CreateOptions{})
348 if err != nil {
349 if kerrors.IsAlreadyExists(err) {
350 ctx.Log().Debugf("PVC %s already exists for replaced pod %s", name, deployment.Name)
351 return nil
352 }
353
354 return err
355 }
356

Callers 1

updatePVCFunction · 0.85

Calls 9

BoolFunction · 0.92
getClaimNameFunction · 0.85
KubeClientMethod · 0.65
ContextMethod · 0.65
LogMethod · 0.65
ErrorfMethod · 0.45
StringMethod · 0.45
DebugfMethod · 0.45
DonefMethod · 0.45

Tested by

no test coverage detected