Be consistent about context first argument in db api
By ensuring every db api function has the context as its first argument, this raises the possiblity of using oslo.db recommended session handling: http://docs.openstack.org/developer/oslo.db/usage.html#session-handling Change-Id: I3649bdbf254e2834e79984cc381a1db1ea9e78b8 Related-Bug: #1479723
This commit is contained in:
parent
a393a4a695
commit
4ed43674c1
|
@ -70,21 +70,22 @@ def resource_data_get_all(context, resource_id, data=None):
|
|||
return IMPL.resource_data_get_all(context, resource_id, data)
|
||||
|
||||
|
||||
def resource_data_get(resource, key):
|
||||
return IMPL.resource_data_get(resource, key)
|
||||
def resource_data_get(context, resource_id, key):
|
||||
return IMPL.resource_data_get(context, resource_id, key)
|
||||
|
||||
|
||||
def resource_data_set(resource, key, value, redact=False):
|
||||
return IMPL.resource_data_set(resource, key, value, redact=redact)
|
||||
def resource_data_set(context, resource_id, key, value, redact=False):
|
||||
return IMPL.resource_data_set(context, resource_id, key, value,
|
||||
redact=redact)
|
||||
|
||||
|
||||
def resource_data_get_by_key(context, resource_id, key):
|
||||
return IMPL.resource_data_get_by_key(context, resource_id, key)
|
||||
|
||||
|
||||
def resource_data_delete(resource, key):
|
||||
def resource_data_delete(context, resource_id, key):
|
||||
"""Remove a resource_data element associated to a resource."""
|
||||
return IMPL.resource_data_delete(resource, key)
|
||||
return IMPL.resource_data_delete(context, resource_id, key)
|
||||
|
||||
|
||||
def stack_tags_set(context, stack_id, tags):
|
||||
|
@ -242,8 +243,8 @@ def user_creds_delete(context, user_creds_id):
|
|||
return IMPL.user_creds_delete(context, user_creds_id)
|
||||
|
||||
|
||||
def user_creds_get(context_id):
|
||||
return IMPL.user_creds_get(context_id)
|
||||
def user_creds_get(context, user_creds_id):
|
||||
return IMPL.user_creds_get(context, user_creds_id)
|
||||
|
||||
|
||||
def event_get(context, event_id):
|
||||
|
|
|
@ -240,13 +240,13 @@ def resource_data_get_all(context, resource_id, data=None):
|
|||
return ret
|
||||
|
||||
|
||||
def resource_data_get(resource, key):
|
||||
def resource_data_get(context, resource_id, key):
|
||||
"""Lookup value of resource's data by key.
|
||||
|
||||
Decrypts resource data if necessary.
|
||||
"""
|
||||
result = resource_data_get_by_key(resource.context,
|
||||
resource.id,
|
||||
result = resource_data_get_by_key(context,
|
||||
resource_id,
|
||||
key)
|
||||
if result.redact:
|
||||
return crypt.decrypt(result.decrypt_method, result.value)
|
||||
|
@ -297,22 +297,22 @@ def resource_data_get_by_key(context, resource_id, key):
|
|||
return result
|
||||
|
||||
|
||||
def resource_data_set(resource, key, value, redact=False):
|
||||
def resource_data_set(context, resource_id, key, value, redact=False):
|
||||
"""Save resource's key/value pair to database."""
|
||||
if redact:
|
||||
method, value = crypt.encrypt(value)
|
||||
else:
|
||||
method = ''
|
||||
try:
|
||||
current = resource_data_get_by_key(resource.context, resource.id, key)
|
||||
current = resource_data_get_by_key(context, resource_id, key)
|
||||
except exception.NotFound:
|
||||
current = models.ResourceData()
|
||||
current.key = key
|
||||
current.resource_id = resource.id
|
||||
current.resource_id = resource_id
|
||||
current.redact = redact
|
||||
current.value = value
|
||||
current.decrypt_method = method
|
||||
current.save(session=resource.context.session)
|
||||
current.save(session=_session(context))
|
||||
return current
|
||||
|
||||
|
||||
|
@ -329,8 +329,8 @@ def resource_exchange_stacks(context, resource_id1, resource_id2):
|
|||
session.commit()
|
||||
|
||||
|
||||
def resource_data_delete(resource, key):
|
||||
result = resource_data_get_by_key(resource.context, resource.id, key)
|
||||
def resource_data_delete(context, resource_id, key):
|
||||
result = resource_data_get_by_key(context, resource_id, key)
|
||||
result.delete()
|
||||
|
||||
|
||||
|
@ -733,8 +733,8 @@ def user_creds_create(context):
|
|||
return result
|
||||
|
||||
|
||||
def user_creds_get(user_creds_id):
|
||||
db_result = model_query(None, models.UserCreds).get(user_creds_id)
|
||||
def user_creds_get(context, user_creds_id):
|
||||
db_result = model_query(context, models.UserCreds).get(user_creds_id)
|
||||
if db_result is None:
|
||||
return None
|
||||
# Return a dict copy of db results, do not decrypt details into db_result
|
||||
|
|
|
@ -281,7 +281,8 @@ class Stack(collections.Mapping):
|
|||
|
||||
def stored_context(self):
|
||||
if self.user_creds_id:
|
||||
creds_obj = ucreds_object.UserCreds.get_by_id(self.user_creds_id)
|
||||
creds_obj = ucreds_object.UserCreds.get_by_id(
|
||||
self.context, self.user_creds_id)
|
||||
# Maintain request_id from self.context so we retain traceability
|
||||
# in situations where servicing a request requires switching from
|
||||
# the request context to the stored context
|
||||
|
@ -1563,7 +1564,8 @@ class Stack(collections.Mapping):
|
|||
# Ignore this error instead of blocking stack deletion.
|
||||
user_creds = None
|
||||
try:
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(self.user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.context, self.user_creds_id)
|
||||
except exception.Error as err:
|
||||
LOG.exception(err)
|
||||
pass
|
||||
|
|
|
@ -62,12 +62,13 @@ class ResourceData(
|
|||
|
||||
@classmethod
|
||||
def get_val(cls, resource, key):
|
||||
return db_api.resource_data_get(resource, key)
|
||||
return db_api.resource_data_get(resource.context, resource.id, key)
|
||||
|
||||
@classmethod
|
||||
def set(cls, resource, key, value, *args, **kwargs):
|
||||
db_data = db_api.resource_data_set(
|
||||
resource,
|
||||
resource.context,
|
||||
resource.id,
|
||||
key,
|
||||
value,
|
||||
*args,
|
||||
|
@ -82,4 +83,4 @@ class ResourceData(
|
|||
|
||||
@classmethod
|
||||
def delete(cls, resource, key):
|
||||
db_api.resource_data_delete(resource, key)
|
||||
db_api.resource_data_delete(resource.context, resource.id, key)
|
||||
|
|
|
@ -67,7 +67,7 @@ class UserCreds(
|
|||
db_api.user_creds_delete(context, user_creds_id)
|
||||
|
||||
@classmethod
|
||||
def get_by_id(cls, context_id):
|
||||
user_creds_db = db_api.user_creds_get(context_id)
|
||||
def get_by_id(cls, context, user_creds_id):
|
||||
user_creds_db = db_api.user_creds_get(context, user_creds_id)
|
||||
user_creds = cls._from_db_object(cls(), user_creds_db)
|
||||
return user_creds
|
||||
|
|
|
@ -87,7 +87,7 @@ class MyResource(rsrc.Resource):
|
|||
|
||||
@property
|
||||
def my_secret(self):
|
||||
return db_api.resource_data_get(self, 'my_secret')
|
||||
return db_api.resource_data_get(self.context, self.id, 'my_secret')
|
||||
|
||||
@my_secret.setter
|
||||
def my_secret(self, my_secret):
|
||||
|
@ -346,11 +346,12 @@ class SqlAlchemyTest(common.HeatTestCase):
|
|||
stack.create()
|
||||
resource = stack['WebServer']
|
||||
resource.data_set('test', 'test_data')
|
||||
self.assertEqual('test_data', db_api.resource_data_get(resource,
|
||||
'test'))
|
||||
db_api.resource_data_delete(resource, 'test')
|
||||
self.assertEqual('test_data', db_api.resource_data_get(
|
||||
self.ctx, resource.id, 'test'))
|
||||
db_api.resource_data_delete(self.ctx, resource.id, 'test')
|
||||
self.assertRaises(exception.NotFound,
|
||||
db_api.resource_data_get, resource, 'test')
|
||||
db_api.resource_data_get, self.ctx,
|
||||
resource.id, 'test')
|
||||
|
||||
def test_stack_get_by_name(self):
|
||||
stack = self._setup_test_stack('stack', UUID1,
|
||||
|
@ -983,7 +984,7 @@ class SqlAlchemyTest(common.HeatTestCase):
|
|||
self.ctx.trust_id = None
|
||||
self.ctx.region_name = 'RegionOne'
|
||||
db_creds = db_api.user_creds_create(self.ctx)
|
||||
load_creds = db_api.user_creds_get(db_creds['id'])
|
||||
load_creds = db_api.user_creds_get(self.ctx, db_creds['id'])
|
||||
|
||||
self.assertEqual('test_username', load_creds.get('username'))
|
||||
self.assertEqual('password', load_creds.get('password'))
|
||||
|
@ -1016,7 +1017,7 @@ class SqlAlchemyTest(common.HeatTestCase):
|
|||
self.ctx.auth_url = 'anauthurl'
|
||||
self.ctx.region_name = 'aregion'
|
||||
db_creds = db_api.user_creds_create(self.ctx)
|
||||
load_creds = db_api.user_creds_get(db_creds['id'])
|
||||
load_creds = db_api.user_creds_get(self.ctx, db_creds['id'])
|
||||
|
||||
self.assertIsNone(load_creds.get('username'))
|
||||
self.assertIsNone(load_creds.get('password'))
|
||||
|
@ -1035,7 +1036,7 @@ class SqlAlchemyTest(common.HeatTestCase):
|
|||
self.ctx.trust_id = None
|
||||
self.ctx.region_name = None
|
||||
db_creds = db_api.user_creds_create(self.ctx)
|
||||
load_creds = db_api.user_creds_get(db_creds['id'])
|
||||
load_creds = db_api.user_creds_get(self.ctx, db_creds['id'])
|
||||
|
||||
self.assertIsNone(load_creds.get('username'))
|
||||
self.assertIsNone(load_creds.get('password'))
|
||||
|
@ -1440,7 +1441,7 @@ def create_resource_data(ctx, resource, **kwargs):
|
|||
'redact': 0,
|
||||
}
|
||||
values.update(kwargs)
|
||||
return db_api.resource_data_set(resource, **values)
|
||||
return db_api.resource_data_set(ctx, resource.id, **values)
|
||||
|
||||
|
||||
def create_event(ctx, **kwargs):
|
||||
|
@ -1594,18 +1595,18 @@ class DBAPIUserCredsTest(common.HeatTestCase):
|
|||
|
||||
def test_user_creds_get(self):
|
||||
user_creds = create_user_creds(self.ctx)
|
||||
ret_user_creds = db_api.user_creds_get(user_creds['id'])
|
||||
ret_user_creds = db_api.user_creds_get(self.ctx, user_creds['id'])
|
||||
self.assertEqual(user_creds['password'],
|
||||
ret_user_creds['password'])
|
||||
|
||||
def test_user_creds_get_noexist(self):
|
||||
self.assertIsNone(db_api.user_creds_get(123456))
|
||||
self.assertIsNone(db_api.user_creds_get(self.ctx, 123456))
|
||||
|
||||
def test_user_creds_delete(self):
|
||||
user_creds = create_user_creds(self.ctx)
|
||||
self.assertIsNotNone(user_creds['id'])
|
||||
db_api.user_creds_delete(self.ctx, user_creds['id'])
|
||||
creds = db_api.user_creds_get(user_creds['id'])
|
||||
creds = db_api.user_creds_get(self.ctx, user_creds['id'])
|
||||
self.assertIsNone(creds)
|
||||
mock_delete = self.patchobject(session.Session, 'delete')
|
||||
err = self.assertRaises(
|
||||
|
@ -2089,7 +2090,8 @@ class DBAPIStackTest(common.HeatTestCase):
|
|||
self.assertEqual([],
|
||||
db_api.event_get_all_by_stack(ctx,
|
||||
stacks[s].id))
|
||||
self.assertIsNone(db_api.user_creds_get(stacks[s].user_creds_id))
|
||||
self.assertIsNone(db_api.user_creds_get(
|
||||
self.ctx, stacks[s].user_creds_id))
|
||||
tmpl_idx = tmpl_idx + 1
|
||||
|
||||
def test_stack_get_root_id(self):
|
||||
|
@ -2435,18 +2437,21 @@ class DBAPIResourceDataTest(common.HeatTestCase):
|
|||
|
||||
def test_resource_data_set_get(self):
|
||||
create_resource_data(self.ctx, self.resource)
|
||||
val = db_api.resource_data_get(self.resource, 'test_resource_key')
|
||||
val = db_api.resource_data_get(
|
||||
self.ctx, self.resource.id, 'test_resource_key')
|
||||
self.assertEqual('test_value', val)
|
||||
|
||||
# Updating existing resource data
|
||||
create_resource_data(self.ctx, self.resource, value='foo')
|
||||
val = db_api.resource_data_get(self.resource, 'test_resource_key')
|
||||
val = db_api.resource_data_get(
|
||||
self.ctx, self.resource.id, 'test_resource_key')
|
||||
self.assertEqual('foo', val)
|
||||
|
||||
# Testing with encrypted value
|
||||
create_resource_data(self.ctx, self.resource,
|
||||
key='encryped_resource_key', redact=True)
|
||||
val = db_api.resource_data_get(self.resource, 'encryped_resource_key')
|
||||
val = db_api.resource_data_get(
|
||||
self.ctx, self.resource.id, 'encryped_resource_key')
|
||||
self.assertEqual('test_value', val)
|
||||
|
||||
# get all by querying for data
|
||||
|
@ -2469,7 +2474,8 @@ class DBAPIResourceDataTest(common.HeatTestCase):
|
|||
self.assertIsNotNone(res_data)
|
||||
self.assertEqual('test_value', res_data.value)
|
||||
|
||||
db_api.resource_data_delete(self.resource, 'test_resource_key')
|
||||
db_api.resource_data_delete(self.ctx, self.resource.id,
|
||||
'test_resource_key')
|
||||
self.assertRaises(exception.NotFound, db_api.resource_data_get_by_key,
|
||||
self.ctx, self.resource.id, 'test_resource_key')
|
||||
self.assertIsNotNone(res_data)
|
||||
|
|
|
@ -1372,7 +1372,7 @@ class StackTest(common.HeatTestCase):
|
|||
self.assertIsNotNone(user_creds_id)
|
||||
|
||||
# should've stored the username/password in the context
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(self.ctx, user_creds_id)
|
||||
self.assertEqual(self.ctx.username, user_creds.get('username'))
|
||||
self.assertEqual(self.ctx.password, user_creds.get('password'))
|
||||
self.assertIsNone(user_creds.get('trust_id'))
|
||||
|
@ -1411,7 +1411,7 @@ class StackTest(common.HeatTestCase):
|
|||
# should've stored the trust_id and trustor_user_id returned from
|
||||
# FakeKeystoneClient.create_trust_context, username/password should
|
||||
# not have been stored
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(self.ctx, user_creds_id)
|
||||
self.assertIsNone(user_creds.get('username'))
|
||||
self.assertIsNone(user_creds.get('password'))
|
||||
self.assertEqual('atrust', user_creds.get('trust_id'))
|
||||
|
|
|
@ -92,14 +92,16 @@ class StackTest(common.HeatTestCase):
|
|||
self.assertIsNotNone(db_s)
|
||||
self.assertIsNotNone(db_s.user_creds_id)
|
||||
user_creds_id = db_s.user_creds_id
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(db_s.user_creds_id)
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, db_s.user_creds_id)
|
||||
self.assertIsNotNone(db_creds)
|
||||
|
||||
self.stack.delete()
|
||||
|
||||
db_s = stack_object.Stack.get_by_id(self.ctx, stack_id)
|
||||
self.assertIsNone(db_s)
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, user_creds_id)
|
||||
self.assertIsNone(db_creds)
|
||||
del_db_s = stack_object.Stack.get_by_id(self.ctx,
|
||||
stack_id,
|
||||
|
@ -122,7 +124,8 @@ class StackTest(common.HeatTestCase):
|
|||
self.assertIsNotNone(db_s)
|
||||
self.assertIsNotNone(db_s.user_creds_id)
|
||||
user_creds_id = db_s.user_creds_id
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(db_s.user_creds_id)
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, db_s.user_creds_id)
|
||||
self.assertIsNotNone(db_creds)
|
||||
|
||||
ucreds_object.UserCreds.delete(self.ctx, user_creds_id)
|
||||
|
@ -131,7 +134,8 @@ class StackTest(common.HeatTestCase):
|
|||
|
||||
db_s = stack_object.Stack.get_by_id(self.ctx, stack_id)
|
||||
self.assertIsNone(db_s)
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
db_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, user_creds_id)
|
||||
self.assertIsNone(db_creds)
|
||||
del_db_s = stack_object.Stack.get_by_id(self.ctx,
|
||||
stack_id,
|
||||
|
@ -192,7 +196,8 @@ class StackTest(common.HeatTestCase):
|
|||
|
||||
user_creds_id = db_s.user_creds_id
|
||||
self.assertIsNotNone(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, user_creds_id)
|
||||
self.assertEqual('thetrustor', user_creds.get('trustor_user_id'))
|
||||
|
||||
self.stack.delete()
|
||||
|
@ -223,7 +228,8 @@ class StackTest(common.HeatTestCase):
|
|||
|
||||
user_creds_id = db_s.user_creds_id
|
||||
self.assertIsNotNone(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, user_creds_id)
|
||||
self.assertEqual('thetrustor', user_creds.get('trustor_user_id'))
|
||||
|
||||
mock_kc.return_value = fakes.FakeKeystoneClient(user_id='nottrustor')
|
||||
|
@ -274,14 +280,16 @@ class StackTest(common.HeatTestCase):
|
|||
self.assertIsNotNone(db_s)
|
||||
user_creds_id = db_s.user_creds_id
|
||||
self.assertIsNotNone(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, user_creds_id)
|
||||
self.assertIsNotNone(user_creds)
|
||||
|
||||
self.stack.delete()
|
||||
|
||||
db_s = stack_object.Stack.get_by_id(self.ctx, stack_id)
|
||||
self.assertIsNone(db_s)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(user_creds_id)
|
||||
user_creds = ucreds_object.UserCreds.get_by_id(
|
||||
self.ctx, user_creds_id)
|
||||
self.assertIsNotNone(user_creds)
|
||||
self.assertEqual((stack.Stack.DELETE, stack.Stack.COMPLETE),
|
||||
self.stack.state)
|
||||
|
|
Loading…
Reference in New Issue