mirror of
https://github.com/kubevirt/containerized-data-importer.git
synced 2025-06-03 06:30:22 +00:00

* update k8s deps to 1.18.6 and controller runtime to 0.6.2 Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * remove building code generators from docker image. This way the k8s ligray version only has to be updated in go.mod Do more stuff in the bazel container. Faster and better interop Fix unit tests Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * make format Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * remove unnecessary rsync Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * redo code generator dep management Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * builder uses go modules Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
78 lines
2.7 KiB
Go
78 lines
2.7 KiB
Go
package tests
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
cdiv1 "kubevirt.io/containerized-data-importer/pkg/apis/core/v1beta1"
|
|
"kubevirt.io/containerized-data-importer/pkg/common"
|
|
"kubevirt.io/containerized-data-importer/pkg/controller"
|
|
"kubevirt.io/containerized-data-importer/tests/framework"
|
|
"kubevirt.io/containerized-data-importer/tests/utils"
|
|
)
|
|
|
|
const (
|
|
storageClassName = "manual"
|
|
pvWaitForTime = 60 * time.Second
|
|
)
|
|
|
|
var _ = Describe("[rfe_id:1125][crit:high][vendor:cnv-qe@redhat.com][level:component]Local Volume tests", func() {
|
|
var (
|
|
pv *v1.PersistentVolume
|
|
err error
|
|
node string
|
|
)
|
|
|
|
f := framework.NewFramework("local-volume-func-test")
|
|
|
|
BeforeEach(func() {
|
|
nodes, err := f.K8sClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
nodeRef := utils.GetSchedulableNode(nodes)
|
|
Expect(nodeRef).ToNot(BeNil())
|
|
node = *nodeRef
|
|
|
|
By("Creating PV with NodeAffinity and Binding label")
|
|
pv, err = f.CreatePVFromDefinition(utils.NewPVDefinition("local-volume", "1G", storageClassName, node, map[string]string{"node": node}))
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
By("Verify that PV's phase is Available")
|
|
err = f.WaitTimeoutForPVReady(pv.Name, pvWaitForTime)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
})
|
|
|
|
AfterEach(func() {
|
|
if pv != nil {
|
|
err = utils.DeletePV(f.K8sClient, pv)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
}
|
|
})
|
|
|
|
It("[test_id:1367]Import to PVC should succeed with local PV allocated to specific node", func() {
|
|
By("Creating PVC with a selector field matches the PV's label")
|
|
httpEp := fmt.Sprintf("http://%s:%d", utils.FileHostName+"."+f.CdiInstallNs, utils.HTTPRateLimitPort)
|
|
_, err = f.CreatePVCFromDefinition(utils.NewPVCDefinitionWithSelector("local-volume-pvc",
|
|
"1G",
|
|
storageClassName,
|
|
map[string]string{"node": node},
|
|
map[string]string{controller.AnnSource: controller.SourceHTTP,
|
|
controller.AnnContentType: string(cdiv1.DataVolumeKubeVirt), controller.AnnEndpoint: httpEp + "/tinyCore.iso"},
|
|
nil))
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
By("Verify the pod running on the desired node: " + node)
|
|
importer, err := utils.FindPodByPrefix(f.K8sClient, f.Namespace.Name, common.ImporterPodName, common.CDILabelSelector)
|
|
Expect(err).NotTo(HaveOccurred(), fmt.Sprintf("Unable to get importer pod %q", f.Namespace.Name+"/"+common.ImporterPodName))
|
|
err = utils.IsExpectedNode(f.K8sClient, node, importer.Name, importer.Namespace, utils.PodWaitForTime)
|
|
Expect(err).NotTo(HaveOccurred(), fmt.Sprintf("Unable to find pod on node %s, %v", importer.Name, err))
|
|
})
|
|
})
|