quota: use attributes instead of beta annotations

pull/6/head
Jan Safranek 2017-03-02 10:23:57 +01:00
parent 7dfc71d9eb
commit 916a0a63dd
1 changed files with 17 additions and 23 deletions

View File

@ -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)
@ -259,10 +253,10 @@ func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) {
"pvc-usage-by-class": { "pvc-usage-by-class": {
pvc: validClaimByStorageClass, pvc: validClaimByStorageClass,
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"),
}, },
}, },
} }