containerized-data-importer/tests/framework/nfs-utils.go
Michael Henriksen 2889d68766
BugId: 1999571 - fix clone into larger capacity nfs volume (#1939)
* BugId: 1999571 - fix clone into larger capacity nfs volume

Signed-off-by: Michael Henriksen <mhenriks@redhat.com>

* fix lint issues

Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
2021-09-15 20:22:35 +02:00

89 lines
2.3 KiB
Go

package framework
import (
"fmt"
"strconv"
"strings"
"time"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"kubevirt.io/containerized-data-importer/tests/utils"
)
const (
// DefaultNfsPvSize is the default nfs pv capacity
DefaultNfsPvSize = "10Gi"
// BiggerNfsPvSize is the bigger nfs pv capacity
BiggerNfsPvSize = "20Gi"
// ExtraNfsDiskPrefix is the prefix for extra nfs disks
ExtraNfsDiskPrefix = "/extraDisk"
timeout = time.Second * 90
pollingInterval = time.Second
pvCount = 10
defaultPrefix = "/disk"
)
func createNFSPVs(client *kubernetes.Clientset, cdiNs string) error {
ip := utils.NfsService.Spec.ClusterIP
for i := 1; i <= pvCount; i++ {
if _, err := utils.CreatePVFromDefinition(client, NfsPvDef(i, defaultPrefix, ip, DefaultNfsPvSize)); err != nil {
// reset rangeCount
return err
}
}
return nil
}
func deleteNFSPVs(client *kubernetes.Clientset, cdiNs string) error {
for i := 1; i <= pvCount; i++ {
pv := NfsPvDef(i, defaultPrefix, utils.NfsService.Spec.ClusterIP, DefaultNfsPvSize)
if err := utils.DeletePV(client, pv); err != nil {
if !errors.IsNotFound(err) {
return err
}
}
}
for i := 1; i <= pvCount; i++ {
pv := NfsPvDef(i, defaultPrefix, utils.NfsService.Spec.ClusterIP, DefaultNfsPvSize)
if err := utils.WaitTimeoutForPVDeleted(client, pv, timeout); err != nil {
return err
}
}
return nil
}
// NfsPvDef creates pv defs for nfs
func NfsPvDef(index int, prefix, serviceIP, size string) *corev1.PersistentVolume {
is := strconv.Itoa(index)
return &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("nfs-pv%s%s", strings.Replace(strings.ToLower(prefix), "/", "-", -1), is),
},
Spec: corev1.PersistentVolumeSpec{
StorageClassName: "nfs",
AccessModes: []corev1.PersistentVolumeAccessMode{
corev1.ReadWriteOnce,
corev1.ReadWriteMany,
},
Capacity: corev1.ResourceList{
corev1.ResourceName(corev1.ResourceStorage): resource.MustParse(size),
},
PersistentVolumeSource: corev1.PersistentVolumeSource{
NFS: &corev1.NFSVolumeSource{
Server: serviceIP,
Path: prefix + is,
},
},
PersistentVolumeReclaimPolicy: corev1.PersistentVolumeReclaimDelete,
},
}
}