mirror of https://github.com/k3s-io/k3s
Merge pull request #77342 from liggitt/resource-quota
Add quota admission test for decreasing usage without covering quotak3s-v1.15.3
commit
7a8e11c16d
|
@ -2200,7 +2200,7 @@ func TestAdmitZeroDeltaUsageWithoutCoveringQuota(t *testing.T) {
|
||||||
LimitedResources: []resourcequotaapi.LimitedResource{
|
LimitedResources: []resourcequotaapi.LimitedResource{
|
||||||
{
|
{
|
||||||
Resource: "services",
|
Resource: "services",
|
||||||
MatchContains: []string{"services"},
|
MatchContains: []string{"services.loadbalancers"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -2227,8 +2227,8 @@ func TestAdmitZeroDeltaUsageWithoutCoveringQuota(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestAdmitRejectDeltaUsageWithoutCoveringQuota verifies that resource quota is required for non zero delta requests.
|
// TestAdmitRejectIncreaseUsageWithoutCoveringQuota verifies that resource quota is required for delta requests that increase usage.
|
||||||
func TestAdmitRejectDeltaUsageWithoutCoveringQuota(t *testing.T) {
|
func TestAdmitRejectIncreaseUsageWithoutCoveringQuota(t *testing.T) {
|
||||||
kubeClient := fake.NewSimpleClientset()
|
kubeClient := fake.NewSimpleClientset()
|
||||||
stopCh := make(chan struct{})
|
stopCh := make(chan struct{})
|
||||||
defer close(stopCh)
|
defer close(stopCh)
|
||||||
|
@ -2243,7 +2243,53 @@ func TestAdmitRejectDeltaUsageWithoutCoveringQuota(t *testing.T) {
|
||||||
LimitedResources: []resourcequotaapi.LimitedResource{
|
LimitedResources: []resourcequotaapi.LimitedResource{
|
||||||
{
|
{
|
||||||
Resource: "services",
|
Resource: "services",
|
||||||
MatchContains: []string{"services"},
|
MatchContains: []string{"services.loadbalancers"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
quotaConfiguration := install.NewQuotaConfigurationForAdmission()
|
||||||
|
evaluator := NewQuotaEvaluator(quotaAccessor, quotaConfiguration.IgnoredResources(), generic.NewRegistry(quotaConfiguration.Evaluators()), nil, config, 5, stopCh)
|
||||||
|
|
||||||
|
handler := &QuotaAdmission{
|
||||||
|
Handler: admission.NewHandler(admission.Create, admission.Update),
|
||||||
|
evaluator: evaluator,
|
||||||
|
}
|
||||||
|
|
||||||
|
existingService := &api.Service{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "service", Namespace: "test", ResourceVersion: "1"},
|
||||||
|
Spec: api.ServiceSpec{
|
||||||
|
Type: api.ServiceTypeNodePort,
|
||||||
|
Ports: []api.ServicePort{{Port: 1234}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
newService := &api.Service{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "service", Namespace: "test"},
|
||||||
|
Spec: api.ServiceSpec{Type: api.ServiceTypeLoadBalancer},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := handler.Validate(admission.NewAttributesRecord(newService, existingService, api.Kind("Service").WithVersion("version"), newService.Namespace, newService.Name, corev1.Resource("services").WithVersion("version"), "", admission.Update, false, nil), nil)
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("Expected an error for consuming a limited resource without quota.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestAdmitAllowDecreaseUsageWithoutCoveringQuota verifies that resource quota is not required for delta requests that decrease usage.
|
||||||
|
func TestAdmitAllowDecreaseUsageWithoutCoveringQuota(t *testing.T) {
|
||||||
|
kubeClient := fake.NewSimpleClientset()
|
||||||
|
stopCh := make(chan struct{})
|
||||||
|
defer close(stopCh)
|
||||||
|
|
||||||
|
informerFactory := informers.NewSharedInformerFactory(kubeClient, controller.NoResyncPeriodFunc())
|
||||||
|
quotaAccessor, _ := newQuotaAccessor()
|
||||||
|
quotaAccessor.client = kubeClient
|
||||||
|
quotaAccessor.lister = informerFactory.Core().V1().ResourceQuotas().Lister()
|
||||||
|
|
||||||
|
// disable services unless there is a covering quota.
|
||||||
|
config := &resourcequotaapi.Configuration{
|
||||||
|
LimitedResources: []resourcequotaapi.LimitedResource{
|
||||||
|
{
|
||||||
|
Resource: "services",
|
||||||
|
MatchContains: []string{"services.loadbalancers"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -2268,7 +2314,7 @@ func TestAdmitRejectDeltaUsageWithoutCoveringQuota(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
err := handler.Validate(admission.NewAttributesRecord(newService, existingService, api.Kind("Service").WithVersion("version"), newService.Namespace, newService.Name, corev1.Resource("services").WithVersion("version"), "", admission.Update, false, nil), nil)
|
err := handler.Validate(admission.NewAttributesRecord(newService, existingService, api.Kind("Service").WithVersion("version"), newService.Namespace, newService.Name, corev1.Resource("services").WithVersion("version"), "", admission.Update, false, nil), nil)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
t.Errorf("Expected an error for consuming a limited resource without quota.")
|
t.Errorf("Expected no error for decreasing a limited resource without quota, got %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue