Revisions to cluster/node db model
This patch adds 'user' and 'domain' properties to node objects so that they can be created with needed identity information. These identity information will later be used to authenticate with keystone when the physical resources are to be operated, i.e. created/update/delete. This patch also makes the 'user', 'project', 'domain' fields fit the current data models we get from keystone. Each of these entities has an ID field of 32 bytes, instead of 36 bytes. For nodes or clusters, the 'user' and 'project' fields cannot be NULL. Change-Id: If7fb248d6430bc0d499d45589fd99923b200d25e
This commit is contained in:
parent
3d78f4a358
commit
052af1eb05
@ -45,8 +45,8 @@ def upgrade(migrate_engine):
|
|||||||
sqlalchemy.Column('profile_id', sqlalchemy.String(36),
|
sqlalchemy.Column('profile_id', sqlalchemy.String(36),
|
||||||
sqlalchemy.ForeignKey('profile.id'),
|
sqlalchemy.ForeignKey('profile.id'),
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sqlalchemy.Column('user', sqlalchemy.String(36)),
|
sqlalchemy.Column('user', sqlalchemy.String(32), nullable=False),
|
||||||
sqlalchemy.Column('project', sqlalchemy.String(36)),
|
sqlalchemy.Column('project', sqlalchemy.String(32), nullable=False),
|
||||||
sqlalchemy.Column('domain', sqlalchemy.String(36)),
|
sqlalchemy.Column('domain', sqlalchemy.String(36)),
|
||||||
sqlalchemy.Column('parent', sqlalchemy.String(36)),
|
sqlalchemy.Column('parent', sqlalchemy.String(36)),
|
||||||
sqlalchemy.Column('init_time', sqlalchemy.DateTime),
|
sqlalchemy.Column('init_time', sqlalchemy.DateTime),
|
||||||
@ -75,7 +75,9 @@ def upgrade(migrate_engine):
|
|||||||
sqlalchemy.Column('profile_id', sqlalchemy.String(36),
|
sqlalchemy.Column('profile_id', sqlalchemy.String(36),
|
||||||
sqlalchemy.ForeignKey('profile.id'),
|
sqlalchemy.ForeignKey('profile.id'),
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sqlalchemy.Column('project', sqlalchemy.String(36)),
|
sqlalchemy.Column('user', sqlalchemy.String(32)),
|
||||||
|
sqlalchemy.Column('project', sqlalchemy.String(32)),
|
||||||
|
sqlalchemy.Column('domain', sqlalchemy.String(32)),
|
||||||
sqlalchemy.Column('index', sqlalchemy.Integer),
|
sqlalchemy.Column('index', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('role', sqlalchemy.String(64)),
|
sqlalchemy.Column('role', sqlalchemy.String(64)),
|
||||||
sqlalchemy.Column('init_time', sqlalchemy.DateTime),
|
sqlalchemy.Column('init_time', sqlalchemy.DateTime),
|
||||||
@ -151,9 +153,9 @@ def upgrade(migrate_engine):
|
|||||||
sqlalchemy.Column('id', sqlalchemy.String(36), primary_key=True,
|
sqlalchemy.Column('id', sqlalchemy.String(36), primary_key=True,
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String(255)),
|
sqlalchemy.Column('name', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('user', sqlalchemy.String(36)),
|
sqlalchemy.Column('user', sqlalchemy.String(32)),
|
||||||
sqlalchemy.Column('project', sqlalchemy.String(36)),
|
sqlalchemy.Column('project', sqlalchemy.String(32)),
|
||||||
sqlalchemy.Column('domain', sqlalchemy.String(36)),
|
sqlalchemy.Column('domain', sqlalchemy.String(32)),
|
||||||
sqlalchemy.Column('created_time', sqlalchemy.DateTime),
|
sqlalchemy.Column('created_time', sqlalchemy.DateTime),
|
||||||
sqlalchemy.Column('deleted_time', sqlalchemy.DateTime),
|
sqlalchemy.Column('deleted_time', sqlalchemy.DateTime),
|
||||||
sqlalchemy.Column('obj_id', sqlalchemy.String(36), nullable=False),
|
sqlalchemy.Column('obj_id', sqlalchemy.String(36), nullable=False),
|
||||||
@ -167,9 +169,9 @@ def upgrade(migrate_engine):
|
|||||||
|
|
||||||
credential = sqlalchemy.Table(
|
credential = sqlalchemy.Table(
|
||||||
'credential', meta,
|
'credential', meta,
|
||||||
sqlalchemy.Column('user', sqlalchemy.String(36), primary_key=True,
|
sqlalchemy.Column('user', sqlalchemy.String(32), primary_key=True,
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sqlalchemy.Column('project', sqlalchemy.String(36), primary_key=True,
|
sqlalchemy.Column('project', sqlalchemy.String(32), primary_key=True,
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sqlalchemy.Column('cred', types.Dict, nullable=False),
|
sqlalchemy.Column('cred', types.Dict, nullable=False),
|
||||||
sqlalchemy.Column('data', types.Dict),
|
sqlalchemy.Column('data', types.Dict),
|
||||||
@ -216,8 +218,8 @@ def upgrade(migrate_engine):
|
|||||||
sqlalchemy.Column('obj_type', sqlalchemy.String(36)),
|
sqlalchemy.Column('obj_type', sqlalchemy.String(36)),
|
||||||
sqlalchemy.Column('cluster_id', sqlalchemy.String(36)),
|
sqlalchemy.Column('cluster_id', sqlalchemy.String(36)),
|
||||||
sqlalchemy.Column('level', sqlalchemy.String(63)),
|
sqlalchemy.Column('level', sqlalchemy.String(63)),
|
||||||
sqlalchemy.Column('user', sqlalchemy.String(36)),
|
sqlalchemy.Column('user', sqlalchemy.String(32)),
|
||||||
sqlalchemy.Column('project', sqlalchemy.String(36)),
|
sqlalchemy.Column('project', sqlalchemy.String(32)),
|
||||||
sqlalchemy.Column('action', sqlalchemy.String(36)),
|
sqlalchemy.Column('action', sqlalchemy.String(36)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status_reason', sqlalchemy.String(255)),
|
sqlalchemy.Column('status_reason', sqlalchemy.String(255)),
|
||||||
|
@ -93,9 +93,9 @@ class Cluster(BASE, SenlinBase, SoftDelete):
|
|||||||
profile_id = sqlalchemy.Column(sqlalchemy.String(36),
|
profile_id = sqlalchemy.Column(sqlalchemy.String(36),
|
||||||
sqlalchemy.ForeignKey('profile.id'),
|
sqlalchemy.ForeignKey('profile.id'),
|
||||||
nullable=False)
|
nullable=False)
|
||||||
user = sqlalchemy.Column(sqlalchemy.String(36))
|
user = sqlalchemy.Column(sqlalchemy.String(32), nullable=False)
|
||||||
domain = sqlalchemy.Column(sqlalchemy.String(36))
|
project = sqlalchemy.Column(sqlalchemy.String(32), nullable=False)
|
||||||
project = sqlalchemy.Column(sqlalchemy.String(36))
|
domain = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
parent = sqlalchemy.Column(sqlalchemy.String(36))
|
parent = sqlalchemy.Column(sqlalchemy.String(36))
|
||||||
|
|
||||||
init_time = sqlalchemy.Column(sqlalchemy.DateTime)
|
init_time = sqlalchemy.Column(sqlalchemy.DateTime)
|
||||||
@ -126,7 +126,9 @@ class Node(BASE, SenlinBase, SoftDelete):
|
|||||||
sqlalchemy.ForeignKey('cluster.id'))
|
sqlalchemy.ForeignKey('cluster.id'))
|
||||||
profile_id = sqlalchemy.Column(sqlalchemy.String(36),
|
profile_id = sqlalchemy.Column(sqlalchemy.String(36),
|
||||||
sqlalchemy.ForeignKey('profile.id'))
|
sqlalchemy.ForeignKey('profile.id'))
|
||||||
project = sqlalchemy.Column(sqlalchemy.String(36))
|
user = sqlalchemy.Column(sqlalchemy.String(32), nullable=False)
|
||||||
|
project = sqlalchemy.Column(sqlalchemy.String(32), nullable=False)
|
||||||
|
domain = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
index = sqlalchemy.Column(sqlalchemy.Integer)
|
index = sqlalchemy.Column(sqlalchemy.Integer)
|
||||||
role = sqlalchemy.Column(sqlalchemy.String(64))
|
role = sqlalchemy.Column(sqlalchemy.String(64))
|
||||||
|
|
||||||
@ -236,9 +238,9 @@ class Webhook(BASE, SenlinBase, SoftDelete):
|
|||||||
id = sqlalchemy.Column('id', sqlalchemy.String(36), primary_key=True,
|
id = sqlalchemy.Column('id', sqlalchemy.String(36), primary_key=True,
|
||||||
default=lambda: str(uuid.uuid4()))
|
default=lambda: str(uuid.uuid4()))
|
||||||
name = sqlalchemy.Column('name', sqlalchemy.String(255))
|
name = sqlalchemy.Column('name', sqlalchemy.String(255))
|
||||||
user = sqlalchemy.Column(sqlalchemy.String(36))
|
user = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
domain = sqlalchemy.Column(sqlalchemy.String(36))
|
domain = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
project = sqlalchemy.Column(sqlalchemy.String(36))
|
project = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
|
|
||||||
created_time = sqlalchemy.Column(sqlalchemy.DateTime)
|
created_time = sqlalchemy.Column(sqlalchemy.DateTime)
|
||||||
deleted_time = sqlalchemy.Column(sqlalchemy.DateTime)
|
deleted_time = sqlalchemy.Column(sqlalchemy.DateTime)
|
||||||
@ -255,7 +257,7 @@ class Credential(BASE, SenlinBase):
|
|||||||
|
|
||||||
__tablename__ = 'credential'
|
__tablename__ = 'credential'
|
||||||
|
|
||||||
user = sqlalchemy.Column(sqlalchemy.String(36), primary_key=True,
|
user = sqlalchemy.Column(sqlalchemy.String(32), primary_key=True,
|
||||||
nullable=False)
|
nullable=False)
|
||||||
project = sqlalchemy.Column(sqlalchemy.String(32), primary_key=True,
|
project = sqlalchemy.Column(sqlalchemy.String(32), primary_key=True,
|
||||||
nullable=False)
|
nullable=False)
|
||||||
@ -310,8 +312,8 @@ class Event(BASE, SenlinBase, SoftDelete):
|
|||||||
nullable=True)
|
nullable=True)
|
||||||
cluster = relationship(Cluster, backref=backref('events'))
|
cluster = relationship(Cluster, backref=backref('events'))
|
||||||
level = sqlalchemy.Column(sqlalchemy.String(64))
|
level = sqlalchemy.Column(sqlalchemy.String(64))
|
||||||
user = sqlalchemy.Column(sqlalchemy.String(36))
|
user = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
project = sqlalchemy.Column(sqlalchemy.String(36))
|
project = sqlalchemy.Column(sqlalchemy.String(32))
|
||||||
action = sqlalchemy.Column(sqlalchemy.String(36))
|
action = sqlalchemy.Column(sqlalchemy.String(36))
|
||||||
status = sqlalchemy.Column(sqlalchemy.String(255))
|
status = sqlalchemy.Column(sqlalchemy.String(255))
|
||||||
status_reason = sqlalchemy.Column(sqlalchemy.String(255))
|
status_reason = sqlalchemy.Column(sqlalchemy.String(255))
|
||||||
|
@ -87,6 +87,12 @@ class Cluster(periodic_task.PeriodicTasks):
|
|||||||
self.rt = {}
|
self.rt = {}
|
||||||
|
|
||||||
if context is not None:
|
if context is not None:
|
||||||
|
if self.user == '':
|
||||||
|
self.user = context.user
|
||||||
|
if self.project == '':
|
||||||
|
self.project = context.project
|
||||||
|
if self.domain == '':
|
||||||
|
self.domain = context.domain
|
||||||
self._load_runtime_data(context)
|
self._load_runtime_data(context)
|
||||||
|
|
||||||
def _load_runtime_data(self, context):
|
def _load_runtime_data(self, context):
|
||||||
|
@ -51,7 +51,9 @@ class Node(object):
|
|||||||
|
|
||||||
self.physical_id = kwargs.get('physical_id', '')
|
self.physical_id = kwargs.get('physical_id', '')
|
||||||
self.profile_id = profile_id
|
self.profile_id = profile_id
|
||||||
self.project = kwargs.get('project', None)
|
self.user = kwargs.get('user', '')
|
||||||
|
self.project = kwargs.get('project', '')
|
||||||
|
self.domain = kwargs.get('domain', '')
|
||||||
self.cluster_id = cluster_id
|
self.cluster_id = cluster_id
|
||||||
self.index = kwargs.get('index', -1)
|
self.index = kwargs.get('index', -1)
|
||||||
self.role = kwargs.get('role', '')
|
self.role = kwargs.get('role', '')
|
||||||
@ -68,7 +70,12 @@ class Node(object):
|
|||||||
self.rt = {}
|
self.rt = {}
|
||||||
|
|
||||||
if context is not None:
|
if context is not None:
|
||||||
self.project = context.project
|
if self.user == '':
|
||||||
|
self.user = context.user
|
||||||
|
if self.project == '':
|
||||||
|
self.project = context.project
|
||||||
|
if self.domain == '':
|
||||||
|
self.domain = context.domain
|
||||||
self._load_runtime_data(context)
|
self._load_runtime_data(context)
|
||||||
|
|
||||||
def _load_runtime_data(self, context):
|
def _load_runtime_data(self, context):
|
||||||
@ -88,7 +95,9 @@ class Node(object):
|
|||||||
'physical_id': self.physical_id,
|
'physical_id': self.physical_id,
|
||||||
'cluster_id': self.cluster_id,
|
'cluster_id': self.cluster_id,
|
||||||
'profile_id': self.profile_id,
|
'profile_id': self.profile_id,
|
||||||
|
'user': self.user,
|
||||||
'project': self.project,
|
'project': self.project,
|
||||||
|
'domain': self.domain,
|
||||||
'index': self.index,
|
'index': self.index,
|
||||||
'role': self.role,
|
'role': self.role,
|
||||||
'init_time': self.init_time,
|
'init_time': self.init_time,
|
||||||
@ -125,7 +134,9 @@ class Node(object):
|
|||||||
kwargs = {
|
kwargs = {
|
||||||
'id': record.id,
|
'id': record.id,
|
||||||
'physical_id': record.physical_id,
|
'physical_id': record.physical_id,
|
||||||
|
'user': record.user,
|
||||||
'project': record.project,
|
'project': record.project,
|
||||||
|
'domain': record.domain,
|
||||||
'index': record.index,
|
'index': record.index,
|
||||||
'role': record.role,
|
'role': record.role,
|
||||||
'init_time': record.init_time,
|
'init_time': record.init_time,
|
||||||
@ -173,7 +184,9 @@ class Node(object):
|
|||||||
'cluster_id': self.cluster_id,
|
'cluster_id': self.cluster_id,
|
||||||
'physical_id': self.physical_id,
|
'physical_id': self.physical_id,
|
||||||
'profile_id': self.profile_id,
|
'profile_id': self.profile_id,
|
||||||
|
'user': self.user,
|
||||||
'project': self.project,
|
'project': self.project,
|
||||||
|
'domain': self.domain,
|
||||||
'index': self.index,
|
'index': self.index,
|
||||||
'role': self.role,
|
'role': self.role,
|
||||||
'init_time': self.init_time,
|
'init_time': self.init_time,
|
||||||
|
Loading…
Reference in New Issue
Block a user