Skip to content

Commit 5bb6c15

Browse files
krithika369Krithika Sundararajan
andauthored
Do not set knative resource percentage annotation if value <= 0 (#145)
Co-authored-by: Krithika Sundararajan <[email protected]>
1 parent 6092a22 commit 5bb6c15

File tree

3 files changed

+106
-60
lines changed

3 files changed

+106
-60
lines changed

api/go.sum

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,6 @@ github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng
754754
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
755755
github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
756756
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
757-
github.com/hashicorp/go-hclog v0.14.1 h1:nQcJDQwIAGnmoUWp8ubocEX40cCml/17YkF6csQLReU=
758757
github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
759758
github.com/hashicorp/go-hclog v0.16.0 h1:uCeOEwSWGMwhJUdpUjk+1cVKIEfGu2/1nFXukimi2MU=
760759
github.com/hashicorp/go-hclog v0.16.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
@@ -1008,7 +1007,6 @@ github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdI
10081007
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
10091008
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
10101009
github.com/mitchellh/ioprogress v0.0.0-20180201004757-6a23b12fa88e/go.mod h1:waEya8ee1Ro/lgxpVhkJI4BVASzkm3UZqkx/cFJiYHM=
1011-
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
10121010
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
10131011
github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs=
10141012
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
@@ -1427,11 +1425,9 @@ go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8
14271425
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
14281426
go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
14291427
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
1430-
go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
14311428
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
14321429
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
14331430
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
1434-
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
14351431
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
14361432
go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
14371433
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
@@ -1440,7 +1436,6 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
14401436
go.uber.org/zap v1.11.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
14411437
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
14421438
go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
1443-
go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
14441439
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
14451440
go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI=
14461441
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
@@ -1519,7 +1514,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
15191514
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
15201515
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
15211516
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
1522-
golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8=
15231517
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
15241518
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
15251519
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -1578,7 +1572,6 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R
15781572
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
15791573
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
15801574
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
1581-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
15821575
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
15831576
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
15841577
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
@@ -1605,7 +1598,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
16051598
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
16061599
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
16071600
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1608-
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
16091601
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
16101602
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
16111603
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1793,7 +1785,6 @@ golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4f
17931785
golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
17941786
golang.org/x/tools v0.0.0-20201204162204-73cf035baebf/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
17951787
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
1796-
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
17971788
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
17981789
golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
17991790
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
@@ -2027,7 +2018,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
20272018
honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
20282019
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
20292020
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
2030-
honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=
20312021
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
20322022
istio.io/api v0.0.0-20191109011807-2629c6ac1513/go.mod h1:+cyHH83OwC0rFpwk8eXctzPNpiCAbB+r6kmMiAxxBHw=
20332023
istio.io/api v0.0.0-20191115173247-e1a1952e5b81 h1:as/kRtJ2kVIvlAxVnFpsBK/axRYRsUdu/MhmnLVHHVM=

api/turing/cluster/knative_service.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,14 @@ func (cfg *KnativeService) buildSvcSpec(
8787

8888
// Build annotations, set target concurrency of 1
8989
annotations := map[string]string{
90-
"autoscaling.knative.dev/minScale": strconv.Itoa(cfg.MinReplicas),
91-
"autoscaling.knative.dev/maxScale": strconv.Itoa(cfg.MaxReplicas),
92-
"autoscaling.knative.dev/target": strconv.Itoa(cfg.TargetConcurrency),
93-
"autoscaling.knative.dev/class": knativeSvcDefaults.AutoscalingClass,
94-
"queue.sidecar.serving.knative.dev/resourcePercentage": strconv.Itoa(cfg.QueueProxyResourcePercentage),
90+
"autoscaling.knative.dev/minScale": strconv.Itoa(cfg.MinReplicas),
91+
"autoscaling.knative.dev/maxScale": strconv.Itoa(cfg.MaxReplicas),
92+
"autoscaling.knative.dev/target": strconv.Itoa(cfg.TargetConcurrency),
93+
"autoscaling.knative.dev/class": knativeSvcDefaults.AutoscalingClass,
94+
}
95+
96+
if cfg.QueueProxyResourcePercentage > 0 {
97+
annotations["queue.sidecar.serving.knative.dev/resourcePercentage"] = strconv.Itoa(cfg.QueueProxyResourcePercentage)
9598
}
9699

97100
// Revision name

api/turing/cluster/knative_service_test.go

Lines changed: 98 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import (
1515
knservingv1 "knative.dev/serving/pkg/apis/serving/v1"
1616
)
1717

18-
// Define a valid Service configuration for tests
19-
var testValidKnSvc = KnativeService{
20-
BaseService: &BaseService{
18+
func TestBuildKnativeServiceConfig(t *testing.T) {
19+
// Test configuration
20+
baseSvc := &BaseService{
2121
Name: "test-svc",
2222
Namespace: "test-namespace",
2323
Image: "asia.gcr.io/gcp-project-id/turing-router:latest",
@@ -84,25 +84,10 @@ var testValidKnSvc = KnativeService{
8484
MountPath: "/var/secret",
8585
},
8686
},
87-
},
88-
ContainerPort: 8080,
89-
MinReplicas: 1,
90-
MaxReplicas: 2,
91-
IsClusterLocal: true,
92-
TargetConcurrency: 1,
93-
QueueProxyResourcePercentage: 30,
94-
}
87+
}
9588

96-
func TestBuildKnativeServiceConfig(t *testing.T) {
97-
// Build expected configuration
89+
// Expected specs
9890
var timeout int64 = 30
99-
annotations := map[string]string{
100-
"autoscaling.knative.dev/minScale": "1",
101-
"autoscaling.knative.dev/maxScale": "2",
102-
"autoscaling.knative.dev/target": "1",
103-
"autoscaling.knative.dev/class": "kpa.autoscaling.knative.dev",
104-
"queue.sidecar.serving.knative.dev/resourcePercentage": "30",
105-
}
10691
resources := corev1.ResourceRequirements{
10792
Limits: map[corev1.ResourceName]resource.Quantity{
10893
corev1.ResourceCPU: resource.MustParse("800m"),
@@ -161,42 +146,110 @@ func TestBuildKnativeServiceConfig(t *testing.T) {
161146
TimeoutSeconds: 5,
162147
FailureThreshold: 5,
163148
},
164-
VolumeMounts: testValidKnSvc.VolumeMounts,
149+
VolumeMounts: baseSvc.VolumeMounts,
165150
Env: envs,
166151
},
167152
},
168-
Volumes: testValidKnSvc.Volumes,
153+
Volumes: baseSvc.Volumes,
169154
}
170-
expected := &knservingv1.Service{
171-
ObjectMeta: metav1.ObjectMeta{
172-
Name: "test-svc",
173-
Namespace: "test-namespace",
174-
Labels: map[string]string{
175-
"labelKey": "labelVal",
176-
"serving.knative.dev/visibility": "cluster-local",
155+
156+
tests := map[string]struct {
157+
serviceCfg KnativeService
158+
expectedSpec knservingv1.Service
159+
}{
160+
"basic": {
161+
serviceCfg: KnativeService{
162+
BaseService: baseSvc,
163+
ContainerPort: 8080,
164+
MinReplicas: 1,
165+
MaxReplicas: 2,
166+
IsClusterLocal: true,
167+
TargetConcurrency: 1,
168+
QueueProxyResourcePercentage: 30,
177169
},
178-
},
179-
Spec: knservingv1.ServiceSpec{
180-
ConfigurationSpec: knservingv1.ConfigurationSpec{
181-
Template: knservingv1.RevisionTemplateSpec{
182-
ObjectMeta: metav1.ObjectMeta{
183-
Name: "test-svc-0",
184-
Labels: map[string]string{
185-
"labelKey": "labelVal",
170+
expectedSpec: knservingv1.Service{
171+
ObjectMeta: metav1.ObjectMeta{
172+
Name: "test-svc",
173+
Namespace: "test-namespace",
174+
Labels: map[string]string{
175+
"labelKey": "labelVal",
176+
"serving.knative.dev/visibility": "cluster-local",
177+
},
178+
},
179+
Spec: knservingv1.ServiceSpec{
180+
ConfigurationSpec: knservingv1.ConfigurationSpec{
181+
Template: knservingv1.RevisionTemplateSpec{
182+
ObjectMeta: metav1.ObjectMeta{
183+
Name: "test-svc-0",
184+
Labels: map[string]string{
185+
"labelKey": "labelVal",
186+
},
187+
Annotations: map[string]string{
188+
"autoscaling.knative.dev/minScale": "1",
189+
"autoscaling.knative.dev/maxScale": "2",
190+
"autoscaling.knative.dev/target": "1",
191+
"autoscaling.knative.dev/class": "kpa.autoscaling.knative.dev",
192+
"queue.sidecar.serving.knative.dev/resourcePercentage": "30",
193+
},
194+
},
195+
Spec: knservingv1.RevisionSpec{
196+
PodSpec: podSpec,
197+
TimeoutSeconds: &timeout,
198+
},
186199
},
187-
Annotations: annotations,
188200
},
189-
Spec: knservingv1.RevisionSpec{
190-
PodSpec: podSpec,
191-
TimeoutSeconds: &timeout,
201+
},
202+
},
203+
},
204+
"annotations": {
205+
serviceCfg: KnativeService{
206+
BaseService: baseSvc,
207+
ContainerPort: 8080,
208+
MinReplicas: 5,
209+
MaxReplicas: 6,
210+
IsClusterLocal: false,
211+
TargetConcurrency: 4,
212+
},
213+
expectedSpec: knservingv1.Service{
214+
ObjectMeta: metav1.ObjectMeta{
215+
Name: "test-svc",
216+
Namespace: "test-namespace",
217+
Labels: map[string]string{
218+
"labelKey": "labelVal",
219+
},
220+
},
221+
Spec: knservingv1.ServiceSpec{
222+
ConfigurationSpec: knservingv1.ConfigurationSpec{
223+
Template: knservingv1.RevisionTemplateSpec{
224+
ObjectMeta: metav1.ObjectMeta{
225+
Name: "test-svc-0",
226+
Labels: map[string]string{
227+
"labelKey": "labelVal",
228+
},
229+
Annotations: map[string]string{
230+
"autoscaling.knative.dev/minScale": "5",
231+
"autoscaling.knative.dev/maxScale": "6",
232+
"autoscaling.knative.dev/target": "4",
233+
"autoscaling.knative.dev/class": "kpa.autoscaling.knative.dev",
234+
},
235+
},
236+
Spec: knservingv1.RevisionSpec{
237+
PodSpec: podSpec,
238+
TimeoutSeconds: &timeout,
239+
},
240+
},
192241
},
193242
},
194243
},
195244
},
196245
}
197246

198-
// Run test and validate
199-
svc := testValidKnSvc.BuildKnativeServiceConfig()
200-
err := tu.CompareObjects(svc, expected)
201-
assert.NoError(t, err)
247+
for name, data := range tests {
248+
t.Run(name, func(t *testing.T) {
249+
// Run test and validate
250+
svc := data.serviceCfg.BuildKnativeServiceConfig()
251+
err := tu.CompareObjects(*svc, data.expectedSpec)
252+
assert.NoError(t, err)
253+
})
254+
}
202255
}

0 commit comments

Comments
 (0)