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);
        }
Beispiel #2
0
        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);
        }
Beispiel #8
0
 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);