diff --git a/test/e2e/resource_quota.go b/test/e2e/resource_quota.go index febfcfbd64c..0239eb860ff 100644 --- a/test/e2e/resource_quota.go +++ b/test/e2e/resource_quota.go @@ -38,6 +38,8 @@ const ( resourceQuotaTimeout = 30 * time.Second ) +var classGold string = "gold" + var _ = framework.KubeDescribe("ResourceQuota", func() { f := framework.NewDefaultFramework("resourcequota") @@ -330,17 +332,15 @@ var _ = framework.KubeDescribe("ResourceQuota", func() { usedResources[v1.ResourceQuotas] = resource.MustParse("1") usedResources[v1.ResourcePersistentVolumeClaims] = resource.MustParse("0") usedResources[v1.ResourceRequestsStorage] = resource.MustParse("0") - usedResources[core.V1ResourceByStorageClass("gold", v1.ResourcePersistentVolumeClaims)] = resource.MustParse("0") - usedResources[core.V1ResourceByStorageClass("gold", v1.ResourceRequestsStorage)] = resource.MustParse("0") + usedResources[core.V1ResourceByStorageClass(classGold, v1.ResourcePersistentVolumeClaims)] = resource.MustParse("0") + usedResources[core.V1ResourceByStorageClass(classGold, v1.ResourceRequestsStorage)] = resource.MustParse("0") err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources) Expect(err).NotTo(HaveOccurred()) By("Creating a PersistentVolumeClaim with storage class") pvc := newTestPersistentVolumeClaimForQuota("test-claim") - pvc.Annotations = map[string]string{ - v1.BetaStorageClassAnnotation: "gold", - } + pvc.Spec.StorageClassName = &classGold pvc, err = f.ClientSet.Core().PersistentVolumeClaims(f.Namespace.Name).Create(pvc) Expect(err).NotTo(HaveOccurred()) @@ -348,8 +348,8 @@ var _ = framework.KubeDescribe("ResourceQuota", func() { usedResources = v1.ResourceList{} usedResources[v1.ResourcePersistentVolumeClaims] = resource.MustParse("1") usedResources[v1.ResourceRequestsStorage] = resource.MustParse("1Gi") - usedResources[core.V1ResourceByStorageClass("gold", v1.ResourcePersistentVolumeClaims)] = resource.MustParse("1") - usedResources[core.V1ResourceByStorageClass("gold", v1.ResourceRequestsStorage)] = resource.MustParse("1Gi") + usedResources[core.V1ResourceByStorageClass(classGold, v1.ResourcePersistentVolumeClaims)] = resource.MustParse("1") + usedResources[core.V1ResourceByStorageClass(classGold, v1.ResourceRequestsStorage)] = resource.MustParse("1Gi") err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources) Expect(err).NotTo(HaveOccurred()) @@ -361,8 +361,8 @@ var _ = framework.KubeDescribe("ResourceQuota", func() { By("Ensuring resource quota status released usage") usedResources[v1.ResourcePersistentVolumeClaims] = resource.MustParse("0") usedResources[v1.ResourceRequestsStorage] = resource.MustParse("0") - usedResources[core.V1ResourceByStorageClass("gold", v1.ResourcePersistentVolumeClaims)] = resource.MustParse("0") - usedResources[core.V1ResourceByStorageClass("gold", v1.ResourceRequestsStorage)] = resource.MustParse("0") + usedResources[core.V1ResourceByStorageClass(classGold, v1.ResourcePersistentVolumeClaims)] = resource.MustParse("0") + usedResources[core.V1ResourceByStorageClass(classGold, v1.ResourceRequestsStorage)] = resource.MustParse("0") err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources) Expect(err).NotTo(HaveOccurred()) @@ -579,8 +579,8 @@ func newTestResourceQuota(name string) *v1.ResourceQuota { hard[v1.ResourceSecrets] = resource.MustParse("10") hard[v1.ResourcePersistentVolumeClaims] = resource.MustParse("10") hard[v1.ResourceRequestsStorage] = resource.MustParse("10Gi") - hard[core.V1ResourceByStorageClass("gold", v1.ResourcePersistentVolumeClaims)] = resource.MustParse("10") - hard[core.V1ResourceByStorageClass("gold", v1.ResourceRequestsStorage)] = resource.MustParse("10Gi") + hard[core.V1ResourceByStorageClass(classGold, v1.ResourcePersistentVolumeClaims)] = resource.MustParse("10") + hard[core.V1ResourceByStorageClass(classGold, v1.ResourceRequestsStorage)] = resource.MustParse("10Gi") return &v1.ResourceQuota{ ObjectMeta: metav1.ObjectMeta{Name: name}, Spec: v1.ResourceQuotaSpec{Hard: hard}, diff --git a/test/e2e/volume_provisioning.go b/test/e2e/volume_provisioning.go index 563d846b056..da253039b9f 100644 --- a/test/e2e/volume_provisioning.go +++ b/test/e2e/volume_provisioning.go @@ -114,7 +114,9 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { Expect(err).NotTo(HaveOccurred()) By("creating a claim with a dynamic provisioning annotation") - claim := newClaim(ns, "internal", false) + claim := newClaim(ns) + claim.Spec.StorageClassName = &class.Name + defer func() { c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil) }() @@ -131,6 +133,32 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { testDynamicProvisioning(c, claim, "2Gi") } }) + }) + + framework.KubeDescribe("DynamicProvisioner Beta", func() { + It("should create and delete persistent volumes [Slow] [Volume]", func() { + framework.SkipUnlessProviderIs("openstack", "gce", "aws", "gke") + + By("creating a StorageClass") + class := newStorageClass("", "beta") + _, err := c.StorageV1beta1().StorageClasses().Create(class) + defer c.StorageV1beta1().StorageClasses().Delete(class.Name, nil) + Expect(err).NotTo(HaveOccurred()) + + By("creating a claim with a dynamic provisioning annotation") + claim := newClaim(ns) + claim.Annotations = map[string]string{ + v1.BetaStorageClassAnnotation: class.Name, + } + + defer func() { + c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil) + }() + claim, err = c.Core().PersistentVolumeClaims(ns).Create(claim) + Expect(err).NotTo(HaveOccurred()) + + testDynamicProvisioning(c, claim, "2Gi") + }) // NOTE: Slow! The test will wait up to 5 minutes (framework.ClaimProvisionTimeout) when there is // no regression. @@ -165,7 +193,7 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { } By("Creating a StorageClass for the unmanaged zone") - sc := newStorageClass("kubernetes.io/gce-pd", suffix) + sc := newStorageClass("", suffix) // Set an unmanaged zone. sc.Parameters = map[string]string{"zone": unmanagedZone} sc, err = c.StorageV1beta1().StorageClasses().Create(sc) @@ -173,7 +201,9 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { Expect(err).NotTo(HaveOccurred()) By("Creating a claim and expecting it to timeout") - pvc := newClaim(ns, suffix, false) + pvc := newClaim(ns) + className := sc.Name + pvc.Spec.StorageClassName = &className pvc, err = c.Core().PersistentVolumeClaims(ns).Create(pvc) defer Expect(c.Core().PersistentVolumeClaims(ns).Delete(pvc.Name, nil)).To(Succeed()) Expect(err).NotTo(HaveOccurred()) @@ -190,7 +220,9 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { framework.SkipUnlessProviderIs("openstack", "gce", "aws", "gke", "vsphere") By("creating a claim with an alpha dynamic provisioning annotation") - claim := newClaim(ns, "", true) + claim := newClaim(ns) + claim.Annotations = map[string]string{v1.AlphaStorageClassAnnotation: ""} + defer func() { c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil) }() @@ -228,7 +260,9 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { Expect(err).NotTo(HaveOccurred()) By("creating a claim with a dynamic provisioning annotation") - claim := newClaim(ns, "external", false) + claim := newClaim(ns) + className := class.Name + claim.Spec.StorageClassName = &className defer func() { c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil) }() @@ -242,7 +276,7 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() { }) }) -func newClaim(ns, suffix string, alpha bool) *v1.PersistentVolumeClaim { +func newClaim(ns string) *v1.PersistentVolumeClaim { claim := v1.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{ GenerateName: "pvc-", @@ -260,17 +294,6 @@ func newClaim(ns, suffix string, alpha bool) *v1.PersistentVolumeClaim { }, } - if alpha { - claim.Annotations = map[string]string{ - v1.AlphaStorageClassAnnotation: "", - } - } else { - claim.Annotations = map[string]string{ - v1.BetaStorageClassAnnotation: "myclass-" + suffix, - } - - } - return &claim }