Ejemplo n.º 1
0
        public void TestThatExecutionSequenceIsValid()
        {
            var config = new ConDepConfig {
                EnvironmentName = "bogusEnv"
            };
            var server = new ServerConfig {
                Name = "jat-web03"
            };

            config.Servers = new[] { server };

            var infrastructureSequence = new InfrastructureSequence();
            var preOpsSequence         = new PreOpsSequence(new WebDeployHandlerMock());

            var webDeploy             = new WebDeployHandlerMock();
            var infrastructureBuilder = new InfrastructureBuilder(infrastructureSequence, webDeploy);

            _infra.Configure(infrastructureBuilder, config);

            var local = new LocalOperationsBuilder(_sequenceManager.NewLocalSequence("Test"), infrastructureSequence, preOpsSequence, config.Servers, webDeploy);

            _app.Configure(local, config);

            var notification = new Notification();

            Assert.That(_sequenceManager.IsValid(notification));
        }
Ejemplo n.º 2
0
        public void Setup()
        {
            var app = new OnlyIfTestApp();

            var config = new ConDepEnvConfig {
                EnvironmentName = "bogusEnv"
            };
            var server = new ServerConfig {
                Name = "bogusHost"
            };

            config.Servers = new[] { server };

            _sequenceManager = new ExecutionSequenceManager(config.Servers, new DefaultLoadBalancer());

            var settings = new ConDepSettings {
                Config = config
            };

            var local = new LocalOperationsBuilder(_sequenceManager.NewLocalSequence("Test"));

            app.Configure(local, settings);

            _serverInfo = new ServerInfo {
                OperatingSystem = new OperatingSystemInfo {
                    Name = "Windows Server 2012"
                }
            };
        }
Ejemplo n.º 3
0
        public void TestThatExecutionSequenceIsValid()
        {
            var config = new ConDepEnvConfig {
                EnvironmentName = "bogusEnv"
            };
            var server = new ServerConfig {
                Name = "jat-web03"
            };

            config.Servers = new[] { server };

            var sequenceManager = new ExecutionSequenceManager(config.Servers, new DefaultLoadBalancer());

            var settings = new ConDepSettings();

            settings.Config = config;

            var local = new LocalOperationsBuilder(sequenceManager.NewLocalSequence("Test"));

            //Configure.LocalOperations = local;
            _app.Configure(local, settings);

            var notification = new Notification();

            Assert.That(sequenceManager.IsValid(notification));
        }
Ejemplo n.º 4
0
 private void ConfigureAtrifact(IProvideArtifact artifact, ExecutionSequenceManager sequenceManager, ConDepSettings settings)
 {
     if (artifact is Artifact.Local)
     {
         var localSequence = sequenceManager.NewLocalSequence(artifact.GetType().Name);
         var localBuilder  = new LocalOperationsBuilder(localSequence);
         ((Artifact.Local)artifact).Configure(localBuilder, settings);
     }
     else if (artifact is Artifact.Remote)
     {
         var remoteSequence = sequenceManager.NewRemoteSequence(artifact.GetType().Name);
         var remoteBuilder  = new RemoteOperationsBuilder(remoteSequence);
         ((Artifact.Remote)artifact).Configure(remoteBuilder, settings);
     }
 }
Ejemplo n.º 5
0
        private void Execute(Assembly assembly, ConDepConfig envConfig, ConDepOptions options, IReportStatus status)
        {
            if (assembly == null)
            {
                throw new ArgumentException("assembly");
            }
            if (envConfig == null)
            {
                throw new ArgumentException("envSettings");
            }
            if (options == null)
            {
                throw new ArgumentException("options");
            }
            if (status == null)
            {
                throw new ArgumentException("status");
            }

            var applications = CreateApplicationArtifacts(options, assembly);

            if (!options.WebDeployExist)
            {
                var serverValidator = new RemoteServerValidator(envConfig.Servers);
                if (!serverValidator.IsValid())
                {
                    Logger.Error("Not all servers fulfill ConDep's requirements. Aborting execution.");
                    return;
                }
            }

            var webDeploy = new WebDeployHandler();
            var lbLookup  = new LoadBalancerLookup(envConfig.LoadBalancer);

            var sequenceManager = new ExecutionSequenceManager(lbLookup.GetLoadBalancer());

            var notification = new Notification();
            var postOpSeq    = new PostOpsSequence();

            foreach (var application in applications)
            {
                var infrastructureSequence = new InfrastructureSequence();
                var preOpsSequence         = new PreOpsSequence(webDeploy);
                if (!options.DeployOnly)
                {
                    var infrastructureBuilder = new InfrastructureBuilder(infrastructureSequence, webDeploy);
                    Configure.InfrastructureOperations = infrastructureBuilder;

                    if (HasInfrastructureDefined(application))
                    {
                        var infrastructureInstance = GetInfrastructureArtifactForApplication(assembly, application);
                        if (!infrastructureSequence.IsValid(notification))
                        {
                            notification.Throw();
                        }
                        infrastructureInstance.Configure(infrastructureBuilder, envConfig);
                    }
                }

                var local = new LocalOperationsBuilder(sequenceManager.NewLocalSequence(application.GetType().Name), infrastructureSequence, preOpsSequence, envConfig.Servers, webDeploy);
                Configure.LocalOperations = local;

                application.Configure(local, envConfig);
            }

            if (!sequenceManager.IsValid(notification))
            {
                notification.Throw();
            }

            sequenceManager.Execute(status, envConfig, options);
            postOpSeq.Execute(status, options);
        }