Revised credential database table definition

This patch adds a project column to the credential table. With this new
column, we will be using (user, project) as the primary key for query.
The reason for this is that a trust may be only valid within a specified
project, while a user may be working on a different project for service
requesting.

Change-Id: Ie5f62c1d8225bbfd37fb6fed8baedd52a004e203
This commit is contained in:
tengqm
2015-04-16 04:42:32 -04:00
parent 2ce6692726
commit 90e975a239
5 changed files with 42 additions and 17 deletions

View File

@@ -879,12 +879,12 @@ def cred_create(context, values):
return cred
def cred_get(context, cred_id):
return model_query(context, models.Credential).get(cred_id)
def cred_get(context, user, project):
return model_query(context, models.Credential).get((user, project))
def cred_delete(context, cred_id):
cred = model_query(context, models.Credential).get(cred_id)
def cred_delete(context, user, project):
cred = model_query(context, models.Credential).get((user, project))
if cred is None:
return None
cred.delete()

View File

@@ -169,6 +169,8 @@ def upgrade(migrate_engine):
'credential', meta,
sqlalchemy.Column('user', sqlalchemy.String(36), primary_key=True,
nullable=False),
sqlalchemy.Column('project', sqlalchemy.String(36), primary_key=True,
nullable=False),
sqlalchemy.Column('cred', types.Dict, nullable=False),
sqlalchemy.Column('data', types.Dict),
mysql_engine='InnoDB',

View File

@@ -257,6 +257,8 @@ class Credential(BASE, SenlinBase):
user = sqlalchemy.Column(sqlalchemy.String(36), primary_key=True,
nullable=False)
project = sqlalchemy.Column(sqlalchemy.String(32), primary_key=True,
nullable=False)
cred = sqlalchemy.Column(types.Dict, nullable=False)
data = sqlalchemy.Column(types.Dict)