public ScriptInstallationResults InstallScripts(GenericCredentialInfo credentialInfo)
        {
            var results = new ScriptInstallationResults();

            try
            {
                //Context setup with admin credentials
                results.AppendMessage("Setting database context...");
                this.administrationInstallationRepository.InstallPrimaryServerAdminScripts(credentialInfo);

                //Do a server refresh prior to deployment
                var currentServers = refreshServerService.GetServerList();
                if (currentServers != null && currentServers.Any())
                {
                    refreshServerService.UpdateServerList(currentServers);
                }

                //Get an array of all SQL servers registered in Relativity
                results.AppendMessage("Retrieving server list...");

                var servers = this.serverRepository.ReadAllActive()
                              .Where(s => s.ServerType == ServerType.Database);
                foreach (var server in servers)
                {
                    //Install any per-server scripts that need admin privileges
                    results.AppendMessage($"Installing scripts on {server.ServerName}...");
                    var deploymentResult = databaseDeployer.DeployResource(server, credentialInfo);
                    HandleDeploymentResponse(deploymentResult, results);

                    results.AppendMessage($"Scripts installed on {server.ServerName}.");
                }

                results.AppendMessage("Finished installing per-server scripts.");

                //Update the configuration to indicate that administrative scripts have been installed
                results.AppendMessage("Updating script installation history...");
                this.administrationInstallationRepository.UpdateAdminScriptsRun();
                results.AppendMessage("Installation complete.");

                results.Success = true;
            }
            catch (Exception e)
            {
                results.AppendMessage($"Installation failed. {e}");
                results.Success = false;
            }

            return(results);
        }
        public void HandleDeploymentResponse_Success()
        {
            //Arrange
            var installResults    = new ScriptInstallationResults();
            var deploymentResults = new MigrationResultSet()
            {
                Success = true, Messages = new List <LogMessage>()
                {
                    new LogMessage(LogSeverity.Info, "abc")
                }
            };

            //Act
            AdministrationInstallationService.HandleDeploymentResponse(deploymentResults, installResults);

            //Assert
            Assert.That(installResults.Messages, Is.Not.Empty);
        }
 public static void HandleDeploymentResponse(MigrationResultSet deploymentResults, ScriptInstallationResults installResults)
 {
     deploymentResults.Messages
     .Where(m => m.Severity != LogSeverity.Debug)
     .Select(m => m.Message)
     .ForEach(m => installResults.AppendMessage(
                  "Deploying " + Names.Database.PdbResource + $" script message: {m}"));
 }