Keys operations for empty levels list fixed.
Also made several variable renames in the tests. Change-Id: I675826f2510b6690f6008fcbce9e08ad610a4fa1 Closes-Bug: #1614551
This commit is contained in:
parent
a21d1a1212
commit
7de9323fc5
@ -80,7 +80,7 @@ def get_resource_values(environment, levels, res_def):
|
||||
res_values = db.ResourceValues.query.filter_by(
|
||||
environment_id=environment.id,
|
||||
resource_definition_id=res_def.id,
|
||||
level_value_id=level_value.id,
|
||||
level_value=level_value,
|
||||
).all()
|
||||
|
||||
if not res_values:
|
||||
|
@ -38,10 +38,10 @@ class ComponentsCollection(flask_restful.Resource):
|
||||
def post(self):
|
||||
component = db.Component(name=flask.request.json['name'])
|
||||
component.resource_definitions = []
|
||||
for resdef_data in flask.request.json.get('resource_definitions'):
|
||||
resdef = db.ResourceDefinition(name=resdef_data['name'],
|
||||
content=resdef_data.get('content'))
|
||||
component.resource_definitions.append(resdef)
|
||||
for res_def_data in flask.request.json.get('resource_definitions'):
|
||||
res_def = db.ResourceDefinition(
|
||||
name=res_def_data['name'], content=res_def_data.get('content'))
|
||||
component.resource_definitions.append(res_def)
|
||||
db.db.session.add(component)
|
||||
return component, 201
|
||||
|
||||
@ -57,9 +57,9 @@ class Component(flask_restful.Resource):
|
||||
component = db.Component.query.get_or_404(component_id)
|
||||
update_by = flask.request.json
|
||||
component.name = update_by.get('name', component.name)
|
||||
resource_definitions = update_by.get('resource_definitions')
|
||||
if resource_definitions is not None:
|
||||
ids = [data['id'] for data in resource_definitions]
|
||||
res_definitions = update_by.get('resource_definitions')
|
||||
if res_definitions is not None:
|
||||
ids = [data['id'] for data in res_definitions]
|
||||
resources = library.load_objects(db.ResourceDefinition, ids)
|
||||
component.resource_definitions = resources
|
||||
|
||||
|
@ -25,16 +25,16 @@ class ResourceValues(flask_restful.Resource):
|
||||
@db.with_transaction
|
||||
def put(self, environment_id, levels, resource_id_or_name):
|
||||
environment = db.Environment.query.get_or_404(environment_id)
|
||||
resdef = library.get_resource_definition(
|
||||
res_def = library.get_resource_definition(
|
||||
resource_id_or_name, environment_id)
|
||||
|
||||
if resdef.id != resource_id_or_name:
|
||||
if res_def.id != resource_id_or_name:
|
||||
from tuning_box.app import api
|
||||
return flask.redirect(api.url_for(
|
||||
ResourceValues,
|
||||
environment_id=environment_id,
|
||||
levels=levels,
|
||||
resource_id_or_name=resdef.id,
|
||||
resource_id_or_name=res_def.id,
|
||||
), code=308)
|
||||
|
||||
level_value = levels_hierarchy.get_environment_level_value(
|
||||
@ -42,7 +42,7 @@ class ResourceValues(flask_restful.Resource):
|
||||
esv = db.get_or_create(
|
||||
db.ResourceValues,
|
||||
environment=environment,
|
||||
resource_definition=resdef,
|
||||
resource_definition=res_def,
|
||||
level_value=level_value,
|
||||
)
|
||||
esv.values = flask.request.json
|
||||
@ -51,15 +51,15 @@ class ResourceValues(flask_restful.Resource):
|
||||
@db.with_transaction
|
||||
def get(self, environment_id, resource_id_or_name, levels):
|
||||
environment = db.Environment.query.get_or_404(environment_id)
|
||||
resdef = library.get_resource_definition(
|
||||
res_def = library.get_resource_definition(
|
||||
resource_id_or_name, environment_id)
|
||||
if resdef.id != resource_id_or_name:
|
||||
if res_def.id != resource_id_or_name:
|
||||
from tuning_box.app import api
|
||||
url = api.url_for(
|
||||
ResourceValues,
|
||||
environment_id=environment_id,
|
||||
levels=levels,
|
||||
resource_id_or_name=resdef.id,
|
||||
resource_id_or_name=res_def.id,
|
||||
)
|
||||
if flask.request.query_string:
|
||||
qs = flask.request.query_string.decode('utf-8')
|
||||
@ -71,7 +71,7 @@ class ResourceValues(flask_restful.Resource):
|
||||
|
||||
if 'effective' in flask.request.args:
|
||||
resource_values = db.ResourceValues.query.filter_by(
|
||||
resource_definition=resdef,
|
||||
resource_definition=res_def,
|
||||
environment=environment,
|
||||
).all()
|
||||
result = {}
|
||||
@ -88,7 +88,7 @@ class ResourceValues(flask_restful.Resource):
|
||||
else:
|
||||
level_value = level_values[-1]
|
||||
resource_values = db.ResourceValues.query.filter_by(
|
||||
resource_definition=resdef,
|
||||
resource_definition=res_def,
|
||||
environment=environment,
|
||||
level_value=level_value,
|
||||
).one_or_none()
|
||||
|
@ -177,6 +177,27 @@ class TestResourceOverrides(BaseTest):
|
||||
self.assertEqual({'key': 'key_over', 'key_x': 'key_x_over'},
|
||||
actual)
|
||||
|
||||
def test_put_resource_overrides_set_no_levels(self):
|
||||
self._fixture()
|
||||
environment_id = 9
|
||||
res_def_id = 5
|
||||
values = {'key': 'val'}
|
||||
self._add_resource_overrides(environment_id, res_def_id, (), values)
|
||||
|
||||
obj_url = '/environments/{0}/resources/{1}/overrides'.format(
|
||||
environment_id, res_def_id)
|
||||
obj_keys_url = obj_url + '/keys/set'
|
||||
|
||||
data = [['key', 'key_value'], ['key_x', 'key_x_value']]
|
||||
res = self.client.put(obj_keys_url, data=data)
|
||||
self.assertEqual(204, res.status_code)
|
||||
|
||||
res = self.client.get(obj_url)
|
||||
self.assertEqual(200, res.status_code)
|
||||
actual = res.json
|
||||
self.assertEqual({'key': 'key_value', 'key_x': 'key_x_value'},
|
||||
actual)
|
||||
|
||||
def test_put_resource_overrides_delete(self):
|
||||
self._fixture()
|
||||
environment_id = 9
|
||||
|
@ -191,6 +191,27 @@ class TestResourceValues(BaseTest):
|
||||
self.assertEqual({'key': 'key_value', 'key_x': 'key_x_value'},
|
||||
actual)
|
||||
|
||||
def test_put_resource_values_set_no_levels(self):
|
||||
self._fixture()
|
||||
environment_id = 9
|
||||
res_def_id = 5
|
||||
values = {'key': 'val'}
|
||||
self._add_resource_values(environment_id, res_def_id, (), values)
|
||||
|
||||
obj_url = '/environments/{0}/resources/{1}/values'.format(
|
||||
environment_id, res_def_id)
|
||||
obj_keys_url = obj_url + '/keys/set'
|
||||
|
||||
data = [['key', 'key_value'], ['key_x', 'key_x_value']]
|
||||
res = self.client.put(obj_keys_url, data=data)
|
||||
self.assertEqual(204, res.status_code)
|
||||
|
||||
res = self.client.get(obj_url)
|
||||
self.assertEqual(200, res.status_code)
|
||||
actual = res.json
|
||||
self.assertEqual({'key': 'key_value', 'key_x': 'key_x_value'},
|
||||
actual)
|
||||
|
||||
def test_put_resource_values_delete(self):
|
||||
self._fixture()
|
||||
environment_id = 9
|
||||
|
@ -73,12 +73,18 @@ class BaseTest(base.TestCase):
|
||||
environment.hierarchy_levels = hierarchy_levels
|
||||
db.db.session.add(environment)
|
||||
|
||||
def _levels_to_url(self, levels):
|
||||
levels_url = '/'.join(itertools.chain.from_iterable(levels))
|
||||
if levels_url:
|
||||
levels_url += '/'
|
||||
return levels_url
|
||||
|
||||
def _add_resource_values(self, environment_id, res_def_id,
|
||||
levels, values):
|
||||
res = self.client.put(
|
||||
'/environments/{0}/{1}/resources/{2}/values'.format(
|
||||
'/environments/{0}/{1}resources/{2}/values'.format(
|
||||
environment_id,
|
||||
'/'.join(itertools.chain.from_iterable(levels)),
|
||||
self._levels_to_url(levels),
|
||||
res_def_id
|
||||
),
|
||||
data=values
|
||||
@ -88,9 +94,9 @@ class BaseTest(base.TestCase):
|
||||
def _add_resource_overrides(self, environment_id, res_def_id,
|
||||
levels, overrides):
|
||||
res = self.client.put(
|
||||
'/environments/{0}/{1}/resources/{2}/overrides'.format(
|
||||
'/environments/{0}/{1}resources/{2}/overrides'.format(
|
||||
environment_id,
|
||||
'/'.join(itertools.chain.from_iterable(levels)),
|
||||
self._levels_to_url(levels),
|
||||
res_def_id
|
||||
),
|
||||
data=overrides
|
||||
|
Loading…
x
Reference in New Issue
Block a user