mirror of https://github.com/k3s-io/k3s
quota: use attributes instead of beta annotations
parent
7dfc71d9eb
commit
916a0a63dd
|
@ -22,7 +22,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
||||||
"k8s.io/kubernetes/pkg/quota"
|
"k8s.io/kubernetes/pkg/quota"
|
||||||
)
|
)
|
||||||
|
@ -35,6 +34,9 @@ func testVolumeClaim(name string, namespace string, spec api.PersistentVolumeCla
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
|
classGold := "gold"
|
||||||
|
classBronze := "bronze"
|
||||||
|
|
||||||
validClaim := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
validClaim := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
Selector: &metav1.LabelSelector{
|
||||||
MatchExpressions: []metav1.LabelSelectorRequirement{
|
MatchExpressions: []metav1.LabelSelectorRequirement{
|
||||||
|
@ -72,10 +74,8 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
api.ResourceName(api.ResourceStorage): resource.MustParse("10Gi"),
|
api.ResourceName(api.ResourceStorage): resource.MustParse("10Gi"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
StorageClassName: &classGold,
|
||||||
})
|
})
|
||||||
validClaimGoldStorageClass.Annotations = map[string]string{
|
|
||||||
v1.BetaStorageClassAnnotation: "gold",
|
|
||||||
}
|
|
||||||
|
|
||||||
validClaimBronzeStorageClass := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
validClaimBronzeStorageClass := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
Selector: &metav1.LabelSelector{
|
||||||
|
@ -95,10 +95,8 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
api.ResourceName(api.ResourceStorage): resource.MustParse("10Gi"),
|
api.ResourceName(api.ResourceStorage): resource.MustParse("10Gi"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
StorageClassName: &classBronze,
|
||||||
})
|
})
|
||||||
validClaimBronzeStorageClass.Annotations = map[string]string{
|
|
||||||
v1.BetaStorageClassAnnotation: "bronze",
|
|
||||||
}
|
|
||||||
|
|
||||||
missingStorage := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
missingStorage := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
Selector: &metav1.LabelSelector{
|
||||||
|
@ -134,10 +132,8 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
Resources: api.ResourceRequirements{
|
Resources: api.ResourceRequirements{
|
||||||
Requests: api.ResourceList{},
|
Requests: api.ResourceList{},
|
||||||
},
|
},
|
||||||
|
StorageClassName: &classGold,
|
||||||
})
|
})
|
||||||
missingGoldStorage.Annotations = map[string]string{
|
|
||||||
v1.BetaStorageClassAnnotation: "gold",
|
|
||||||
}
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
pvc *api.PersistentVolumeClaim
|
pvc *api.PersistentVolumeClaim
|
||||||
|
@ -151,7 +147,7 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
},
|
},
|
||||||
"missing gold storage": {
|
"missing gold storage": {
|
||||||
pvc: missingGoldStorage,
|
pvc: missingGoldStorage,
|
||||||
required: []api.ResourceName{ResourceByStorageClass("gold", api.ResourceRequestsStorage)},
|
required: []api.ResourceName{ResourceByStorageClass(classGold, api.ResourceRequestsStorage)},
|
||||||
err: `must specify gold.storageclass.storage.k8s.io/requests.storage`,
|
err: `must specify gold.storageclass.storage.k8s.io/requests.storage`,
|
||||||
},
|
},
|
||||||
"valid-claim-quota-storage": {
|
"valid-claim-quota-storage": {
|
||||||
|
@ -171,8 +167,8 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
required: []api.ResourceName{
|
required: []api.ResourceName{
|
||||||
api.ResourceRequestsStorage,
|
api.ResourceRequestsStorage,
|
||||||
api.ResourcePersistentVolumeClaims,
|
api.ResourcePersistentVolumeClaims,
|
||||||
ResourceByStorageClass("gold", api.ResourceRequestsStorage),
|
ResourceByStorageClass(classGold, api.ResourceRequestsStorage),
|
||||||
ResourceByStorageClass("gold", api.ResourcePersistentVolumeClaims),
|
ResourceByStorageClass(classGold, api.ResourcePersistentVolumeClaims),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"valid-claim-bronze-with-quota-gold": {
|
"valid-claim-bronze-with-quota-gold": {
|
||||||
|
@ -180,8 +176,8 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
required: []api.ResourceName{
|
required: []api.ResourceName{
|
||||||
api.ResourceRequestsStorage,
|
api.ResourceRequestsStorage,
|
||||||
api.ResourcePersistentVolumeClaims,
|
api.ResourcePersistentVolumeClaims,
|
||||||
ResourceByStorageClass("gold", api.ResourceRequestsStorage),
|
ResourceByStorageClass(classGold, api.ResourceRequestsStorage),
|
||||||
ResourceByStorageClass("gold", api.ResourcePersistentVolumeClaims),
|
ResourceByStorageClass(classGold, api.ResourcePersistentVolumeClaims),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -200,6 +196,7 @@ func TestPersistentVolumeClaimsConstraintsFunc(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) {
|
func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) {
|
||||||
|
classGold := "gold"
|
||||||
validClaim := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
validClaim := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
Selector: &metav1.LabelSelector{
|
||||||
MatchExpressions: []metav1.LabelSelectorRequirement{
|
MatchExpressions: []metav1.LabelSelectorRequirement{
|
||||||
|
@ -237,11 +234,8 @@ func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) {
|
||||||
api.ResourceName(api.ResourceStorage): resource.MustParse("10Gi"),
|
api.ResourceName(api.ResourceStorage): resource.MustParse("10Gi"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
StorageClassName: &classGold,
|
||||||
})
|
})
|
||||||
storageClassName := "gold"
|
|
||||||
validClaimByStorageClass.Annotations = map[string]string{
|
|
||||||
v1.BetaStorageClassAnnotation: storageClassName,
|
|
||||||
}
|
|
||||||
|
|
||||||
kubeClient := fake.NewSimpleClientset()
|
kubeClient := fake.NewSimpleClientset()
|
||||||
evaluator := NewPersistentVolumeClaimEvaluator(kubeClient, nil)
|
evaluator := NewPersistentVolumeClaimEvaluator(kubeClient, nil)
|
||||||
|
@ -261,8 +255,8 @@ func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) {
|
||||||
usage: api.ResourceList{
|
usage: api.ResourceList{
|
||||||
api.ResourceRequestsStorage: resource.MustParse("10Gi"),
|
api.ResourceRequestsStorage: resource.MustParse("10Gi"),
|
||||||
api.ResourcePersistentVolumeClaims: resource.MustParse("1"),
|
api.ResourcePersistentVolumeClaims: resource.MustParse("1"),
|
||||||
ResourceByStorageClass(storageClassName, api.ResourceRequestsStorage): resource.MustParse("10Gi"),
|
ResourceByStorageClass(classGold, api.ResourceRequestsStorage): resource.MustParse("10Gi"),
|
||||||
ResourceByStorageClass(storageClassName, api.ResourcePersistentVolumeClaims): resource.MustParse("1"),
|
ResourceByStorageClass(classGold, api.ResourcePersistentVolumeClaims): resource.MustParse("1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue