Răsfoiți Sursa

Add 'user_scripts' column to base_transfer_action table

Daniel Vincze 5 ani în urmă
părinte
comite
b007e45be4

+ 3 - 0
coriolis/conductor/rpc/server.py

@@ -1505,6 +1505,7 @@ class ConductorServerEndpoint(object):
             replica, licensing_client.RESERVATION_TYPE_REPLICA)
         self._check_replica_running_executions(ctxt, replica)
         self._check_valid_replica_tasks_execution(replica, force)
+        user_scripts = user_scripts or replica.user_scripts
 
         destination_endpoint = self.get_endpoint(
             ctxt, replica.destination_endpoint_id)
@@ -1538,6 +1539,7 @@ class ConductorServerEndpoint(object):
         migration.instances = instances
         migration.replica = replica
         migration.info = replica.info
+        migration.user_scripts = user_scripts
         migration.origin_minion_pool_id = replica.origin_minion_pool_id
         migration.destination_minion_pool_id = (
             replica.destination_minion_pool_id)
@@ -2035,6 +2037,7 @@ class ConductorServerEndpoint(object):
         migration.executions = [execution]
         migration.instances = instances
         migration.info = {}
+        migration.user_scripts = user_scripts
         migration.notes = notes
         migration.shutdown_instances = shutdown_instances
         migration.replication_count = replication_count

+ 17 - 0
coriolis/db/sqlalchemy/migrate_repo/versions/019_adds_user_scripts_column.py

@@ -0,0 +1,17 @@
+# Copyright 2020 Cloudbase Solutions Srl
+# All Rights Reserved.
+
+import sqlalchemy
+
+
+def upgrade(migrate_engine):
+    meta = sqlalchemy.MetaData()
+    meta.bind = migrate_engine
+
+    # add 'user_scripts' column to 'base_transfer_action':
+    base_transfer = sqlalchemy.Table(
+        'base_transfer_action', meta, autoload=True)
+
+    user_scripts = sqlalchemy.Column(
+        "user_scripts", sqlalchemy.Text, nullable=True)
+    base_transfer.create_column(user_scripts)

+ 3 - 1
coriolis/db/sqlalchemy/models.py

@@ -206,6 +206,7 @@ class BaseTransferAction(BASE, models.TimestampMixin, models.ModelBase,
         sqlalchemy.String(36), nullable=True)
     instance_osmorphing_minion_pool_mappings = sqlalchemy.Column(
         types.Json, nullable=False, default=lambda: {})
+    user_scripts = sqlalchemy.Column(types.Json, nullable=True)
 
     __mapper_args__ = {
         'polymorphic_identity': 'base_transfer_action',
@@ -237,7 +238,8 @@ class BaseTransferAction(BASE, models.TimestampMixin, models.ModelBase,
             "origin_minion_pool_id": self.origin_minion_pool_id,
             "destination_minion_pool_id": self.destination_minion_pool_id,
             "instance_osmorphing_minion_pool_mappings":
-                self.instance_osmorphing_minion_pool_mappings
+                self.instance_osmorphing_minion_pool_mappings,
+            "user_scripts": self.user_scripts,
         }
         if include_executions:
             for ex in self.executions: