7777import com .cloud .upgrade .dao .VersionVO .Step ;
7878import com .cloud .utils .component .SystemIntegrityChecker ;
7979import com .cloud .utils .db .GlobalLock ;
80+ import com .cloud .utils .db .DbProperties ;
8081import com .cloud .utils .db .ScriptRunner ;
8182import com .cloud .utils .db .TransactionLegacy ;
8283import com .cloud .utils .exception .CloudRuntimeException ;
8384import com .google .common .collect .ImmutableList ;
8485import org .apache .cloudstack .utils .CloudStackVersion ;
8586import org .apache .commons .lang .StringUtils ;
8687import org .apache .log4j .Logger ;
88+ import org .flywaydb .core .Flyway ;
89+ import org .flywaydb .core .api .FlywayException ;
8790
8891import javax .inject .Inject ;
8992import java .io .IOException ;
9699import java .util .HashMap ;
97100import java .util .List ;
98101import java .util .Map ;
102+ import java .util .Properties ;
99103
100104import static com .google .common .base .Preconditions .checkArgument ;
101105import static com .google .common .collect .Lists .newArrayList ;
@@ -631,6 +635,27 @@ public void check() {
631635 } finally {
632636 lock .releaseRef ();
633637 }
638+
639+ s_logger .info ("Running Flyway migration on Cloudstack database" );
640+ Properties dbProps = DbProperties .getDbProperties ();
641+ final String cloudUsername = dbProps .getProperty ("db.cloud.username" );
642+ final String cloudPassword = dbProps .getProperty ("db.cloud.password" );
643+ final String cloudHost = dbProps .getProperty ("db.cloud.host" );
644+ final int cloudPort = Integer .parseInt (dbProps .getProperty ("db.cloud.port" ));
645+ final String dbUrl = "jdbc:mysql://" + cloudHost + ":" + cloudPort + "/cloud" ;
646+
647+ try {
648+ Flyway flyway = new Flyway ();
649+ flyway .setDataSource (dbUrl , cloudUsername , cloudPassword );
650+ flyway .setTable ("cloudstack_schema_version" );
651+ flyway .setBaselineOnMigrate (true );
652+ flyway .setBaselineVersionAsString ("4.11" );
653+ flyway .setLocations ("db/csmigration" );
654+ flyway .migrate ();
655+ } catch (FlywayException fwe ) {
656+ s_logger .error ("Failed to run Flyway migration on Cloudstack database due to " + fwe );
657+ }
658+
634659 }
635660
636661 private static final class NoopDbUpgrade implements DbUpgrade {
@@ -678,4 +703,4 @@ public InputStream[] getCleanupScripts() {
678703 }
679704
680705 }
681- }
706+ }
0 commit comments