mirror of https://github.com/k3s-io/k3s
Use storage.k8s.io/v1 in tests instead of v1beta1
parent
223c721d6e
commit
e0ab1dcfe2
|
@ -116,8 +116,9 @@ go_library(
|
|||
"//pkg/apis/extensions/v1beta1:go_default_library",
|
||||
"//pkg/apis/rbac/v1beta1:go_default_library",
|
||||
"//pkg/apis/settings/v1alpha1:go_default_library",
|
||||
"//pkg/apis/storage/v1:go_default_library",
|
||||
"//pkg/apis/storage/v1/util:go_default_library",
|
||||
"//pkg/apis/storage/v1beta1:go_default_library",
|
||||
"//pkg/apis/storage/v1beta1/util:go_default_library",
|
||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||
"//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library",
|
||||
"//pkg/client/clientset_generated/clientset/typed/extensions/v1beta1:go_default_library",
|
||||
|
|
|
@ -26,8 +26,9 @@ import (
|
|||
"k8s.io/apiserver/pkg/authentication/serviceaccount"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
rbacv1beta1 "k8s.io/kubernetes/pkg/apis/rbac/v1beta1"
|
||||
storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1"
|
||||
storageutil "k8s.io/kubernetes/pkg/apis/storage/v1beta1/util"
|
||||
storage "k8s.io/kubernetes/pkg/apis/storage/v1"
|
||||
storageutil "k8s.io/kubernetes/pkg/apis/storage/v1/util"
|
||||
storagebeta "k8s.io/kubernetes/pkg/apis/storage/v1beta1"
|
||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
|
||||
|
@ -104,46 +105,44 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() {
|
|||
ns = f.Namespace.Name
|
||||
})
|
||||
|
||||
/*
|
||||
TODO: enable when GKE is updated with the new API
|
||||
framework.KubeDescribe("DynamicProvisioner", func() {
|
||||
It("should create and delete persistent volumes [Slow] [Volume]", func() {
|
||||
framework.SkipUnlessProviderIs("openstack", "gce", "aws", "gke", "vsphere")
|
||||
framework.KubeDescribe("DynamicProvisioner", func() {
|
||||
It("should create and delete persistent volumes [Slow] [Volume]", func() {
|
||||
framework.SkipUnlessProviderIs("openstack", "gce", "aws", "gke")
|
||||
|
||||
By("creating a StorageClass")
|
||||
class := newStorageClass("", "internal")
|
||||
class, err := c.StorageV1beta1().StorageClasses().Create(class)
|
||||
defer c.StorageV1beta1().StorageClasses().Delete(class.Name, nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
By("creating a StorageClass")
|
||||
class := newStorageClass("", "internal")
|
||||
class, err := c.StorageV1().StorageClasses().Create(class)
|
||||
defer c.StorageV1().StorageClasses().Delete(class.Name, nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("creating a claim with a dynamic provisioning annotation")
|
||||
claim := newClaim(ns)
|
||||
claim.Spec.StorageClassName = &class.Name
|
||||
By("creating a claim with a dynamic provisioning annotation")
|
||||
claim := newClaim(ns)
|
||||
claim.Spec.StorageClassName = &class.Name
|
||||
|
||||
defer func() {
|
||||
c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil)
|
||||
}()
|
||||
claim, err = c.Core().PersistentVolumeClaims(ns).Create(claim)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
defer func() {
|
||||
c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil)
|
||||
}()
|
||||
claim, err = c.Core().PersistentVolumeClaims(ns).Create(claim)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
if framework.ProviderIs("vsphere") {
|
||||
// vsphere provider does not allocate volumes in 1GiB chunks, so setting expected size
|
||||
// equal to requestedSize
|
||||
testDynamicProvisioning(c, claim, requestedSize)
|
||||
} else {
|
||||
// Expected size of the volume is 2GiB, because the other three supported cloud
|
||||
// providers allocate volumes in 1GiB chunks.
|
||||
testDynamicProvisioning(c, claim, "2Gi")
|
||||
}
|
||||
})
|
||||
if framework.ProviderIs("vsphere") {
|
||||
// vsphere provider does not allocate volumes in 1GiB chunks, so setting expected size
|
||||
// equal to requestedSize
|
||||
testDynamicProvisioning(c, claim, requestedSize)
|
||||
} else {
|
||||
// Expected size of the volume is 2GiB, because the other three supported cloud
|
||||
// providers allocate volumes in 1GiB chunks.
|
||||
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")
|
||||
class := newBetaStorageClass("", "beta")
|
||||
_, err := c.StorageV1beta1().StorageClasses().Create(class)
|
||||
defer c.StorageV1beta1().StorageClasses().Delete(class.Name, nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
@ -199,17 +198,13 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() {
|
|||
sc := newStorageClass("", suffix)
|
||||
// Set an unmanaged zone.
|
||||
sc.Parameters = map[string]string{"zone": unmanagedZone}
|
||||
sc, err = c.StorageV1beta1().StorageClasses().Create(sc)
|
||||
defer Expect(c.StorageV1beta1().StorageClasses().Delete(sc.Name, nil)).To(Succeed())
|
||||
sc, err = c.StorageV1().StorageClasses().Create(sc)
|
||||
defer Expect(c.StorageV1().StorageClasses().Delete(sc.Name, nil)).To(Succeed())
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("Creating a claim and expecting it to timeout")
|
||||
pvc := newClaim(ns)
|
||||
// TODO: switch to attribute when GKE is updated
|
||||
pvc.Annotations = map[string]string{
|
||||
v1.BetaStorageClassAnnotation: sc.Name,
|
||||
}
|
||||
//pvc.Spec.StorageClassName = &className
|
||||
pvc.Spec.StorageClassName = &sc.Name
|
||||
pvc, err = c.Core().PersistentVolumeClaims(ns).Create(pvc)
|
||||
defer Expect(c.Core().PersistentVolumeClaims(ns).Delete(pvc.Name, nil)).To(Succeed())
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
@ -261,16 +256,19 @@ var _ = framework.KubeDescribe("Dynamic provisioning", func() {
|
|||
|
||||
By("creating a StorageClass")
|
||||
class := newStorageClass(externalPluginName, "external")
|
||||
_, err = c.StorageV1beta1().StorageClasses().Create(class)
|
||||
defer c.StorageV1beta1().StorageClasses().Delete(class.Name, nil)
|
||||
_, err = c.StorageV1().StorageClasses().Create(class)
|
||||
defer c.StorageV1().StorageClasses().Delete(class.Name, nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("creating a claim with a dynamic provisioning annotation")
|
||||
claim := newClaim(ns)
|
||||
className := class.Name
|
||||
// TODO: switch to attribute when GKE is updated
|
||||
claim.Annotations = map[string]string{v1.BetaStorageClassAnnotation: className}
|
||||
//claim.Spec.StorageClassName = &className
|
||||
// the external provisioner understands Beta only right now, see
|
||||
// https://github.com/kubernetes-incubator/external-storage/issues/37
|
||||
// claim.Spec.StorageClassName = &className
|
||||
claim.Annotations = map[string]string{
|
||||
v1.BetaStorageClassAnnotation: className,
|
||||
}
|
||||
defer func() {
|
||||
c.Core().PersistentVolumeClaims(ns).Delete(claim.Name, nil)
|
||||
}()
|
||||
|
@ -362,11 +360,13 @@ func updateDefaultStorageClass(c clientset.Interface, defaultStr string) {
|
|||
|
||||
if defaultStr == "" {
|
||||
delete(sc.Annotations, storageutil.BetaIsDefaultStorageClassAnnotation)
|
||||
delete(sc.Annotations, storageutil.IsDefaultStorageClassAnnotation)
|
||||
} else {
|
||||
if sc.Annotations == nil {
|
||||
sc.Annotations = make(map[string]string)
|
||||
}
|
||||
sc.Annotations[storageutil.BetaIsDefaultStorageClassAnnotation] = defaultStr
|
||||
sc.Annotations[storageutil.IsDefaultStorageClassAnnotation] = defaultStr
|
||||
}
|
||||
|
||||
sc, err = c.StorageV1().StorageClasses().Update(sc)
|
||||
|
@ -447,18 +447,23 @@ func runInPodWithVolume(c clientset.Interface, ns, claimName, command string) {
|
|||
framework.ExpectNoError(framework.WaitForPodSuccessInNamespaceSlow(c, pod.Name, pod.Namespace))
|
||||
}
|
||||
|
||||
func getDefaultPluginName() string {
|
||||
switch {
|
||||
case framework.ProviderIs("gke"), framework.ProviderIs("gce"):
|
||||
return "kubernetes.io/gce-pd"
|
||||
case framework.ProviderIs("aws"):
|
||||
return "kubernetes.io/aws-ebs"
|
||||
case framework.ProviderIs("openstack"):
|
||||
return "kubernetes.io/cinder"
|
||||
case framework.ProviderIs("vsphere"):
|
||||
return "kubernetes.io/vsphere-volume"
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func newStorageClass(pluginName, suffix string) *storage.StorageClass {
|
||||
if pluginName == "" {
|
||||
switch {
|
||||
case framework.ProviderIs("gke"), framework.ProviderIs("gce"):
|
||||
pluginName = "kubernetes.io/gce-pd"
|
||||
case framework.ProviderIs("aws"):
|
||||
pluginName = "kubernetes.io/aws-ebs"
|
||||
case framework.ProviderIs("openstack"):
|
||||
pluginName = "kubernetes.io/cinder"
|
||||
case framework.ProviderIs("vsphere"):
|
||||
pluginName = "kubernetes.io/vsphere-volume"
|
||||
}
|
||||
pluginName = getDefaultPluginName()
|
||||
}
|
||||
|
||||
return &storage.StorageClass{
|
||||
|
@ -472,6 +477,24 @@ func newStorageClass(pluginName, suffix string) *storage.StorageClass {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: remove when storage.k8s.io/v1beta1 and beta storage class annotations
|
||||
// are removed.
|
||||
func newBetaStorageClass(pluginName, suffix string) *storagebeta.StorageClass {
|
||||
if pluginName == "" {
|
||||
pluginName = getDefaultPluginName()
|
||||
}
|
||||
|
||||
return &storagebeta.StorageClass{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
Kind: "StorageClass",
|
||||
},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "myclass-" + suffix,
|
||||
},
|
||||
Provisioner: pluginName,
|
||||
}
|
||||
}
|
||||
|
||||
func startExternalProvisioner(c clientset.Interface, ns string) *v1.Pod {
|
||||
podClient := c.Core().Pods(ns)
|
||||
|
||||
|
|
Loading…
Reference in New Issue