Alessandro Pilotti 10 лет назад
Родитель
Сommit
17ec6422e5

+ 2 - 2
coriolis/conductor/rpc/server.py

@@ -26,7 +26,7 @@ class ConductorServerEndpoint(object):
 
 
     def migrate_instances(self, ctxt, origin, destination, instances):
     def migrate_instances(self, ctxt, origin, destination, instances):
         migration = models.Migration()
         migration = models.Migration()
-        migration.user_id = "todo"
+        migration.id = str(uuid.uuid4())
         migration.status = constants.MIGRATION_STATUS_STARTED
         migration.status = constants.MIGRATION_STATUS_STARTED
         migration.origin = json.dumps(origin)
         migration.origin = json.dumps(origin)
         migration.destination = json.dumps(destination)
         migration.destination = json.dumps(destination)
@@ -39,7 +39,7 @@ class ConductorServerEndpoint(object):
             task.status = constants.TASK_STATUS_STARTED
             task.status = constants.TASK_STATUS_STARTED
             task.task_type = constants.TASK_TYPE_EXPORT
             task.task_type = constants.TASK_TYPE_EXPORT
 
 
-        db_api.add(ctxt, migration)
+        db_api.add_migration(ctxt, migration)
         LOG.info("Migration created: %s", migration.id)
         LOG.info("Migration created: %s", migration.id)
 
 
         for task in migration.tasks:
         for task in migration.tasks:

+ 6 - 3
coriolis/db/api.py

@@ -36,18 +36,21 @@ def db_version(engine):
 def get_migrations(context):
 def get_migrations(context):
     return context.session.query(models.Migration).options(
     return context.session.query(models.Migration).options(
         orm.joinedload("tasks")).filter_by(
         orm.joinedload("tasks")).filter_by(
-        user_id=context.user_id).all()
+        project_id=context.tenant).all()
 
 
 
 
 @enginefacade.reader
 @enginefacade.reader
 def get_migration(context, migration_id):
 def get_migration(context, migration_id):
     return context.session.query(models.Migration).options(
     return context.session.query(models.Migration).options(
         orm.joinedload("tasks")).filter_by(
         orm.joinedload("tasks")).filter_by(
-        user_id=context.user_id, id=migration_id).first()
+        project_id=context.tenant, id=migration_id).first()
 
 
 
 
 @enginefacade.writer
 @enginefacade.writer
-def add(context, migration):
+def add_migration(context, migration):
+    migration.user_id = context.user
+    migration.project_id = context.tenant
+
     context.session.add(migration)
     context.session.add(migration)
 
 
 
 

+ 5 - 3
coriolis/db/sqlalchemy/migrate_repo/versions/001_initial.py

@@ -9,11 +9,13 @@ def upgrade(migrate_engine):
 
 
     migration = sqlalchemy.Table(
     migration = sqlalchemy.Table(
         'migration', meta,
         'migration', meta,
-        sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True,
-                          nullable=False),
+        sqlalchemy.Column("id", sqlalchemy.String(36), primary_key=True,
+                          default=lambda: str(uuid.uuid4())),
         sqlalchemy.Column('created_at', sqlalchemy.DateTime),
         sqlalchemy.Column('created_at', sqlalchemy.DateTime),
         sqlalchemy.Column('updated_at', sqlalchemy.DateTime),
         sqlalchemy.Column('updated_at', sqlalchemy.DateTime),
         sqlalchemy.Column("user_id", sqlalchemy.String(255), nullable=False),
         sqlalchemy.Column("user_id", sqlalchemy.String(255), nullable=False),
+        sqlalchemy.Column("project_id", sqlalchemy.String(255),
+                          nullable=False),
         sqlalchemy.Column("origin", sqlalchemy.String(1024), nullable=False),
         sqlalchemy.Column("origin", sqlalchemy.String(1024), nullable=False),
         sqlalchemy.Column("destination", sqlalchemy.String(1024),
         sqlalchemy.Column("destination", sqlalchemy.String(1024),
                           nullable=False),
                           nullable=False),
@@ -28,7 +30,7 @@ def upgrade(migrate_engine):
                           default=lambda: str(uuid.uuid4())),
                           default=lambda: str(uuid.uuid4())),
         sqlalchemy.Column('created_at', sqlalchemy.DateTime),
         sqlalchemy.Column('created_at', sqlalchemy.DateTime),
         sqlalchemy.Column('updated_at', sqlalchemy.DateTime),
         sqlalchemy.Column('updated_at', sqlalchemy.DateTime),
-        sqlalchemy.Column("migration_id", sqlalchemy.Integer,
+        sqlalchemy.Column("migration_id", sqlalchemy.String(36),
                           sqlalchemy.ForeignKey('migration.id'),
                           sqlalchemy.ForeignKey('migration.id'),
                           nullable=False),
                           nullable=False),
         sqlalchemy.Column("instance", sqlalchemy.String(1024), nullable=False),
         sqlalchemy.Column("instance", sqlalchemy.String(1024), nullable=False),

+ 24 - 22
coriolis/db/sqlalchemy/models.py

@@ -1,11 +1,9 @@
 import uuid
 import uuid
 
 
 from oslo_db.sqlalchemy import models
 from oslo_db.sqlalchemy import models
+import sqlalchemy
 from sqlalchemy.ext import declarative
 from sqlalchemy.ext import declarative
-from sqlalchemy.orm import relationship, backref
-from sqlalchemy import (Column, Index, Integer, BigInteger, Enum, String,
-                        schema, Unicode)
-from sqlalchemy import ForeignKey, DateTime, Boolean, Text, Float
+from sqlalchemy import orm
 
 
 BASE = declarative.declarative_base()
 BASE = declarative.declarative_base()
 
 
@@ -13,28 +11,32 @@ BASE = declarative.declarative_base()
 class Task(BASE, models.TimestampMixin, models.ModelBase):
 class Task(BASE, models.TimestampMixin, models.ModelBase):
     __tablename__ = 'task'
     __tablename__ = 'task'
 
 
-    id = Column(String(36), default=lambda: str(uuid.uuid4()),
-                primary_key=True)
-    migration_id = Column(Integer,
-                          ForeignKey('migration.id'),
-                          nullable=False)
+    id = sqlalchemy.Column(sqlalchemy.String(36),
+                           default=lambda: str(uuid.uuid4()),
+                           primary_key=True)
+    migration_id = sqlalchemy.Column(sqlalchemy.String(36),
+                                     sqlalchemy.ForeignKey('migration.id'),
+                                     nullable=False)
     # migration = relationship("Migration",
     # migration = relationship("Migration",
     # backref=backref("tasks"), lazy='joined')
     # backref=backref("tasks"), lazy='joined')
-    instance = Column(String(1024), nullable=False)
-    host = Column(String(1024), nullable=True)
-    process_id = Column(Integer, nullable=True)
-    status = Column(String(100), nullable=False)
-    task_type = Column(String(100), nullable=False)
-    exception_details = Column(Text, nullable=True)
+    instance = sqlalchemy.Column(sqlalchemy.String(1024), nullable=False)
+    host = sqlalchemy.Column(sqlalchemy.String(1024), nullable=True)
+    process_id = sqlalchemy.Column(sqlalchemy.Integer, nullable=True)
+    status = sqlalchemy.Column(sqlalchemy.String(100), nullable=False)
+    task_type = sqlalchemy.Column(sqlalchemy.String(100), nullable=False)
+    exception_details = sqlalchemy.Column(sqlalchemy.Text, nullable=True)
 
 
 
 
 class Migration(BASE, models.TimestampMixin, models.ModelBase):
 class Migration(BASE, models.TimestampMixin, models.ModelBase):
     __tablename__ = 'migration'
     __tablename__ = 'migration'
 
 
-    id = Column(Integer, primary_key=True)
-    user_id = Column(String(255), nullable=False)
-    origin = Column(String(1024), nullable=False)
-    destination = Column(String(1024), nullable=False)
-    status = Column(String(100), nullable=False)
-    tasks = relationship(Task, cascade="all,delete",
-                         backref=backref('migration'))
+    id = sqlalchemy.Column(sqlalchemy.String(36),
+                           default=lambda: str(uuid.uuid4()),
+                           primary_key=True)
+    user_id = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
+    project_id = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
+    origin = sqlalchemy.Column(sqlalchemy.String(1024), nullable=False)
+    destination = sqlalchemy.Column(sqlalchemy.String(1024), nullable=False)
+    status = sqlalchemy.Column(sqlalchemy.String(100), nullable=False)
+    tasks = orm.relationship(Task, cascade="all,delete",
+                             backref=orm.backref('migration'))