protected override void InternalGuardedExecute(MigrationParameters parameters) { System.Console.WriteLine(); using(StreamReader streamReader = new StreamReader(parameters.MdlFileName, true)) ServiceProvider.GetService<IMigrationService>().Rollback(parameters.ConnectionString, (int)(parameters.VersionOrStep ?? 1), streamReader); }
protected override void Execute() { MigrationParameters migrationParameters = new MigrationParameters { ContainerName = this.ContainerToMigrate.ContainerName, DestinationShareUncPath = this.DestinationShareUncPath, StorageAccountName = this.ContainerToMigrate.StorageAccountName }; this.WriteVerbose(String.Format( "Input Parameters : ContainerName = {0}, DestinationShareUncPath = {1}, StorageAccountName = {2}", this.ContainerToMigrate.ContainerName, this.DestinationShareUncPath, this.ContainerToMigrate.StorageAccountName)); this.WriteVerbose(String.Format("Container Source share name = {0}", this.ContainerToMigrate.ShareName)); // Workaround, replace \\server\share to ||server|share string sourceShare = this.ContainerToMigrate.ShareName; if (sourceShare.Contains('\\')) { sourceShare = sourceShare.Replace('\\', '|'); this.WriteVerbose(String.Format("Container Source share name After Replacing = {0}", sourceShare)); } MigrateContainerResponse response = this.Client.Shares.MigrateContainer(this.ResourceGroupName, this.FarmName, sourceShare, migrationParameters); //This should display the jobid from http header // use following way to return a hash table. if u want to include any other strings. // this.WriteObject(new Hashtable() { { "JobId", jobId }}, true); string jobId; ExtractOperationIdFromLocationUri(response.Location, out jobId); this.WriteObject(jobId, true); }
protected override void InternalGuardedExecute(MigrationParameters parameters) { System.Console.WriteLine(); using(StreamReader streamReader = new BufferedStreamReader(parameters.MdlFileName, true)) ServiceProvider.GetService<IMigrationService>().Migrate(parameters.ConnectionString, parameters.VersionOrStep.Value, streamReader); }
protected override void InternalExecute(MigrationParameters parameters) { IEnvironment environment = ServiceProvider.GetService<IEnvironment>(); if(environment.Properties[AllowDowngrade] != null) { bool allowDowngrade = bool.Parse(environment.Properties[AllowDowngrade].ToLowerInvariant()); if(!allowDowngrade) { IMigrationVersionInfoManager migrationVersionInfoManager = ServiceProvider.GetService<IMigrationVersionInfoManager>(); long currentMigrationVersion = DbUtil.ExecuteInTransaction<long>(ServiceProvider.GetService<IDbPlatform>(), parameters.ConnectionString, delegate(IDbTransaction transaction) { return migrationVersionInfoManager.GetCurrentMigrationVersion(transaction); }); if(parameters.Command == MigrationCommand.Downgrade || parameters.Command == MigrationCommand.Redo || parameters.Command == MigrationCommand.Rollback || (parameters.Command == MigrationCommand.Migrate && parameters.VersionOrStep < currentMigrationVersion)) { throw new MigrationException(string.Format(Resources.EnvironmentDoesNotAllowDowngrades, parameters.Environment, AllowDowngrade)); } // if } // if } // if InternalGuardedExecute(parameters); }
protected override void InternalExecute(MigrationParameters parameters) { System.Console.WriteLine(); using(new ConsoleStylingScope(ConsoleColor.Yellow)) System.Console.WriteLine("Deploying '{0}'", parameters.ConnectionString); ServiceProvider.GetService<IDeploymentService>().Deploy(ServiceProvider.GetService<IDbPlatform>(), parameters.ConnectionString); }
/// <summary> /// Executes the current command. /// </summary> /// <param name="parameters"></param> protected override void InternalExecute(MigrationParameters parameters) { var migrationVersionInfoManager = ServiceProvider.GetService<IMigrationVersionInfoManager>(); var dbPlatform = ServiceProvider.GetService<IDbPlatform>(); var currentMigrationVersion = MigrationVersionInfoManagerUtil.GetCurrentMigrationVersion( migrationVersionInfoManager, dbPlatform, parameters.ConnectionString); var registeredMigrationVersions = MigrationVersionInfoManagerUtil.GetRegisteredMigrationVersions( migrationVersionInfoManager, dbPlatform, parameters.ConnectionString); if(currentMigrationVersion == 0) { using(new ConsoleStylingScope(ConsoleColor.Yellow)) System.Console.WriteLine(Environment.NewLine + Resources.DatabaseIsNotVersioned); return; } // if System.Console.WriteLine(); using(new ConsoleStylingScope(ConsoleColor.Green)) { System.Console.WriteLine(Resources.CurrentDatabaseVersionInfo, currentMigrationVersion); if(registeredMigrationVersions.Count == 0) return; System.Console.WriteLine(Resources.RegisteredDatabaseVersionsInfo); foreach(var registeredVersion in registeredMigrationVersions) System.Console.WriteLine(Resources.RegisteredDatabaseVersionInfo, registeredVersion); } // using if(string.IsNullOrEmpty(parameters.MdlFileName)) return; var msc = new MigrationScriptCompiler(dbPlatform, new FileSystemNativeSqlResourceProvider(Directory.GetCurrentDirectory()), MigrationMode.Upgrade); var scripts = msc.CompileMigrationScripts(File.OpenText(parameters.MdlFileName)); var first = true; using(new ConsoleStylingScope(ConsoleColor.Yellow)) foreach(var s in scripts) { if(registeredMigrationVersions.Contains(s.MigrationVersion)) continue; if(first) { System.Console.WriteLine(Resources.UnregisteredVersion); first = false; } // if System.Console.WriteLine(@" " + s.MigrationVersion); } // foreach }
/// <summary> /// Executes the current command. /// </summary> /// <param name="parameters"></param> protected override void InternalExecute(MigrationParameters parameters) { IMigrationVersionInfoManager migrationVersionInfoManager = ServiceProvider.GetService<IMigrationVersionInfoManager>(); DbUtil.ExecuteInTransaction(ServiceProvider.GetService<IDbPlatform>(), parameters.ConnectionString, delegate(IDbTransaction transaction) { migrationVersionInfoManager.RegisterMigrationVersion(transaction, MigrationMode.Upgrade, parameters.VersionOrStep.Value); }); System.Console.WriteLine(); using(new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine(Resources.RegisteredVersion, parameters.VersionOrStep.Value); }
public void MigrateThenCancelShare() { RunTest((client) => { var farms = client.Farms.List(ResourceGroupName); foreach (var farm in farms) { var fName = ExtractName(farm.Name); var shares = client.Shares.List(ResourceGroupName, fName); foreach (var share in shares) { var shareName = ""; var storageAccountName = ""; var containerName = ""; var destinationShareUNCPath = ""; var migrationParameters = new MigrationParameters(storageAccountName, containerName, destinationShareUNCPath); var operationId = client.Containers.Migrate(ResourceGroupName, fName, shareName, migrationParameters); client.Containers.CancelMigration(ResourceGroupName, fName, operationId.JobId); } } }); }
protected override void InternalExecute(MigrationParameters parameters) { IAstNode astNode; using(var streamReader = new StreamReader(parameters.MdlFileName)) astNode = new MdlCompiler(null, new Core.Compiler.Environment()).Compile(streamReader, MdlCompilationOptions.InferTypes | MdlCompilationOptions.ResolvePrimaryKeys | MdlCompilationOptions.ResolvePropertyValues | MdlCompilationOptions.ResolveTypeAliases); System.Console.WriteLine(); var migrationNode = (IMigrationNode)astNode; if(migrationNode.Revision == 2) { using(new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine(Resources.MigrationDefinitionIsUpToDate); return; } // if using(new ConsoleStylingScope(ConsoleColor.Yellow)) System.Console.WriteLine(Resources.UpdatingMigrationDefinition, migrationNode.Revision, 2); string migrationDefinition; using(var streamReader = new StreamReader(parameters.MdlFileName)) migrationDefinition = streamReader.ReadToEnd(); migrationDefinition = migrationDefinition.Replace("revision => 1", "revision => 2"); var updateMigration = @"migration ""__wizardby"" revision => 2: version 1: alter table SchemaInfo: add column Module type => String, length => 200, nullable => true"; using(var streamWriter = new StreamWriter(parameters.MdlFileName, false)) streamWriter.WriteLine(migrationDefinition); }
protected override void InternalExecute(MigrationParameters parameters) { System.Console.WriteLine(); using(new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine("Reverse engineering '{0}'", parameters.ConnectionString); IReverseEngineeringService reverseEngineeringService = ServiceProvider.GetService<IReverseEngineeringService>(); IDbPlatform dbPlatform = ServiceProvider.GetService<IDbPlatform>(); IAstNode astNode = reverseEngineeringService.ReverseEngineer(dbPlatform, parameters.ConnectionString); MdlGenerator mdlGenerator = new MdlGenerator(); using(FileStream fs = new FileStream("baseline.mdl", FileMode.Create)) { using(StreamWriter streamWriter = new StreamWriter(fs, Encoding.UTF8)) { mdlGenerator.Generate(astNode, streamWriter); streamWriter.Flush(); } // using } // using }
/// <summary> /// Executes the current command. /// </summary> /// <param name="parameters"></param> protected override void InternalExecute(MigrationParameters parameters) { // // If no MDL file specified, grab the first in the current directory if (string.IsNullOrEmpty(parameters.MdlFileName)) parameters.MdlFileName = new DirectoryInfo(Directory.GetCurrentDirectory()).GetFiles("*.mdl")[0].FullName; // // If extension is omitted, append ".mdl" if (string.IsNullOrEmpty(Path.GetExtension(parameters.MdlFileName))) parameters.MdlFileName = parameters.MdlFileName + ".mdl"; long timestamp = ServiceProvider.GetService<ITimestampProvider>().GetTimestamp(); System.Console.WriteLine(); if(!File.Exists(parameters.MdlFileName)) { using(StreamWriter streamWriter = new StreamWriter(parameters.MdlFileName, false)) streamWriter.Write(Resources.MdlTemplate, Path.GetFileNameWithoutExtension(parameters.MdlFileName), timestamp); using(new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine(Resources.GeneratedFile, Path.GetFullPath(parameters.MdlFileName)); using(StreamWriter streamWriter = new StreamWriter("database.wdi", false)) streamWriter.Write(Resources.WdiTemplate, Path.GetFileNameWithoutExtension(parameters.MdlFileName).ToLowerInvariant()); using (new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine(Resources.GeneratedFile, Path.GetFullPath("database.wdi")); } // if else { using(StreamWriter streamWriter = new StreamWriter(parameters.MdlFileName, true)) streamWriter.Write("{0}{0} version {1}:", Environment.NewLine, timestamp); using(new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine(Resources.GeneratedVersion, timestamp); ResolveDbPlatform(parameters); IEnvironment environment = ServiceProvider.GetService<IEnvironment>(); if(environment.Properties[CreateNativeSqlDirectories] != null && bool.Parse(environment.Properties[CreateNativeSqlDirectories].ToLowerInvariant())) { IDbPlatform dbPlatform = ServiceProvider.GetService<IDbPlatform>(); string nativeResourcesPath = Path.Combine(Directory.GetCurrentDirectory(), string.Format("{0}{1}{2}", DbPlatformUtil.GetDbPlatformAlias(dbPlatform), Path.DirectorySeparatorChar, timestamp)); Directory.CreateDirectory(nativeResourcesPath); var upgradeFilePath = Path.Combine(nativeResourcesPath, "upgrade.sql"); File.WriteAllText(upgradeFilePath, string.Format("/* This is an Upgrade script for {0} for version {1} */", DbPlatformUtil.GetDbPlatformAlias(dbPlatform), timestamp)); var downgradeFilePath = Path.Combine(nativeResourcesPath, "downgrade.sql"); File.WriteAllText(downgradeFilePath, string.Format("/* This is a Downgrade script for {0} for version {1} */", DbPlatformUtil.GetDbPlatformAlias(dbPlatform), timestamp)); using(new ConsoleStylingScope(ConsoleColor.Green)) System.Console.WriteLine(Resources.GeneratedNativeSqlResourcesDirectory, nativeResourcesPath); } // if } // else }
/// <summary> /// Starts a container migration job to migrate containers to the specified /// destination share. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// Resource group name. /// </param> /// <param name='farmId'> /// Farm Id. /// </param> /// <param name='shareName'> /// Share name. /// </param> /// <param name='migrationParameters'> /// The parameters of container migration job. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <MigrationResult> BeginMigrateAsync(this IContainersOperations operations, string resourceGroupName, string farmId, string shareName, MigrationParameters migrationParameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginMigrateWithHttpMessagesAsync(resourceGroupName, farmId, shareName, migrationParameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Starts a container migration job to migrate containers to the specified /// destination share. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// Resource group name. /// </param> /// <param name='farmId'> /// Farm Id. /// </param> /// <param name='shareName'> /// Share name. /// </param> /// <param name='migrationParameters'> /// The parameters of container migration job. /// </param> public static MigrationResult BeginMigrate(this IContainersOperations operations, string resourceGroupName, string farmId, string shareName, MigrationParameters migrationParameters) { return(operations.BeginMigrateAsync(resourceGroupName, farmId, shareName, migrationParameters).GetAwaiter().GetResult()); }
protected override void InternalExecute(MigrationParameters parameters) { }
protected abstract void InternalGuardedExecute(MigrationParameters parameters);