Promote VolumeAttributesClass to beta
This commit is contained in:
@@ -54,7 +54,7 @@ import (
|
||||
v1 "k8s.io/api/core/v1"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
storagev1 "k8s.io/api/storage/v1"
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
@@ -215,8 +215,8 @@ func (h *hostpathCSIDriver) GetSnapshotClass(ctx context.Context, config *storag
|
||||
return utils.GenerateSnapshotClassSpec(snapshotter, parameters, ns)
|
||||
}
|
||||
|
||||
func (h *hostpathCSIDriver) GetVolumeAttributesClass(_ context.Context, config *storageframework.PerTestConfig) *storagev1alpha1.VolumeAttributesClass {
|
||||
return storageframework.CopyVolumeAttributesClass(&storagev1alpha1.VolumeAttributesClass{
|
||||
func (h *hostpathCSIDriver) GetVolumeAttributesClass(_ context.Context, config *storageframework.PerTestConfig) *storagev1beta1.VolumeAttributesClass {
|
||||
return storageframework.CopyVolumeAttributesClass(&storagev1beta1.VolumeAttributesClass{
|
||||
DriverName: config.GetUniqueDriverName(),
|
||||
Parameters: map[string]string{
|
||||
hostpathCSIDriverMutableParameterName: hostpathCSIDriverMutableParameterValue,
|
||||
|
||||
12
test/e2e/storage/external/external.go
vendored
12
test/e2e/storage/external/external.go
vendored
@@ -25,7 +25,7 @@ import (
|
||||
"time"
|
||||
|
||||
storagev1 "k8s.io/api/storage/v1"
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
@@ -430,23 +430,23 @@ func (d *driverDefinition) GetSnapshotClass(ctx context.Context, e2econfig *stor
|
||||
return utils.GenerateSnapshotClassSpec(snapshotter, parameters, ns)
|
||||
}
|
||||
|
||||
func (d *driverDefinition) GetVolumeAttributesClass(ctx context.Context, e2econfig *storageframework.PerTestConfig) *storagev1alpha1.VolumeAttributesClass {
|
||||
func (d *driverDefinition) GetVolumeAttributesClass(ctx context.Context, e2econfig *storageframework.PerTestConfig) *storagev1beta1.VolumeAttributesClass {
|
||||
if !d.VolumeAttributesClass.FromName && d.VolumeAttributesClass.FromFile == "" && d.VolumeAttributesClass.FromExistingClassName == "" {
|
||||
e2eskipper.Skipf("Driver %q has no configured VolumeAttributesClass - skipping", d.DriverInfo.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
vac *storagev1alpha1.VolumeAttributesClass
|
||||
vac *storagev1beta1.VolumeAttributesClass
|
||||
err error
|
||||
)
|
||||
|
||||
f := e2econfig.Framework
|
||||
switch {
|
||||
case d.VolumeAttributesClass.FromName:
|
||||
vac = &storagev1alpha1.VolumeAttributesClass{DriverName: d.DriverInfo.Name}
|
||||
vac = &storagev1beta1.VolumeAttributesClass{DriverName: d.DriverInfo.Name}
|
||||
case d.VolumeAttributesClass.FromExistingClassName != "":
|
||||
vac, err = f.ClientSet.StorageV1alpha1().VolumeAttributesClasses().Get(ctx, d.VolumeAttributesClass.FromExistingClassName, metav1.GetOptions{})
|
||||
vac, err = f.ClientSet.StorageV1beta1().VolumeAttributesClasses().Get(ctx, d.VolumeAttributesClass.FromExistingClassName, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err, "getting VolumeAttributesClass %s", d.VolumeAttributesClass.FromExistingClassName)
|
||||
case d.VolumeAttributesClass.FromFile != "":
|
||||
var ok bool
|
||||
@@ -456,7 +456,7 @@ func (d *driverDefinition) GetVolumeAttributesClass(ctx context.Context, e2econf
|
||||
err = utils.PatchItems(f, f.Namespace, items...)
|
||||
framework.ExpectNoError(err, "patch VolumeAttributesClass from %s", d.VolumeAttributesClass.FromFile)
|
||||
|
||||
vac, ok = items[0].(*storagev1alpha1.VolumeAttributesClass)
|
||||
vac, ok = items[0].(*storagev1beta1.VolumeAttributesClass)
|
||||
if !ok {
|
||||
framework.Failf("cast VolumeAttributesClass from %s", d.VolumeAttributesClass.FromFile)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
"fmt"
|
||||
|
||||
storagev1 "k8s.io/api/storage/v1"
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apiserver/pkg/storage/names"
|
||||
"k8s.io/kubernetes/pkg/volume/util"
|
||||
@@ -97,7 +97,7 @@ func GetStorageClass(
|
||||
// CopyVolumeAttributesClass constructs a new VolumeAttributesClass instance
|
||||
// with a unique name that is based on namespace + suffix
|
||||
// using the VolumeAttributesClass passed in as a parameter
|
||||
func CopyVolumeAttributesClass(vac *storagev1alpha1.VolumeAttributesClass, ns string, suffix string) *storagev1alpha1.VolumeAttributesClass {
|
||||
func CopyVolumeAttributesClass(vac *storagev1beta1.VolumeAttributesClass, ns string, suffix string) *storagev1beta1.VolumeAttributesClass {
|
||||
copy := vac.DeepCopy()
|
||||
copy.ObjectMeta.Name = names.SimpleNameGenerator.GenerateName(ns + "-" + suffix)
|
||||
copy.ResourceVersion = ""
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
storagev1 "k8s.io/api/storage/v1"
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
@@ -137,7 +137,7 @@ type VolumeAttributesClassTestDriver interface {
|
||||
TestDriver
|
||||
// GetVolumeAttributesClass returns a VolumeAttributesClass to create/modify PVCs
|
||||
// It will return nil if the TestDriver does not support VACs
|
||||
GetVolumeAttributesClass(ctx context.Context, config *PerTestConfig) *storagev1alpha1.VolumeAttributesClass
|
||||
GetVolumeAttributesClass(ctx context.Context, config *PerTestConfig) *storagev1beta1.VolumeAttributesClass
|
||||
}
|
||||
|
||||
// CustomTimeoutsTestDriver represents an interface fo a TestDriver that supports custom timeouts.
|
||||
|
||||
@@ -24,7 +24,7 @@ import (
|
||||
"github.com/onsi/ginkgo/v2"
|
||||
"github.com/onsi/gomega"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/errors"
|
||||
@@ -98,7 +98,7 @@ func (v *volumeModifyTestSuite) DefineTests(driver storageframework.TestDriver,
|
||||
config *storageframework.PerTestConfig
|
||||
|
||||
resource *storageframework.VolumeResource
|
||||
vac *storagev1alpha1.VolumeAttributesClass
|
||||
vac *storagev1beta1.VolumeAttributesClass
|
||||
}
|
||||
var l local
|
||||
|
||||
@@ -119,7 +119,7 @@ func (v *volumeModifyTestSuite) DefineTests(driver storageframework.TestDriver,
|
||||
}
|
||||
|
||||
ginkgo.By("Creating VolumeAttributesClass")
|
||||
_, err := f.ClientSet.StorageV1alpha1().VolumeAttributesClasses().Create(ctx, l.vac, metav1.CreateOptions{})
|
||||
_, err := f.ClientSet.StorageV1beta1().VolumeAttributesClasses().Create(ctx, l.vac, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err, "While creating VolumeAttributesClass")
|
||||
|
||||
ginkgo.By("Creating volume")
|
||||
@@ -206,7 +206,7 @@ func (v *volumeModifyTestSuite) DefineTests(driver storageframework.TestDriver,
|
||||
vacDriver, _ := driver.(storageframework.VolumeAttributesClassTestDriver)
|
||||
newVAC := vacDriver.GetVolumeAttributesClass(ctx, l.config)
|
||||
gomega.Expect(newVAC).NotTo(gomega.BeNil())
|
||||
_, err := f.ClientSet.StorageV1alpha1().VolumeAttributesClasses().Create(ctx, newVAC, metav1.CreateOptions{})
|
||||
_, err := f.ClientSet.StorageV1beta1().VolumeAttributesClasses().Create(ctx, newVAC, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err, "While creating new VolumeAttributesClass")
|
||||
ginkgo.DeferCleanup(CleanupVAC, newVAC, f.ClientSet, vacCleanupWaitPeriod)
|
||||
|
||||
@@ -266,9 +266,9 @@ func WaitForVolumeModification(ctx context.Context, pvc *v1.PersistentVolumeClai
|
||||
}, timeout, modifyPollInterval).Should(gomega.Succeed())
|
||||
}
|
||||
|
||||
func CleanupVAC(ctx context.Context, vac *storagev1alpha1.VolumeAttributesClass, c clientset.Interface, timeout time.Duration) {
|
||||
func CleanupVAC(ctx context.Context, vac *storagev1beta1.VolumeAttributesClass, c clientset.Interface, timeout time.Duration) {
|
||||
gomega.Eventually(ctx, func() error {
|
||||
return c.StorageV1alpha1().VolumeAttributesClasses().Delete(ctx, vac.Name, metav1.DeleteOptions{})
|
||||
return c.StorageV1beta1().VolumeAttributesClasses().Delete(ctx, vac.Name, metav1.DeleteOptions{})
|
||||
}, timeout, modifyPollInterval).Should(gomega.BeNil())
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ import (
|
||||
v1 "k8s.io/api/core/v1"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
storagev1 "k8s.io/api/storage/v1"
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
@@ -316,7 +316,7 @@ func patchItemRecursively(f *framework.Framework, driverNamespace *v1.Namespace,
|
||||
PatchName(f, &item.Name)
|
||||
case *storagev1.StorageClass:
|
||||
PatchName(f, &item.Name)
|
||||
case *storagev1alpha1.VolumeAttributesClass:
|
||||
case *storagev1beta1.VolumeAttributesClass:
|
||||
PatchName(f, &item.Name)
|
||||
case *storagev1.CSIDriver:
|
||||
PatchName(f, &item.Name)
|
||||
@@ -625,16 +625,16 @@ func (*storageClassFactory) Create(ctx context.Context, f *framework.Framework,
|
||||
type volumeAttributesClassFactory struct{}
|
||||
|
||||
func (f *volumeAttributesClassFactory) New() runtime.Object {
|
||||
return &storagev1alpha1.VolumeAttributesClass{}
|
||||
return &storagev1beta1.VolumeAttributesClass{}
|
||||
}
|
||||
|
||||
func (*volumeAttributesClassFactory) Create(ctx context.Context, f *framework.Framework, ns *v1.Namespace, i interface{}) (func(ctx context.Context) error, error) {
|
||||
item, ok := i.(*storagev1alpha1.VolumeAttributesClass)
|
||||
item, ok := i.(*storagev1beta1.VolumeAttributesClass)
|
||||
if !ok {
|
||||
return nil, errorItemNotSupported
|
||||
}
|
||||
|
||||
client := f.ClientSet.StorageV1alpha1().VolumeAttributesClasses()
|
||||
client := f.ClientSet.StorageV1beta1().VolumeAttributesClasses()
|
||||
if _, err := client.Create(ctx, item, metav1.CreateOptions{}); err != nil {
|
||||
return nil, fmt.Errorf("create VolumeAttributesClass: %w", err)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||
storagev1beta1 "k8s.io/api/storage/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
types "k8s.io/apimachinery/pkg/types"
|
||||
@@ -51,10 +51,10 @@ var _ = utils.SIGDescribe("VolumeAttributesClass", feature.VolumeAttributesClass
|
||||
*/
|
||||
framework.It("should run through the lifecycle of a VolumeAttributesClass", func(ctx context.Context) {
|
||||
|
||||
vacClient := f.ClientSet.StorageV1alpha1().VolumeAttributesClasses()
|
||||
var initialVAC, replacementVAC *storagev1alpha1.VolumeAttributesClass
|
||||
vacClient := f.ClientSet.StorageV1beta1().VolumeAttributesClasses()
|
||||
var initialVAC, replacementVAC *storagev1beta1.VolumeAttributesClass
|
||||
|
||||
initialVAC = &storagev1alpha1.VolumeAttributesClass{
|
||||
initialVAC = &storagev1beta1.VolumeAttributesClass{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
Kind: "VolumeAttributesClass",
|
||||
},
|
||||
@@ -89,7 +89,7 @@ var _ = utils.SIGDescribe("VolumeAttributesClass", feature.VolumeAttributesClass
|
||||
|
||||
vacSelector := labels.Set{patchedVolumeAttributesClass.Name: "patched"}.AsSelector().String()
|
||||
type state struct {
|
||||
VolumeAttributesClasses []storagev1alpha1.VolumeAttributesClass
|
||||
VolumeAttributesClasses []storagev1beta1.VolumeAttributesClass
|
||||
}
|
||||
|
||||
err = framework.Gomega().Eventually(ctx, framework.HandleRetry(func(ctx context.Context) (*state, error) {
|
||||
@@ -112,7 +112,7 @@ var _ = utils.SIGDescribe("VolumeAttributesClass", feature.VolumeAttributesClass
|
||||
|
||||
ginkgo.By("Create a replacement VolumeAttributesClass")
|
||||
|
||||
replacementVAC = &storagev1alpha1.VolumeAttributesClass{
|
||||
replacementVAC = &storagev1beta1.VolumeAttributesClass{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
Kind: "VolumeAttributesClass",
|
||||
},
|
||||
@@ -129,7 +129,7 @@ var _ = utils.SIGDescribe("VolumeAttributesClass", feature.VolumeAttributesClass
|
||||
framework.ExpectNoError(err, "failed to create replacement VolumeAttributesClass")
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Updating VolumeAttributesClass %q", replacementVolumeAttributesClass.Name))
|
||||
var updatedVolumeAttributesClass *storagev1alpha1.VolumeAttributesClass
|
||||
var updatedVolumeAttributesClass *storagev1beta1.VolumeAttributesClass
|
||||
|
||||
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
|
||||
vac, err := vacClient.Get(ctx, replacementVolumeAttributesClass.Name, metav1.GetOptions{})
|
||||
|
||||
@@ -271,6 +271,14 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes
|
||||
gvr("storage.k8s.io", "v1alpha1", "volumeattributesclasses"): {
|
||||
Stub: `{"metadata": {"name": "vac1"}, "driverName": "example.com/driver", "parameters": {"foo": "bar"}}`,
|
||||
ExpectedEtcdPath: "/registry/volumeattributesclasses/vac1",
|
||||
ExpectedGVK: gvkP("storage.k8s.io", "v1beta1", "VolumeAttributesClass"),
|
||||
},
|
||||
// --
|
||||
|
||||
// k8s.io/kubernetes/pkg/apis/storage/v1beta1
|
||||
gvr("storage.k8s.io", "v1beta1", "volumeattributesclasses"): {
|
||||
Stub: `{"metadata": {"name": "vac2"}, "driverName": "example.com/driver", "parameters": {"foo": "bar"}}`,
|
||||
ExpectedEtcdPath: "/registry/volumeattributesclasses/vac2",
|
||||
},
|
||||
// --
|
||||
|
||||
|
||||
Reference in New Issue
Block a user