Skip to content

Commit a55d157

Browse files
committed
fix(metrics): metrics proxy error
1 parent 7bb9336 commit a55d157

3 files changed

Lines changed: 44 additions & 7 deletions

File tree

charts/controller/templates/_helpers.tpl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ kubelet_volume_stats_capacity_bytes: [namespace, persistentvolumeclaim, job]
346346
kubelet_volume_stats_inodes: [namespace, persistentvolumeclaim, job]
347347
kubelet_volume_stats_inodes_free: [namespace, persistentvolumeclaim, job]
348348
kubelet_volume_stats_inodes_used: [namespace, persistentvolumeclaim, job]
349+
istio_requests_total: [source_workload_namespace, reporter, destination_service, response_code, connection_security_policy, source_workload]
350+
istio_request_duration_milliseconds_bucket: [source_workload_namespace, reporter, destination_service, connection_security_policy, source_workload, le]
351+
istio_request_bytes_bucket: [source_workload_namespace, reporter, destination_service, connection_security_policy, source_workload, le]
352+
istio_response_bytes_bucket: [source_workload_namespace, reporter, destination_service, connection_security_policy, source_workload, le]
349353
{{- end }}
350354

351355
{{/* Generate controller config default reserved name patterns */}}

rootfs/api/tests/test_config.py

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def test_config(self, mock_requests):
141141
self.assertEqual(response.status_code, 405, response.data)
142142
return config5
143143

144-
def test_config_merge_false(self, mock_requests):
144+
def test_config_group_merge_false(self, mock_requests):
145145
"""
146146
Test that config can be created with merge='false' parameter
147147
which replaces the entire config instead of merging
@@ -159,16 +159,47 @@ def test_config_merge_false(self, mock_requests):
159159

160160
# replace entire config with merge='false'
161161
value3 = {"name": "NEW_CONFIG", "value": "replacement_value", "group": "global"}
162-
body = {'values': [value3]}
162+
body = {'values': [value1, value2, value3]}
163163
response = self.client.post(f"{url}?merge=false", body)
164164
self.assertEqual(response.status_code, 201, response.data)
165+
response = self.client.get(url)
166+
self.assertEqual(response.status_code, 200, response.data)
167+
self.assertEqual(len(response.data['values']), 3)
165168

166-
# verify only the new config exists
169+
# remove value3
170+
body = {'values': [value1, value2]}
171+
response = self.client.post(f"{url}?merge=false", body)
172+
self.assertEqual(response.status_code, 201, response.data)
167173
response = self.client.get(url)
168174
self.assertEqual(response.status_code, 200, response.data)
169-
self.assertEqual(len(response.data['values']), 1)
170-
self.assertEqual(response.data['values'][0]['name'], "NEW_CONFIG")
171-
self.assertEqual(response.data['values'][0]['value'], "replacement_value")
175+
self.assertEqual(len(response.data['values']), 2)
176+
177+
def test_config_ptype_merge_false(self, mock_requests):
178+
"""
179+
Test that config can be created with merge='false' parameter
180+
which replaces the entire config instead of merging
181+
"""
182+
app_id = self.create_app()
183+
184+
# set initial config values
185+
url = f"/v2/apps/{app_id}/config"
186+
value1 = {"name": "DEBUG", "value": "true", "ptype": "web"}
187+
value2 = {"name": "DATABASE_URL", "value": "postgres://localhost/db", "ptype": "web"}
188+
value3 = {"name": "NEW_CONFIG", "value": "replacement_value", "ptype": "web"}
189+
body = {'values': [value1, value2, value3]}
190+
response = self.client.post(f"{url}?merge=false", body)
191+
self.assertEqual(response.status_code, 201, response.data)
192+
response = self.client.get(url)
193+
self.assertEqual(response.status_code, 200, response.data)
194+
self.assertEqual(len(response.data['values']), 3)
195+
196+
# remove value3
197+
body = {'values': [value1, value2]}
198+
response = self.client.post(f"{url}?merge=false", body)
199+
self.assertEqual(response.status_code, 201, response.data)
200+
response = self.client.get(url)
201+
self.assertEqual(response.status_code, 200, response.data)
202+
self.assertEqual(len(response.data['values']), 2)
172203

173204
def test_config_merge_false_with_empty_values(self, mock_requests):
174205
"""

rootfs/api/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1286,10 +1286,12 @@ async def sample(self, name, labels_str, value):
12861286
fields = set(settings.DRYCC_METRICS_CONFIG[name])
12871287
labels = {}
12881288
for pair in labels_str.strip(" {}").split(','):
1289+
if '=' not in pair:
1290+
continue
12891291
k, v = pair.split('=', 1)
12901292
if k in fields:
12911293
labels[k] = v.strip(' "')
1292-
app_id = labels.get("namespace", None)
1294+
app_id = labels.get("namespace", labels.get(settings.DRYCC_METRICS_CONFIG[name][0]))
12931295
if not app_id:
12941296
return None
12951297
account_id, timeout = self.cache.get(app_id, self.default_cache_value)

0 commit comments

Comments
 (0)