Skip to content

Commit

Permalink
Update storageclass scope (#760)
Browse files Browse the repository at this point in the history
* change storageclass to tenant-scope

* upate tests

* auto updates

* fix integration tests
  • Loading branch information
chenqianfzh authored Sep 24, 2020
1 parent e17b7f5 commit 40fd8c8
Show file tree
Hide file tree
Showing 28 changed files with 3,692 additions and 1,735 deletions.
4,872 changes: 3,298 additions & 1,574 deletions api/openapi-spec/swagger.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pkg/apis/storage/validation/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const (

// ValidateStorageClass validates a StorageClass.
func ValidateStorageClass(storageClass *storage.StorageClass) field.ErrorList {
allErrs := apivalidation.ValidateObjectMeta(&storageClass.ObjectMeta, false, false, apivalidation.ValidateClassName, field.NewPath("metadata"))
allErrs := apivalidation.ValidateObjectMeta(&storageClass.ObjectMeta, true, false, apivalidation.ValidateClassName, field.NewPath("metadata"))
allErrs = append(allErrs, validateProvisioner(storageClass.Provisioner, field.NewPath("provisioner"))...)
allErrs = append(allErrs, validateParameters(storageClass.Parameters, field.NewPath("parameters"))...)
allErrs = append(allErrs, validateReclaimPolicy(storageClass.ReclaimPolicy, field.NewPath("reclaimPolicy"))...)
Expand Down
26 changes: 13 additions & 13 deletions pkg/apis/storage/validation/validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,22 +56,22 @@ func TestValidateStorageClass(t *testing.T) {
successCases := []storage.StorageClass{
{
// empty parameters
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo-provisioner",
Parameters: map[string]string{},
ReclaimPolicy: &deleteReclaimPolicy,
VolumeBindingMode: &immediateMode1,
},
{
// nil parameters
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo-provisioner",
ReclaimPolicy: &deleteReclaimPolicy,
VolumeBindingMode: &immediateMode1,
},
{
// some parameters
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo-provisioner",
Parameters: map[string]string{
"kubernetes.io/foo-parameter": "free/form/string",
Expand All @@ -83,7 +83,7 @@ func TestValidateStorageClass(t *testing.T) {
},
{
// retain reclaimPolicy
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo-provisioner",
ReclaimPolicy: &retainReclaimPolicy,
VolumeBindingMode: &immediateMode1,
Expand All @@ -108,42 +108,42 @@ func TestValidateStorageClass(t *testing.T) {
}

errorCases := map[string]storage.StorageClass{
"tenant is present": {
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: "bar"},
"tenant is missing": {
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
Provisioner: "kubernetes.io/foo-provisioner",
ReclaimPolicy: &deleteReclaimPolicy,
},
"namespace is present": {
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar", Tenant: testTenant},
Provisioner: "kubernetes.io/foo-provisioner",
ReclaimPolicy: &deleteReclaimPolicy,
},
"invalid provisioner": {
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/invalid/provisioner",
ReclaimPolicy: &deleteReclaimPolicy,
},
"invalid empty parameter name": {
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo",
Parameters: map[string]string{
"": "value",
},
ReclaimPolicy: &deleteReclaimPolicy,
},
"provisioner: Required value": {
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "",
ReclaimPolicy: &deleteReclaimPolicy,
},
"too long parameters": {
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo",
Parameters: longParameters,
ReclaimPolicy: &deleteReclaimPolicy,
},
"invalid reclaimpolicy": {
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant},
Provisioner: "kubernetes.io/foo",
ReclaimPolicy: &recycleReclaimPolicy,
},
Expand Down Expand Up @@ -637,7 +637,7 @@ func TestVolumeAttachmentValidationV1(t *testing.T) {

func makeClass(mode *storage.VolumeBindingMode, topologies []api.TopologySelectorTerm) *storage.StorageClass {
return &storage.StorageClass{
ObjectMeta: metav1.ObjectMeta{Name: "foo", ResourceVersion: "foo"},
ObjectMeta: metav1.ObjectMeta{Name: "foo", Tenant: testTenant, ResourceVersion: "foo"},
Provisioner: "kubernetes.io/foo-provisioner",
ReclaimPolicy: &deleteReclaimPolicy,
VolumeBindingMode: mode,
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/describe/versioned/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -3764,7 +3764,7 @@ type StorageClassDescriber struct {
}

func (s *StorageClassDescriber) Describe(tenant, namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
sc, err := s.StorageV1().StorageClasses().Get(name, metav1.GetOptions{})
sc, err := s.StorageV1().StorageClassesWithMultiTenancy(tenant).Get(name, metav1.GetOptions{})
if err != nil {
return "", err
}
Expand Down
4 changes: 3 additions & 1 deletion pkg/kubectl/describe/versioned/describe_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1546,6 +1546,7 @@ func TestDescribeStorageClass(t *testing.T) {
f := fake.NewSimpleClientset(&storagev1.StorageClass{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Tenant: metav1.TenantSystem,
ResourceVersion: "4",
Annotations: map[string]string{
"name": "foo",
Expand Down Expand Up @@ -2521,7 +2522,8 @@ func TestDescribeEvents(t *testing.T) {
"StorageClass": &StorageClassDescriber{
fake.NewSimpleClientset(&storagev1.StorageClass{
ObjectMeta: metav1.ObjectMeta{
Name: "bar",
Name: "bar",
Tenant: metav1.TenantSystem,
},
}, events),
},
Expand Down
Loading

0 comments on commit 40fd8c8

Please sign in to comment.