Skip to content

Commit 6fee8a7

Browse files
committed
Skip pvc protection tests if no default SC is found
Other tests that check for default storageclass also check for cloudprovider such as gce, aws and openstack and hence are already skipped in bare metal environments. But this particular test keeps failing because no such check exists.
1 parent b32b742 commit 6fee8a7

File tree

6 files changed

+51
-29
lines changed

6 files changed

+51
-29
lines changed

test/e2e/apps/statefulset.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ var _ = SIGDescribe("StatefulSet", func() {
9494
// StorageClass and a dynamic provisioner.
9595
ginkgo.It("should provide basic identity", func() {
9696
ginkgo.By("Creating statefulset " + ssName + " in namespace " + ns)
97+
framework.SkipIfNoDefaultStorageClass(c)
9798
*(ss.Spec.Replicas) = 3
9899
sst := framework.NewStatefulSetTester(c)
99100
sst.PauseNewPods(ss)
@@ -133,6 +134,7 @@ var _ = SIGDescribe("StatefulSet", func() {
133134
// StorageClass and a dynamic provisioner.
134135
ginkgo.It("should adopt matching orphans and release non-matching pods", func() {
135136
ginkgo.By("Creating statefulset " + ssName + " in namespace " + ns)
137+
framework.SkipIfNoDefaultStorageClass(c)
136138
*(ss.Spec.Replicas) = 1
137139
sst := framework.NewStatefulSetTester(c)
138140
sst.PauseNewPods(ss)
@@ -218,6 +220,7 @@ var _ = SIGDescribe("StatefulSet", func() {
218220
// StorageClass and a dynamic provisioner.
219221
ginkgo.It("should not deadlock when a pod's predecessor fails", func() {
220222
ginkgo.By("Creating statefulset " + ssName + " in namespace " + ns)
223+
framework.SkipIfNoDefaultStorageClass(c)
221224
*(ss.Spec.Replicas) = 2
222225
sst := framework.NewStatefulSetTester(c)
223226
sst.PauseNewPods(ss)
@@ -254,6 +257,7 @@ var _ = SIGDescribe("StatefulSet", func() {
254257
// StorageClass and a dynamic provisioner.
255258
ginkgo.It("should perform rolling updates and roll backs of template modifications with PVCs", func() {
256259
ginkgo.By("Creating a new StatefulSet with PVCs")
260+
framework.SkipIfNoDefaultStorageClass(c)
257261
*(ss.Spec.Replicas) = 3
258262
rollbackTest(c, ns, ss)
259263
})

test/e2e/framework/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ go_library(
4141
"//pkg/apis/batch:go_default_library",
4242
"//pkg/apis/core:go_default_library",
4343
"//pkg/apis/extensions:go_default_library",
44+
"//pkg/apis/storage/v1/util:go_default_library",
4445
"//pkg/client/conditions:go_default_library",
4546
"//pkg/controller:go_default_library",
4647
"//pkg/controller/deployment/util:go_default_library",

test/e2e/framework/pv_util.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"k8s.io/apimachinery/pkg/types"
3030
"k8s.io/apimachinery/pkg/util/uuid"
3131
clientset "k8s.io/client-go/kubernetes"
32+
storageutil "k8s.io/kubernetes/pkg/apis/storage/v1/util"
3233
"k8s.io/kubernetes/pkg/volume/util"
3334
imageutils "k8s.io/kubernetes/test/utils/image"
3435
)
@@ -1021,3 +1022,33 @@ func GetBoundPV(client clientset.Interface, pvc *v1.PersistentVolumeClaim) (*v1.
10211022
pv, err := client.CoreV1().PersistentVolumes().Get(claim.Spec.VolumeName, metav1.GetOptions{})
10221023
return pv, err
10231024
}
1025+
1026+
// GetDefaultStorageClassName returns default storageClass or return error
1027+
func GetDefaultStorageClassName(c clientset.Interface) (string, error) {
1028+
list, err := c.StorageV1().StorageClasses().List(metav1.ListOptions{})
1029+
if err != nil {
1030+
return "", fmt.Errorf("Error listing storage classes: %v", err)
1031+
}
1032+
var scName string
1033+
for _, sc := range list.Items {
1034+
if storageutil.IsDefaultAnnotation(sc.ObjectMeta) {
1035+
if len(scName) != 0 {
1036+
return "", fmt.Errorf("Multiple default storage classes found: %q and %q", scName, sc.Name)
1037+
}
1038+
scName = sc.Name
1039+
}
1040+
}
1041+
if len(scName) == 0 {
1042+
return "", fmt.Errorf("No default storage class found")
1043+
}
1044+
Logf("Default storage class: %q", scName)
1045+
return scName, nil
1046+
}
1047+
1048+
// SkipIfNoDefaultStorageClass skips tests if no default SC can be found.
1049+
func SkipIfNoDefaultStorageClass(c clientset.Interface) {
1050+
_, err := GetDefaultStorageClassName(c)
1051+
if err != nil {
1052+
Skipf("error finding default storageClass : %v", err)
1053+
}
1054+
}

test/e2e/storage/pvc_protection.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,11 @@ var _ = utils.SIGDescribe("PVC Protection", func() {
4848

4949
By("Creating a PVC")
5050
suffix := "pvc-protection"
51-
defaultSC := getDefaultStorageClassName(client)
51+
framework.SkipIfNoDefaultStorageClass(client)
5252
testStorageClass := testsuites.StorageClassTest{
5353
ClaimSize: "1Gi",
5454
}
5555
pvc = newClaim(testStorageClass, nameSpace, suffix)
56-
pvc.Spec.StorageClassName = &defaultSC
5756
pvc, err = client.CoreV1().PersistentVolumeClaims(pvc.Namespace).Create(pvc)
5857
framework.ExpectNoError(err, "Error creating PVC")
5958
pvcCreatedAndNotDeleted = true

test/e2e/storage/volume_metrics.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,19 @@ var _ = utils.SIGDescribe("[Serial] Volume metrics", func() {
5252
BeforeEach(func() {
5353
c = f.ClientSet
5454
ns = f.Namespace.Name
55+
var err error
5556
framework.SkipUnlessProviderIs("gce", "gke", "aws")
56-
defaultScName = getDefaultStorageClassName(c)
57-
verifyDefaultStorageClass(c, defaultScName, true)
58-
57+
defaultScName, err = framework.GetDefaultStorageClassName(c)
58+
if err != nil {
59+
framework.Failf(err.Error())
60+
}
5961
test := testsuites.StorageClassTest{
6062
Name: "default",
6163
ClaimSize: "2Gi",
6264
}
6365

6466
pvc = newClaim(test, ns, "default")
65-
var err error
67+
6668
metricsGrabber, err = metrics.NewMetricsGrabber(c, nil, true, false, true, false, false)
6769

6870
if err != nil {

test/e2e/storage/volume_provisioning.go

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,10 @@ var _ = utils.SIGDescribe("Dynamic Provisioning", func() {
775775
// Modifying the default storage class can be disruptive to other tests that depend on it
776776
It("should be disabled by changing the default annotation [Serial] [Disruptive]", func() {
777777
framework.SkipUnlessProviderIs("openstack", "gce", "aws", "gke", "vsphere", "azure")
778-
scName := getDefaultStorageClassName(c)
778+
scName, scErr := framework.GetDefaultStorageClassName(c)
779+
if scErr != nil {
780+
framework.Failf(scErr.Error())
781+
}
779782
test := testsuites.StorageClassTest{
780783
Name: "default",
781784
ClaimSize: "2Gi",
@@ -806,7 +809,10 @@ var _ = utils.SIGDescribe("Dynamic Provisioning", func() {
806809
// Modifying the default storage class can be disruptive to other tests that depend on it
807810
It("should be disabled by removing the default annotation [Serial] [Disruptive]", func() {
808811
framework.SkipUnlessProviderIs("openstack", "gce", "aws", "gke", "vsphere", "azure")
809-
scName := getDefaultStorageClassName(c)
812+
scName, scErr := framework.GetDefaultStorageClassName(c)
813+
if scErr != nil {
814+
framework.Failf(scErr.Error())
815+
}
810816
test := testsuites.StorageClassTest{
811817
Name: "default",
812818
ClaimSize: "2Gi",
@@ -975,27 +981,6 @@ var _ = utils.SIGDescribe("Dynamic Provisioning", func() {
975981
})
976982
})
977983

978-
func getDefaultStorageClassName(c clientset.Interface) string {
979-
list, err := c.StorageV1().StorageClasses().List(metav1.ListOptions{})
980-
if err != nil {
981-
framework.Failf("Error listing storage classes: %v", err)
982-
}
983-
var scName string
984-
for _, sc := range list.Items {
985-
if storageutil.IsDefaultAnnotation(sc.ObjectMeta) {
986-
if len(scName) != 0 {
987-
framework.Failf("Multiple default storage classes found: %q and %q", scName, sc.Name)
988-
}
989-
scName = sc.Name
990-
}
991-
}
992-
if len(scName) == 0 {
993-
framework.Failf("No default storage class found")
994-
}
995-
framework.Logf("Default storage class: %q", scName)
996-
return scName
997-
}
998-
999984
func verifyDefaultStorageClass(c clientset.Interface, scName string, expectedDefault bool) {
1000985
sc, err := c.StorageV1().StorageClasses().Get(scName, metav1.GetOptions{})
1001986
framework.ExpectNoError(err)

0 commit comments

Comments
 (0)