Skip to content

Commit dc08b6b

Browse files
authored
Merge pull request kubernetes#76625 from gnufied/skip-if-no-default-sc
Skip storage tests that depend on default SC - if no default SC is found
2 parents aa11d0e + 6fee8a7 commit dc08b6b

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)