Lookup path added to values/overrides
For debug purposes it is useful to know from which level value or override came. Fetching lookup path debug info can be enabled by adding parameter show_lookup to the get request. Change-Id: Ic9e68930a206d36c00212289d6842c2c6eaea09c
This commit is contained in:
parent
a175c31291
commit
9656a2d718
|
@ -70,16 +70,35 @@ class ResourceValues(flask_restful.Resource):
|
|||
environment, levels))
|
||||
|
||||
if 'effective' in flask.request.args:
|
||||
show_lookup = 'show_lookup' in flask.request.args
|
||||
resource_values = db.ResourceValues.query.filter_by(
|
||||
resource_definition=res_def,
|
||||
environment=environment,
|
||||
).all()
|
||||
result = {}
|
||||
lookup_path = ''
|
||||
for level_value in itertools.chain([None], level_values):
|
||||
if level_value is not None:
|
||||
name = level_value.level.name
|
||||
value = level_value.value
|
||||
lookup_path += name + '/' + value + '/'
|
||||
else:
|
||||
lookup_path += '/'
|
||||
|
||||
for resource_value in resource_values:
|
||||
if resource_value.level_value == level_value:
|
||||
result.update(resource_value.values)
|
||||
result.update(resource_value.overrides)
|
||||
if show_lookup:
|
||||
values = {}
|
||||
for k, v in resource_value.values.items():
|
||||
values[k] = (v, lookup_path)
|
||||
overrides = {}
|
||||
for k, v in resource_value.overrides.items():
|
||||
overrides[k] = (v, lookup_path)
|
||||
else:
|
||||
values = resource_value.values
|
||||
overrides = resource_value.overrides
|
||||
result.update(values)
|
||||
result.update(overrides)
|
||||
break
|
||||
return result
|
||||
else:
|
||||
|
|
|
@ -246,3 +246,46 @@ class TestResourceOverrides(BaseTest):
|
|||
data = [['key_0', 'val_0']]
|
||||
res = self.client.put(obj_keys_url, data=data)
|
||||
self.assertEqual(409, res.status_code)
|
||||
|
||||
def test_get_resource_overrides_effective_with_lookup(self):
|
||||
self._fixture()
|
||||
res = self.client.put('/environments/9/resources/5/values',
|
||||
data={'key0': 'root_value_0',
|
||||
'key1': 'root_value_1',
|
||||
'key2': 'root_value_2',
|
||||
'key3': 'root_value_3'})
|
||||
self.assertEqual(res.status_code, 204)
|
||||
res = self.client.put('/environments/9/lvl1/1/resources/5/values',
|
||||
data={'key0': 'lvl1_value_0'})
|
||||
self.assertEqual(res.status_code, 204)
|
||||
|
||||
# Override key0 on level1
|
||||
res = self.client.put('/environments/9/lvl1/1/resources/5/overrides',
|
||||
data={'key0': 'lvl1_overrides_0'})
|
||||
self.assertEqual(res.status_code, 204)
|
||||
|
||||
# Override key1 on level1/level2
|
||||
res = self.client.put(
|
||||
'/environments/9/lvl1/1/lvl2/2/resources/5/values',
|
||||
data={'key1': 'lvl2_value_1', 'key2': 'lvl2_value_2'}
|
||||
)
|
||||
self.assertEqual(res.status_code, 204)
|
||||
res = self.client.put(
|
||||
'/environments/9/lvl1/1/lvl2/2/resources/5/overrides',
|
||||
data={'key1': 'lvl2_overrides_1'}
|
||||
)
|
||||
self.assertEqual(res.status_code, 204)
|
||||
|
||||
# Checking lookup info
|
||||
res = self.client.get(
|
||||
'/environments/9/lvl1/1/lvl2/2/resources/5/values?'
|
||||
'effective&show_lookup',
|
||||
)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
expected = {
|
||||
'key0': ['lvl1_overrides_0', '/lvl1/1/'],
|
||||
'key1': ['lvl2_overrides_1', '/lvl1/1/lvl2/2/'],
|
||||
'key2': ['lvl2_value_2', '/lvl1/1/lvl2/2/'],
|
||||
'key3': ['root_value_3', '/']
|
||||
}
|
||||
self.assertEqual(expected, res.json)
|
||||
|
|
|
@ -258,3 +258,38 @@ class TestResourceValues(BaseTest):
|
|||
data = [['key_0', 'val_0']]
|
||||
res = self.client.put(obj_keys_url, data=data)
|
||||
self.assertEqual(409, res.status_code)
|
||||
|
||||
def test_get_resource_values_effective_with_lookup(self):
|
||||
self._fixture()
|
||||
res = self.client.put('/environments/9/resources/5/values',
|
||||
data={'key0': 'root_value_0',
|
||||
'key1': 'root_value_1',
|
||||
'key2': 'root_value_2',
|
||||
'key3': 'root_value_3'})
|
||||
self.assertEqual(res.status_code, 204)
|
||||
|
||||
# Set key0 value on level1
|
||||
res = self.client.put('/environments/9/lvl1/1/resources/5/values',
|
||||
data={'key0': 'lvl1_value_0'})
|
||||
self.assertEqual(res.status_code, 204)
|
||||
|
||||
# Set key1, key2 values on level1/level2
|
||||
res = self.client.put(
|
||||
'/environments/9/lvl1/1/lvl2/2/resources/5/values',
|
||||
data={'key1': 'lvl2_value_1', 'key2': 'lvl2_value_2'}
|
||||
)
|
||||
self.assertEqual(res.status_code, 204)
|
||||
|
||||
# Checking lookup info
|
||||
res = self.client.get(
|
||||
'/environments/9/lvl1/1/lvl2/2/resources/5/values?'
|
||||
'effective&show_lookup',
|
||||
)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
expected = {
|
||||
'key0': ['lvl1_value_0', '/lvl1/1/'],
|
||||
'key1': ['lvl2_value_1', '/lvl1/1/lvl2/2/'],
|
||||
'key2': ['lvl2_value_2', '/lvl1/1/lvl2/2/'],
|
||||
'key3': ['root_value_3', '/']
|
||||
}
|
||||
self.assertEqual(expected, res.json)
|
||||
|
|
Loading…
Reference in New Issue