Commit f2887af4 authored by Michelle Au's avatar Michelle Au

Move pv_util.go into framework package so that it can be used in tests

not in the e2e package.
parent c2cf3bed
...@@ -77,7 +77,6 @@ go_library( ...@@ -77,7 +77,6 @@ go_library(
"proxy.go", "proxy.go",
"pv_reclaimpolicy.go", "pv_reclaimpolicy.go",
"pvc_label_selector.go", "pvc_label_selector.go",
"pvutil.go",
"rc.go", "rc.go",
"reboot.go", "reboot.go",
"replica_set.go", "replica_set.go",
......
...@@ -25,6 +25,7 @@ go_library( ...@@ -25,6 +25,7 @@ go_library(
"nodes_util.go", "nodes_util.go",
"perf_util.go", "perf_util.go",
"pods.go", "pods.go",
"pv_util.go",
"resource_usage_gatherer.go", "resource_usage_gatherer.go",
"service_util.go", "service_util.go",
"test_context.go", "test_context.go",
...@@ -68,6 +69,7 @@ go_library( ...@@ -68,6 +69,7 @@ go_library(
"//pkg/util/labels:go_default_library", "//pkg/util/labels:go_default_library",
"//pkg/util/system:go_default_library", "//pkg/util/system:go_default_library",
"//pkg/util/version:go_default_library", "//pkg/util/version:go_default_library",
"//pkg/volume/util/volumehelper:go_default_library",
"//plugin/pkg/scheduler/algorithm/predicates:go_default_library", "//plugin/pkg/scheduler/algorithm/predicates:go_default_library",
"//plugin/pkg/scheduler/schedulercache:go_default_library", "//plugin/pkg/scheduler/schedulercache:go_default_library",
"//test/e2e/perftype:go_default_library", "//test/e2e/perftype:go_default_library",
...@@ -86,6 +88,7 @@ go_library( ...@@ -86,6 +88,7 @@ go_library(
"//vendor:google.golang.org/api/compute/v1", "//vendor:google.golang.org/api/compute/v1",
"//vendor:google.golang.org/api/googleapi", "//vendor:google.golang.org/api/googleapi",
"//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/api/resource",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"//vendor:k8s.io/apimachinery/pkg/fields", "//vendor:k8s.io/apimachinery/pkg/fields",
......
...@@ -4590,6 +4590,14 @@ func getPodLogsInternal(c clientset.Interface, namespace, podName, containerName ...@@ -4590,6 +4590,14 @@ func getPodLogsInternal(c clientset.Interface, namespace, podName, containerName
return string(logs), err return string(logs), err
} }
func GetGCECloud() (*gcecloud.GCECloud, error) {
gceCloud, ok := TestContext.CloudConfig.Provider.(*gcecloud.GCECloud)
if !ok {
return nil, fmt.Errorf("failed to convert CloudConfig.Provider to GCECloud: %#v", TestContext.CloudConfig.Provider)
}
return gceCloud, nil
}
// EnsureLoadBalancerResourcesDeleted ensures that cloud load balancer resources that were created // EnsureLoadBalancerResourcesDeleted ensures that cloud load balancer resources that were created
// are actually cleaned up. Currently only implemented for GCE/GKE. // are actually cleaned up. Currently only implemented for GCE/GKE.
func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error { func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error {
...@@ -4600,9 +4608,9 @@ func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error { ...@@ -4600,9 +4608,9 @@ func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error {
} }
func ensureGCELoadBalancerResourcesDeleted(ip, portRange string) error { func ensureGCELoadBalancerResourcesDeleted(ip, portRange string) error {
gceCloud, ok := TestContext.CloudConfig.Provider.(*gcecloud.GCECloud) gceCloud, err := GetGCECloud()
if !ok { if err != nil {
return fmt.Errorf("failed to convert CloudConfig.Provider to GCECloud: %#v", TestContext.CloudConfig.Provider) return err
} }
project := TestContext.CloudConfig.ProjectID project := TestContext.CloudConfig.ProjectID
region, err := gcecloud.GetGCERegion(TestContext.CloudConfig.Zone) region, err := gcecloud.GetGCERegion(TestContext.CloudConfig.Zone)
...@@ -5090,9 +5098,9 @@ func (p *E2ETestNodePreparer) CleanupNodes() error { ...@@ -5090,9 +5098,9 @@ func (p *E2ETestNodePreparer) CleanupNodes() error {
// the given name. The name is usually the UUID of the Service prefixed with an // the given name. The name is usually the UUID of the Service prefixed with an
// alpha-numeric character ('a') to work around cloudprovider rules. // alpha-numeric character ('a') to work around cloudprovider rules.
func CleanupGCEResources(loadBalancerName string) (retErr error) { func CleanupGCEResources(loadBalancerName string) (retErr error) {
gceCloud, ok := TestContext.CloudConfig.Provider.(*gcecloud.GCECloud) gceCloud, err := GetGCECloud()
if !ok { if err != nil {
return fmt.Errorf("failed to convert CloudConfig.Provider to GCECloud: %#v", TestContext.CloudConfig.Provider) return err
} }
if err := gceCloud.DeleteFirewall(loadBalancerName); err != nil && if err := gceCloud.DeleteFirewall(loadBalancerName); err != nil &&
!IsGoogleAPIHTTPErrorCode(err, http.StatusNotFound) { !IsGoogleAPIHTTPErrorCode(err, http.StatusNotFound) {
......
...@@ -415,8 +415,8 @@ var _ = framework.KubeDescribe("kubelet", func() { ...@@ -415,8 +415,8 @@ var _ = framework.KubeDescribe("kubelet", func() {
}) })
AfterEach(func() { AfterEach(func() {
deletePodWithWait(f, c, pod) framework.DeletePodWithWait(f, c, pod)
deletePodWithWait(f, c, nfsServerPod) framework.DeletePodWithWait(f, c, nfsServerPod)
}) })
// execute It blocks from above table of tests // execute It blocks from above table of tests
...@@ -427,11 +427,11 @@ var _ = framework.KubeDescribe("kubelet", func() { ...@@ -427,11 +427,11 @@ var _ = framework.KubeDescribe("kubelet", func() {
pod = createPodUsingNfs(f, c, ns, nfsIP, t.podCmd) pod = createPodUsingNfs(f, c, ns, nfsIP, t.podCmd)
By("Delete the NFS server pod") By("Delete the NFS server pod")
deletePodWithWait(f, c, nfsServerPod) framework.DeletePodWithWait(f, c, nfsServerPod)
nfsServerPod = nil nfsServerPod = nil
By("Delete the pod mounted to the NFS volume") By("Delete the pod mounted to the NFS volume")
deletePodWithWait(f, c, pod) framework.DeletePodWithWait(f, c, pod)
// pod object is now stale, but is intentionally not nil // pod object is now stale, but is intentionally not nil
By("Check if host running deleted pod has been cleaned up -- expect not") By("Check if host running deleted pod has been cleaned up -- expect not")
......
...@@ -589,7 +589,7 @@ func createPD() (string, error) { ...@@ -589,7 +589,7 @@ func createPD() (string, error) {
if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" { if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" {
pdName := fmt.Sprintf("%s-%s", framework.TestContext.Prefix, string(uuid.NewUUID())) pdName := fmt.Sprintf("%s-%s", framework.TestContext.Prefix, string(uuid.NewUUID()))
gceCloud, err := getGCECloud() gceCloud, err := framework.GetGCECloud()
if err != nil { if err != nil {
return "", err return "", err
} }
...@@ -624,7 +624,7 @@ func createPD() (string, error) { ...@@ -624,7 +624,7 @@ func createPD() (string, error) {
func deletePD(pdName string) error { func deletePD(pdName string) error {
if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" { if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" {
gceCloud, err := getGCECloud() gceCloud, err := framework.GetGCECloud()
if err != nil { if err != nil {
return err return err
} }
...@@ -663,7 +663,7 @@ func deletePD(pdName string) error { ...@@ -663,7 +663,7 @@ func deletePD(pdName string) error {
func detachPD(nodeName types.NodeName, pdName string) error { func detachPD(nodeName types.NodeName, pdName string) error {
if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" { if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" {
gceCloud, err := getGCECloud() gceCloud, err := framework.GetGCECloud()
if err != nil { if err != nil {
return err return err
} }
...@@ -771,7 +771,7 @@ func testPDPod(diskNames []string, targetNode types.NodeName, readOnly bool, num ...@@ -771,7 +771,7 @@ func testPDPod(diskNames []string, targetNode types.NodeName, readOnly bool, num
func waitForPDDetach(diskName string, nodeName types.NodeName) error { func waitForPDDetach(diskName string, nodeName types.NodeName) error {
if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" { if framework.TestContext.Provider == "gce" || framework.TestContext.Provider == "gke" {
framework.Logf("Waiting for GCE PD %q to detach from node %q.", diskName, nodeName) framework.Logf("Waiting for GCE PD %q to detach from node %q.", diskName, nodeName)
gceCloud, err := getGCECloud() gceCloud, err := framework.GetGCECloud()
if err != nil { if err != nil {
return err return err
} }
...@@ -798,16 +798,6 @@ func waitForPDDetach(diskName string, nodeName types.NodeName) error { ...@@ -798,16 +798,6 @@ func waitForPDDetach(diskName string, nodeName types.NodeName) error {
return nil return nil
} }
func getGCECloud() (*gcecloud.GCECloud, error) {
gceCloud, ok := framework.TestContext.CloudConfig.Provider.(*gcecloud.GCECloud)
if !ok {
return nil, fmt.Errorf("failed to convert CloudConfig.Provider to GCECloud: %#v", framework.TestContext.CloudConfig.Provider)
}
return gceCloud, nil
}
func detachAndDeletePDs(diskName string, hosts []types.NodeName) { func detachAndDeletePDs(diskName string, hosts []types.NodeName) {
for _, host := range hosts { for _, host := range hosts {
framework.Logf("Detaching GCE PD %q from node %q.", diskName, host) framework.Logf("Detaching GCE PD %q from node %q.", diskName, host)
......
...@@ -54,7 +54,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Volume][Disruptive][Flaky]", ...@@ -54,7 +54,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Volume][Disruptive][Flaky]",
c clientset.Interface c clientset.Interface
ns string ns string
nfsServerPod *v1.Pod nfsServerPod *v1.Pod
nfsPVconfig persistentVolumeConfig nfsPVconfig framework.PersistentVolumeConfig
nfsServerIP, clientNodeIP string nfsServerIP, clientNodeIP string
clientNode *v1.Node clientNode *v1.Node
) )
...@@ -72,9 +72,9 @@ var _ = framework.KubeDescribe("PersistentVolumes [Volume][Disruptive][Flaky]", ...@@ -72,9 +72,9 @@ var _ = framework.KubeDescribe("PersistentVolumes [Volume][Disruptive][Flaky]",
framework.Logf("[BeforeEach] Configuring PersistentVolume") framework.Logf("[BeforeEach] Configuring PersistentVolume")
nfsServerIP = nfsServerPod.Status.PodIP nfsServerIP = nfsServerPod.Status.PodIP
Expect(nfsServerIP).NotTo(BeEmpty()) Expect(nfsServerIP).NotTo(BeEmpty())
nfsPVconfig = persistentVolumeConfig{ nfsPVconfig = framework.PersistentVolumeConfig{
namePrefix: "nfs-", NamePrefix: "nfs-",
pvSource: v1.PersistentVolumeSource{ PVSource: v1.PersistentVolumeSource{
NFS: &v1.NFSVolumeSource{ NFS: &v1.NFSVolumeSource{
Server: nfsServerIP, Server: nfsServerIP,
Path: "/exports", Path: "/exports",
...@@ -98,7 +98,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Volume][Disruptive][Flaky]", ...@@ -98,7 +98,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Volume][Disruptive][Flaky]",
}) })
AfterEach(func() { AfterEach(func() {
deletePodWithWait(f, c, nfsServerPod) framework.DeletePodWithWait(f, c, nfsServerPod)
}) })
Context("when kubelet restarts", func() { Context("when kubelet restarts", func() {
...@@ -175,7 +175,7 @@ func testVolumeUnmountsFromDeletedPod(c clientset.Interface, f *framework.Framew ...@@ -175,7 +175,7 @@ func testVolumeUnmountsFromDeletedPod(c clientset.Interface, f *framework.Framew
By("Restarting the kubelet.") By("Restarting the kubelet.")
kubeletCommand(kStop, c, clientPod) kubeletCommand(kStop, c, clientPod)
deletePodWithWait(f, c, clientPod) framework.DeletePodWithWait(f, c, clientPod)
kubeletCommand(kStart, c, clientPod) kubeletCommand(kStart, c, clientPod)
By("Expecting the volume mount not to be found.") By("Expecting the volume mount not to be found.")
...@@ -187,9 +187,9 @@ func testVolumeUnmountsFromDeletedPod(c clientset.Interface, f *framework.Framew ...@@ -187,9 +187,9 @@ func testVolumeUnmountsFromDeletedPod(c clientset.Interface, f *framework.Framew
} }
// initTestCase initializes spec resources (pv, pvc, and pod) and returns pointers to be consumed by the test // initTestCase initializes spec resources (pv, pvc, and pod) and returns pointers to be consumed by the test
func initTestCase(f *framework.Framework, c clientset.Interface, pvConfig persistentVolumeConfig, ns, nodeName string) (*v1.Pod, *v1.PersistentVolume, *v1.PersistentVolumeClaim) { func initTestCase(f *framework.Framework, c clientset.Interface, pvConfig framework.PersistentVolumeConfig, ns, nodeName string) (*v1.Pod, *v1.PersistentVolume, *v1.PersistentVolumeClaim) {
pv, pvc := createPVPVC(c, pvConfig, ns, false) pv, pvc := framework.CreatePVPVC(c, pvConfig, ns, false)
pod := makePod(ns, pvc.Name) pod := framework.MakePod(ns, pvc.Name)
pod.Spec.NodeName = nodeName pod.Spec.NodeName = nodeName
framework.Logf("Creating nfs client Pod %s on node %s", pod.Name, nodeName) framework.Logf("Creating nfs client Pod %s on node %s", pod.Name, nodeName)
pod, err := c.Core().Pods(ns).Create(pod) pod, err := c.Core().Pods(ns).Create(pod)
...@@ -208,9 +208,9 @@ func initTestCase(f *framework.Framework, c clientset.Interface, pvConfig persis ...@@ -208,9 +208,9 @@ func initTestCase(f *framework.Framework, c clientset.Interface, pvConfig persis
// tearDownTestCase destroy resources created by initTestCase. // tearDownTestCase destroy resources created by initTestCase.
func tearDownTestCase(c clientset.Interface, f *framework.Framework, ns string, pod *v1.Pod, pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume) { func tearDownTestCase(c clientset.Interface, f *framework.Framework, ns string, pod *v1.Pod, pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume) {
deletePodWithWait(f, c, pod) framework.DeletePodWithWait(f, c, pod)
deletePersistentVolumeClaim(c, pvc.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc.Name, ns)
deletePersistentVolume(c, pv.Name) framework.DeletePersistentVolume(c, pv.Name)
} }
// kubeletCommand performs `start`, `restart`, or `stop` on the kubelet running on the node of the target pod. // kubeletCommand performs `start`, `restart`, or `stop` on the kubelet running on the node of the target pod.
......
...@@ -38,7 +38,7 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() { ...@@ -38,7 +38,7 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() {
pv *v1.PersistentVolume pv *v1.PersistentVolume
pvc *v1.PersistentVolumeClaim pvc *v1.PersistentVolumeClaim
clientPod *v1.Pod clientPod *v1.Pod
pvConfig persistentVolumeConfig pvConfig framework.PersistentVolumeConfig
vsp *vsphere.VSphere vsp *vsphere.VSphere
err error err error
node types.NodeName node types.NodeName
...@@ -69,23 +69,23 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() { ...@@ -69,23 +69,23 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() {
if volumePath == "" { if volumePath == "" {
volumePath, err = createVSphereVolume(vsp, nil) volumePath, err = createVSphereVolume(vsp, nil)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
pvConfig = persistentVolumeConfig{ pvConfig = framework.PersistentVolumeConfig{
namePrefix: "vspherepv-", NamePrefix: "vspherepv-",
pvSource: v1.PersistentVolumeSource{ PVSource: v1.PersistentVolumeSource{
VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{ VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{
VolumePath: volumePath, VolumePath: volumePath,
FSType: "ext4", FSType: "ext4",
}, },
}, },
prebind: nil, Prebind: nil,
} }
} }
By("Creating the PV and PVC") By("Creating the PV and PVC")
pv, pvc = createPVPVC(c, pvConfig, ns, false) pv, pvc = framework.CreatePVPVC(c, pvConfig, ns, false)
waitOnPVandPVC(c, ns, pv, pvc) framework.WaitOnPVandPVC(c, ns, pv, pvc)
By("Creating the Client Pod") By("Creating the Client Pod")
clientPod = createClientPod(c, ns, pvc) clientPod = framework.CreateClientPod(c, ns, pvc)
node := types.NodeName(clientPod.Spec.NodeName) node := types.NodeName(clientPod.Spec.NodeName)
By("Verify disk should be attached to the node") By("Verify disk should be attached to the node")
...@@ -100,15 +100,15 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() { ...@@ -100,15 +100,15 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() {
if clientPod != nil { if clientPod != nil {
clientPod, err = c.CoreV1().Pods(ns).Get(clientPod.Name, metav1.GetOptions{}) clientPod, err = c.CoreV1().Pods(ns).Get(clientPod.Name, metav1.GetOptions{})
if !apierrs.IsNotFound(err) { if !apierrs.IsNotFound(err) {
deletePodWithWait(f, c, clientPod) framework.DeletePodWithWait(f, c, clientPod)
} }
} }
if pv != nil { if pv != nil {
deletePersistentVolume(c, pv.Name) framework.DeletePersistentVolume(c, pv.Name)
} }
if pvc != nil { if pvc != nil {
deletePersistentVolumeClaim(c, pvc.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc.Name, ns)
} }
} }
}) })
...@@ -136,7 +136,7 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() { ...@@ -136,7 +136,7 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() {
It("should test that deleting a PVC before the pod does not cause pod deletion to fail on PD detach", func() { It("should test that deleting a PVC before the pod does not cause pod deletion to fail on PD detach", func() {
By("Deleting the Claim") By("Deleting the Claim")
deletePersistentVolumeClaim(c, pvc.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc.Name, ns)
pvc, err = c.CoreV1().PersistentVolumeClaims(ns).Get(pvc.Name, metav1.GetOptions{}) pvc, err = c.CoreV1().PersistentVolumeClaims(ns).Get(pvc.Name, metav1.GetOptions{})
if !apierrs.IsNotFound(err) { if !apierrs.IsNotFound(err) {
...@@ -144,7 +144,7 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() { ...@@ -144,7 +144,7 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() {
} }
pvc = nil pvc = nil
By("Deleting the Pod") By("Deleting the Pod")
deletePodWithWait(f, c, clientPod) framework.DeletePodWithWait(f, c, clientPod)
}) })
...@@ -157,13 +157,13 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() { ...@@ -157,13 +157,13 @@ var _ = framework.KubeDescribe("PersistentVolumes:vsphere", func() {
*/ */
It("should test that deleting the PV before the pod does not cause pod deletion to fail on PD detach", func() { It("should test that deleting the PV before the pod does not cause pod deletion to fail on PD detach", func() {
By("Deleting the Persistent Volume") By("Deleting the Persistent Volume")
deletePersistentVolume(c, pv.Name) framework.DeletePersistentVolume(c, pv.Name)
pv, err = c.CoreV1().PersistentVolumes().Get(pv.Name, metav1.GetOptions{}) pv, err = c.CoreV1().PersistentVolumes().Get(pv.Name, metav1.GetOptions{})
if !apierrs.IsNotFound(err) { if !apierrs.IsNotFound(err) {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
pv = nil pv = nil
By("Deleting the pod") By("Deleting the pod")
deletePodWithWait(f, c, clientPod) framework.DeletePodWithWait(f, c, clientPod)
}) })
}) })
...@@ -119,14 +119,14 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:ReclaimPolicy]", func ...@@ -119,14 +119,14 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:ReclaimPolicy]", func
writeContentToVSpherePV(c, pvc, volumeFileContent) writeContentToVSpherePV(c, pvc, volumeFileContent)
By("Delete PVC") By("Delete PVC")
deletePersistentVolumeClaim(c, pvc.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc.Name, ns)
pvc = nil pvc = nil
By("Verify PV is retained") By("Verify PV is retained")
framework.Logf("Waiting for PV %v to become Released", pv.Name) framework.Logf("Waiting for PV %v to become Released", pv.Name)
err = framework.WaitForPersistentVolumePhase(v1.VolumeReleased, c, pv.Name, 3*time.Second, 300*time.Second) err = framework.WaitForPersistentVolumePhase(v1.VolumeReleased, c, pv.Name, 3*time.Second, 300*time.Second)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
deletePersistentVolume(c, pv.Name) framework.DeletePersistentVolume(c, pv.Name)
By("Creating the PV for same volume path") By("Creating the PV for same volume path")
pv = getVSpherePersistentVolumeSpec(volumePath, v1.PersistentVolumeReclaimRetain, nil) pv = getVSpherePersistentVolumeSpec(volumePath, v1.PersistentVolumeReclaimRetain, nil)
...@@ -139,7 +139,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:ReclaimPolicy]", func ...@@ -139,7 +139,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:ReclaimPolicy]", func
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("wait for the pv and pvc to bind") By("wait for the pv and pvc to bind")
waitOnPVandPVC(c, ns, pv, pvc) framework.WaitOnPVandPVC(c, ns, pv, pvc)
verifyContentOfVSpherePV(c, pvc, volumeFileContent) verifyContentOfVSpherePV(c, pvc, volumeFileContent)
}) })
...@@ -173,10 +173,10 @@ func testCleanupVSpherePersistentVolumeReclaim(vsp *vsphere.VSphere, c clientset ...@@ -173,10 +173,10 @@ func testCleanupVSpherePersistentVolumeReclaim(vsp *vsphere.VSphere, c clientset
vsp.DeleteVolume(volumePath) vsp.DeleteVolume(volumePath)
} }
if pv != nil { if pv != nil {
deletePersistentVolume(c, pv.Name) framework.DeletePersistentVolume(c, pv.Name)
} }
if pvc != nil { if pvc != nil {
deletePersistentVolumeClaim(c, pvc.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc.Name, ns)
} }
} }
...@@ -185,10 +185,10 @@ func deletePVCAfterBind(c clientset.Interface, ns string, pvc *v1.PersistentVolu ...@@ -185,10 +185,10 @@ func deletePVCAfterBind(c clientset.Interface, ns string, pvc *v1.PersistentVolu
var err error var err error
By("wait for the pv and pvc to bind") By("wait for the pv and pvc to bind")
waitOnPVandPVC(c, ns, pv, pvc) framework.WaitOnPVandPVC(c, ns, pv, pvc)
By("delete pvc") By("delete pvc")
deletePersistentVolumeClaim(c, pvc.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc.Name, ns)
pvc, err = c.CoreV1().PersistentVolumeClaims(ns).Get(pvc.Name, metav1.GetOptions{}) pvc, err = c.CoreV1().PersistentVolumeClaims(ns).Get(pvc.Name, metav1.GetOptions{})
if !apierrs.IsNotFound(err) { if !apierrs.IsNotFound(err) {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
......
...@@ -81,14 +81,14 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:LabelSelector]", func ...@@ -81,14 +81,14 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:LabelSelector]", func
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("wait for the pvc_ssd to bind with pv_ssd") By("wait for the pvc_ssd to bind with pv_ssd")
waitOnPVandPVC(c, ns, pv_ssd, pvc_ssd) framework.WaitOnPVandPVC(c, ns, pv_ssd, pvc_ssd)
By("Verify status of pvc_vvol is pending") By("Verify status of pvc_vvol is pending")
err = framework.WaitForPersistentVolumeClaimPhase(v1.ClaimPending, c, ns, pvc_vvol.Name, 3*time.Second, 300*time.Second) err = framework.WaitForPersistentVolumeClaimPhase(v1.ClaimPending, c, ns, pvc_vvol.Name, 3*time.Second, 300*time.Second)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("delete pvc_ssd") By("delete pvc_ssd")
deletePersistentVolumeClaim(c, pvc_ssd.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc_ssd.Name, ns)
By("verify pv_ssd is deleted") By("verify pv_ssd is deleted")
err = framework.WaitForPersistentVolumeDeleted(c, pv_ssd.Name, 3*time.Second, 300*time.Second) err = framework.WaitForPersistentVolumeDeleted(c, pv_ssd.Name, 3*time.Second, 300*time.Second)
...@@ -96,7 +96,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:LabelSelector]", func ...@@ -96,7 +96,7 @@ var _ = framework.KubeDescribe("PersistentVolumes [Feature:LabelSelector]", func
volumePath = "" volumePath = ""
By("delete pvc_vvol") By("delete pvc_vvol")
deletePersistentVolumeClaim(c, pvc_vvol.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc_vvol.Name, ns)
}) })
}) })
}) })
...@@ -139,12 +139,12 @@ func testCleanupVSpherePVClabelselector(c clientset.Interface, ns string, volume ...@@ -139,12 +139,12 @@ func testCleanupVSpherePVClabelselector(c clientset.Interface, ns string, volume
vsp.DeleteVolume(volumePath) vsp.DeleteVolume(volumePath)
} }
if pvc_ssd != nil { if pvc_ssd != nil {
deletePersistentVolumeClaim(c, pvc_ssd.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc_ssd.Name, ns)
} }
if pvc_vvol != nil { if pvc_vvol != nil {
deletePersistentVolumeClaim(c, pvc_vvol.Name, ns) framework.DeletePersistentVolumeClaim(c, pvc_vvol.Name, ns)
} }
if pv_ssd != nil { if pv_ssd != nil {
deletePersistentVolume(c, pv_ssd.Name) framework.DeletePersistentVolume(c, pv_ssd.Name)
} }
} }
...@@ -143,7 +143,7 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { ...@@ -143,7 +143,7 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() {
allZones := sets.NewString() // all zones in the project allZones := sets.NewString() // all zones in the project
managedZones := sets.NewString() // subset of allZones managedZones := sets.NewString() // subset of allZones
gceCloud, err := getGCECloud() gceCloud, err := framework.GetGCECloud()
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
// Get all k8s managed zones // Get all k8s managed zones
......
...@@ -21,6 +21,7 @@ import ( ...@@ -21,6 +21,7 @@ import (
"time" "time"
"fmt" "fmt"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
...@@ -84,24 +85,24 @@ func waitForVSphereDiskToDetach(vsp *vsphere.VSphere, volumePath string, nodeNam ...@@ -84,24 +85,24 @@ func waitForVSphereDiskToDetach(vsp *vsphere.VSphere, volumePath string, nodeNam
// function to create vsphere volume spec with given VMDK volume path, Reclaim Policy and labels // function to create vsphere volume spec with given VMDK volume path, Reclaim Policy and labels
func getVSpherePersistentVolumeSpec(volumePath string, persistentVolumeReclaimPolicy v1.PersistentVolumeReclaimPolicy, labels map[string]string) *v1.PersistentVolume { func getVSpherePersistentVolumeSpec(volumePath string, persistentVolumeReclaimPolicy v1.PersistentVolumeReclaimPolicy, labels map[string]string) *v1.PersistentVolume {
var ( var (
pvConfig persistentVolumeConfig pvConfig framework.PersistentVolumeConfig
pv *v1.PersistentVolume pv *v1.PersistentVolume
claimRef *v1.ObjectReference claimRef *v1.ObjectReference
) )
pvConfig = persistentVolumeConfig{ pvConfig = framework.PersistentVolumeConfig{
namePrefix: "vspherepv-", NamePrefix: "vspherepv-",
pvSource: v1.PersistentVolumeSource{ PVSource: v1.PersistentVolumeSource{
VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{ VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{
VolumePath: volumePath, VolumePath: volumePath,
FSType: "ext4", FSType: "ext4",
}, },
}, },
prebind: nil, Prebind: nil,
} }
pv = &v1.PersistentVolume{ pv = &v1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
GenerateName: pvConfig.namePrefix, GenerateName: pvConfig.NamePrefix,
Annotations: map[string]string{ Annotations: map[string]string{
volumehelper.VolumeGidAnnotationKey: "777", volumehelper.VolumeGidAnnotationKey: "777",
}, },
...@@ -111,7 +112,7 @@ func getVSpherePersistentVolumeSpec(volumePath string, persistentVolumeReclaimPo ...@@ -111,7 +112,7 @@ func getVSpherePersistentVolumeSpec(volumePath string, persistentVolumeReclaimPo
Capacity: v1.ResourceList{ Capacity: v1.ResourceList{
v1.ResourceName(v1.ResourceStorage): resource.MustParse("2Gi"), v1.ResourceName(v1.ResourceStorage): resource.MustParse("2Gi"),
}, },
PersistentVolumeSource: pvConfig.pvSource, PersistentVolumeSource: pvConfig.PVSource,
AccessModes: []v1.PersistentVolumeAccessMode{ AccessModes: []v1.PersistentVolumeAccessMode{
v1.ReadWriteOnce, v1.ReadWriteOnce,
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment