コード例 #1
0
        public SparseConditionalConstantPropagation(BasicBlocks basicBlocks, ITraceFactory traceFactory)
        {
            this.TraceFactory = traceFactory;
            this.BasicBlocks = basicBlocks;

            MainTrace = CreateTrace("SparseConditionalConstantPropagation");

            // Method is empty - must be a plugged method
            if (BasicBlocks.HeadBlocks.Count == 0)
                return;

            blockStates = new bool[BasicBlocks.Count];

            for (int i = 0; i < BasicBlocks.Count; i++)
            {
                blockStates[i] = false;
            }

            // Initialize
            foreach (var block in BasicBlocks.HeadBlocks)
            {
                AddExecutionBlock(block);
            }

            while (blockWorklist.Count > 0 || instructionWorkList.Count > 0)
            {
                ProcessBlocks();
                ProcessInstructions();
            }

            DumpTrace();

            // Release
            phiStatements = null;
        }
コード例 #2
0
ファイル: EdgeApplication.cs プロジェクト: anurse/Edge
        // Consumers should use IoC or the Default UseEdge extension method to initialize this.
        public EdgeApplication(
            IFileSystem fileSystem,
            string virtualRoot,
            IRouter router,
            ICompilationManager compiler,
            IPageActivator activator,
            IPageExecutor executor,
            ITraceFactory tracer)
            : this()
        {
            Requires.NotNull(fileSystem, "fileSystem");
            Requires.NotNullOrEmpty(virtualRoot, "virtualRoot");
            Requires.NotNull(router, "router");
            Requires.NotNull(compiler, "compiler");
            Requires.NotNull(activator, "activator");
            Requires.NotNull(executor, "executor");
            Requires.NotNull(tracer, "tracer");

            FileSystem = fileSystem;
            VirtualRoot = virtualRoot;
            Router = router;
            CompilationManager = compiler;
            Executor = executor;
            Activator = activator;
            Tracer = tracer;
        }
コード例 #3
0
ファイル: NullRepository.cs プロジェクト: sr457/kudu
 public NullRepository(IEnvironment environment, ITraceFactory traceFactory, HttpContextBase httpContext)
 {
     _environment = environment;
     _traceFactory = traceFactory;
     _httpContext = httpContext;
     _changeSetKey = Path.Combine(_environment.RepositoryPath, "changeset");
 }
コード例 #4
0
ファイル: TriggeredJobRunLogger.cs プロジェクト: hackmp/kudu
        private static void OldRunsCleanup(string jobName, IFileSystem fileSystem, IEnvironment environment, ITraceFactory traceFactory, IDeploymentSettingsManager settings)
        {
            // if max is 5 and we have 5 we still want to remove one to make room for the next
            // that's why we decrement max value by 1
            int maxRuns = settings.GetMaxJobRunsHistoryCount() - 1;

            string historyPath = Path.Combine(environment.JobsDataPath, Constants.TriggeredPath, jobName);
            DirectoryInfoBase historyDirectory = fileSystem.DirectoryInfo.FromDirectoryName(historyPath);
            if (!historyDirectory.Exists)
            {
                return;
            }

            DirectoryInfoBase[] historyRunsDirectories = historyDirectory.GetDirectories();
            if (historyRunsDirectories.Length <= maxRuns)
            {
                return;
            }

            var directoriesToRemove = historyRunsDirectories.OrderByDescending(d => d.Name).Skip(maxRuns);
            foreach (DirectoryInfoBase directory in directoriesToRemove)
            {
                try
                {
                    directory.Delete(true);
                }
                catch (Exception ex)
                {
                    traceFactory.GetTracer().TraceError(ex);
                }
            }
        }
コード例 #5
0
        // Consumers should use IoC or the Default UseRazor extension method to initialize this.
        public RazorApplication(
            AppFunc nextApp,
            IFileSystem fileSystem,
            string virtualRoot,
            IRouter router,
            ICompilationManager compiler,
            IPageActivator activator,
            IPageExecutor executor,
            ITraceFactory tracer)
            : this(nextApp)
        {
            Requires.NotNull(fileSystem, "fileSystem");
            Requires.NotNullOrEmpty(virtualRoot, "virtualRoot");
            Requires.NotNull(router, "router");
            Requires.NotNull(compiler, "compiler");
            Requires.NotNull(activator, "activator");
            Requires.NotNull(executor, "executor");
            Requires.NotNull(tracer, "tracer");

            FileSystem = fileSystem;
            VirtualRoot = virtualRoot;
            Router = router;
            CompilationManager = compiler;
            Executor = executor;
            Activator = activator;
            Tracer = tracer;

            ITrace global = Tracer.ForApplication();
            global.WriteLine("Started at '{0}'", VirtualRoot);
        }
コード例 #6
0
ファイル: LibGit2SharpRepository.cs プロジェクト: sr457/kudu
 public LibGit2SharpRepository(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory tracerFactory)
 {
     _tracerFactory = tracerFactory;
     _settings = settings;
     RepositoryPath = environment.RepositoryPath;
     _legacyGitExeRepository = new GitExeRepository(environment, settings, tracerFactory);
 }
コード例 #7
0
ファイル: RepositoryFactory.cs プロジェクト: sr457/kudu
 public RepositoryFactory(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, HttpContextBase httpContext)
 {
     _environment = environment;
     _settings = settings;
     _traceFactory = traceFactory;
     _httpContext = httpContext;
 }
コード例 #8
0
ファイル: AutoSwapHandler.cs プロジェクト: Walk4Muscle/kudu
 public AutoSwapHandler(IDeploymentStatusManager deploymentStatusManager, IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory)
 {
     _deploymentStatusManager = deploymentStatusManager;
     _traceFactory = traceFactory;
     _autoSwapSlotName = settings.GetValue("WEBSITE_SWAP_SLOTNAME");
     _autoSwapLockFilePath = Path.Combine(environment.LocksPath, AutoSwapLockFile);
 }
コード例 #9
0
        public SiteExtensionManager(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory)
        {
            _localRepository = new LocalPackageRepository(environment.RootPath + "\\SiteExtensions");
            _traceFactory = traceFactory;

            var remoteSource = new Uri(settings.GetSiteExtensionRemoteUrl());
            _remoteRepository = new DataServicePackageRepository(remoteSource);
        }
コード例 #10
0
ファイル: SSHKeyManager.cs プロジェクト: JamesTryand/kudu
 protected SSHKeyManager(IFileSystem fileSystem, ITraceFactory traceFactory, string sshPath)
 {
     _fileSystem = fileSystem;
     _traceFactory = traceFactory;
     _sshPath = sshPath;
     _id_rsa = Path.Combine(sshPath, PrivateKeyFile);
     _config = Path.Combine(sshPath, ConfigFile);
 }
コード例 #11
0
        public TriggeredJobsScheduler(ITriggeredJobsManager triggeredJobsManager, ITraceFactory traceFactory, IAnalytics analytics, IEnvironment environment)
        {
            _triggeredJobsManager = triggeredJobsManager;
            _traceFactory = traceFactory;
            _environment = environment;

            _jobsFileWatcher = new JobsFileWatcher(triggeredJobsManager.JobsBinariesPath, OnJobChanged, JobSettings.JobSettingsFileName, ListJobNames, traceFactory, analytics);
        }
コード例 #12
0
ファイル: SiteExtensionController.cs プロジェクト: sr457/kudu
 public SiteExtensionController(ISiteExtensionManager manager, IEnvironment environment, ITraceFactory traceFactory, IAnalytics analytics)
 {
     _manager = manager;
     _environment = environment;
     _traceFactory = traceFactory;
     _analytics = analytics;
     _siteExtensionRoot = Path.Combine(_environment.RootPath, "SiteExtensions");
 }
コード例 #13
0
        public TriggeredJobsScheduler(ITriggeredJobsManager triggeredJobsManager, ITraceFactory traceFactory, IEnvironment environment)
        {
            _triggeredJobsManager = triggeredJobsManager;
            _traceFactory = traceFactory;
            _environment = environment;

            _triggeredJobsManager.RegisterExtraEventHandlerForFileChange(OnJobChanged);
        }
コード例 #14
0
 public GitDeploymentRepository(string path, ITraceFactory traceFactory)
 {
     _gitExe = new GitExecutable(path);
     _gitExe.SetTraceLevel(2);
     _traceFactory = traceFactory;
     _repository = new GitExeRepository(path, traceFactory);
     _repository.SetTraceLevel(2);
 }
コード例 #15
0
        protected FilePerJobLogger(string jobName, string jobType, string statusFileName, string jobLogFileName, IEnvironment environment, ITraceFactory traceFactory)
            : base(statusFileName, environment, traceFactory)
        {
            _historyPath = Path.Combine(environment.JobsDataPath, jobType, jobName);
            FileSystemHelpers.EnsureDirectory(_historyPath);

            _logFilePath = GetLogFilePath(jobLogFileName);
        }
コード例 #16
0
        public ContinuousJobRunner(string jobName, IEnvironment environment, IFileSystem fileSystem, IDeploymentSettingsManager settings, ITraceFactory traceFactory, IAnalytics analytics)
            : base(jobName, Constants.ContinuousPath, environment, fileSystem, settings, traceFactory, analytics)
        {
            _continuousJobLogger = new ContinuousJobLogger(jobName, Environment, FileSystem, TraceFactory);

            _disableFilePath = Path.Combine(JobBinariesPath, "disable.job");
            _singletonFilePath = Path.Combine(JobBinariesPath, "singleton.job");
        }
コード例 #17
0
ファイル: ContinuousJobRunner.cs プロジェクト: jeddawson/kudu
        public ContinuousJobRunner(ContinuousJob continuousJob, IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, IAnalytics analytics)
            : base(continuousJob.Name, Constants.ContinuousPath, environment, settings, traceFactory, analytics)
        {
            _continuousJobLogger = new ContinuousJobLogger(continuousJob.Name, Environment, TraceFactory);

            _disableFilePath = Path.Combine(continuousJob.JobBinariesRootPath, "disable.job");

            _singletonLock = new LockFile(Path.Combine(JobDataPath, "singleton.job.lock"), TraceFactory);
        }
コード例 #18
0
ファイル: GitExeServer.cs プロジェクト: loudej/kudu
 public GitExeServer(string path, IOperationLock initLock, ITraceFactory traceFactory)
 {
     _gitExe = new GitExecutable(path);
     _gitExe.SetTraceLevel(2);
     _traceFactory = traceFactory;
     _repository = new GitExeRepository(path, traceFactory);
     _repository.SetTraceLevel(2);
     _initLock = initLock;
 }
コード例 #19
0
        public SiteExtensionManager(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, HttpContextBase context)
        {
            _localRepository = new LocalPackageRepository(environment.RootPath + "\\SiteExtensions");
            _traceFactory = traceFactory;

            var remoteSource = new Uri(settings.GetSiteExtensionRemoteUrl());
            _remoteRepository = new DataServicePackageRepository(remoteSource);

            _baseUrl = context.Request.Url == null ? "" : context.Request.Url.GetLeftPart(UriPartial.Authority).TrimEnd('/');
        }
コード例 #20
0
ファイル: TriggeredJobRunLogger.cs プロジェクト: 40a/kudu
        private TriggeredJobRunLogger(string jobName, string id, IEnvironment environment, ITraceFactory traceFactory)
            : base(TriggeredStatusFile, environment, traceFactory)
        {
            _id = id;

            _historyPath = Path.Combine(Environment.JobsDataPath, Constants.TriggeredPath, jobName, _id);
            FileSystemHelpers.EnsureDirectory(_historyPath);

            _outputFilePath = Path.Combine(_historyPath, OutputLogFileName);
        }
コード例 #21
0
        public GitExeRepository(string path, string homePath, ITraceFactory profilerFactory)
        {
            _gitExe = new GitExecutable(path);
            _tracerFactory = profilerFactory;

            if (!String.IsNullOrEmpty(homePath))
            {
                _gitExe.SetHomePath(homePath);
            }
        }
コード例 #22
0
        public ContinuousJobLogger(string jobName, IEnvironment environment, IFileSystem fileSystem, ITraceFactory traceFactory)
            : base(GetStatusFileName(), environment, fileSystem, traceFactory)
        {
            _historyPath = Path.Combine(Environment.JobsDataPath, Constants.ContinuousPath, jobName);
            FileSystemHelpers.EnsureDirectory(_historyPath);

            // Lock status file (allowing read and write but not delete) as a way to notify that this status file is valid (shows status of a current working instance)
            _logFilePath = GetLogFilePath(JobLogFileName);
            _lockedStatusFile = File.Open(GetStatusFilePath(), FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);
        }
コード例 #23
0
ファイル: GitExeRepository.cs プロジェクト: GregPerez83/kudu
        public GitExeRepository(string path, string homePath, IDeploymentSettingsManager settings, ITraceFactory profilerFactory)
        {
            _gitExe = new GitExecutable(path, settings.GetCommandIdleTimeout());
            _tracerFactory = profilerFactory;
            _settings = settings;

            if (!String.IsNullOrEmpty(homePath))
            {
                _gitExe.SetHomePath(homePath);
            }
        }
コード例 #24
0
ファイル: GitExeServer.cs プロジェクト: rguerreiro/kudu
        public GitExeServer(string path, IOperationLock initLock, IDeploymentEnvironment deploymentEnvironment, ITraceFactory traceFactory)
        {
            _gitExe = new GitExecutable(path);
            _traceFactory = traceFactory;
            _repository = new GitExeRepository(path, traceFactory);
            _initLock = initLock;

            // Setup the deployment environment variable to be used by the post receive hook
            _gitExe.EnvironmentVariables[KnownEnviornment.EXEPATH] = deploymentEnvironment.ExePath;
            _gitExe.EnvironmentVariables[KnownEnviornment.APPPATH] = deploymentEnvironment.ApplicationPath;
            _gitExe.EnvironmentVariables[KnownEnviornment.MSBUILD] = deploymentEnvironment.MSBuildExtensionsPath;
            _gitExe.EnvironmentVariables[KnownEnviornment.DEPLOYER] = "";
        }
コード例 #25
0
ファイル: GitExeServer.cs プロジェクト: cburgdorf/kudu
        public GitExeServer(string path, IOperationLock initLock, IDeploymentCommandGenerator deploymentCommandGenerator, ITraceFactory traceFactory)
        {
            _gitExe = new GitExecutable(path);
            _gitExe.SetTraceLevel(2);
            _traceFactory = traceFactory;
            _repository = new GitExeRepository(path, traceFactory);
            _repository.SetTraceLevel(2);
            _initLock = initLock;
            _deploymentCommandGenerator = deploymentCommandGenerator;

            // Setup the deployment environment variable to be used by the post receive hook
            _gitExe.EnvironmentVariables[_deploymentCommandGenerator.DeploymentEnvironmentVariable] = _deploymentCommandGenerator.GetDeploymentExePath();
        }
コード例 #26
0
ファイル: SSHKeyManager.cs プロジェクト: 40a/kudu
        public SSHKeyManager(IEnvironment environment, ITraceFactory traceFactory)
        {
            if (environment == null)
            {
                throw new ArgumentNullException("environment");
            }

            _traceFactory = traceFactory ?? NullTracerFactory.Instance;
            _sshPath = environment.SSHKeyPath;
            _id_rsa = Path.Combine(_sshPath, PrivateKeyFile);
            _id_rsaPub = Path.Combine(_sshPath, PublicKeyFile);
            _config = Path.Combine(_sshPath, ConfigFile);
        }
コード例 #27
0
        public SiteExtensionManager(IContinuousJobsManager continuousJobManager, ITriggeredJobsManager triggeredJobManager, IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, HttpContextBase context, IAnalytics analytics)
        {
            _rootPath = Path.Combine(environment.RootPath, "SiteExtensions");
            _baseUrl = context.Request.Url == null ? String.Empty : context.Request.Url.GetLeftPart(UriPartial.Authority).TrimEnd('/');

            _localRepository = GetSourceRepository(_rootPath);
            _continuousJobManager = continuousJobManager;
            _triggeredJobManager = triggeredJobManager;
            _environment = environment;
            _settings = settings;
            _traceFactory = traceFactory;
            _analytics = analytics;
        }
コード例 #28
0
ファイル: TriggeredJobRunLogger.cs プロジェクト: hackmp/kudu
        public static TriggeredJobRunLogger LogNewRun(TriggeredJob triggeredJob, IEnvironment environment, IFileSystem fileSystem, ITraceFactory traceFactory, IDeploymentSettingsManager settings)
        {
            OldRunsCleanup(triggeredJob.Name, fileSystem, environment, traceFactory, settings);

            string id = DateTime.UtcNow.ToString("yyyyMMddHHmmssffff");
            var logger = new TriggeredJobRunLogger(triggeredJob.Name, id, environment, fileSystem, traceFactory);
            var triggeredJobStatus = new TriggeredJobStatus()
            {
                Status = "Initializing",
                StartTime = DateTime.UtcNow
            };
            logger.ReportStatus(triggeredJobStatus);
            return logger;
        }
コード例 #29
0
ファイル: DeploymentManager.cs プロジェクト: loudej/kudu
 public DeploymentManager(IServerRepository serverRepository,
                          ISiteBuilderFactory builderFactory,
                          IEnvironment environment,
                          IFileSystem fileSystem,
                          ITraceFactory traceFactory,
                          IOperationLock deploymentLock)
 {
     _serverRepository = serverRepository;
     _builderFactory = builderFactory;
     _environment = environment;
     _fileSystem = fileSystem;
     _traceFactory = traceFactory;
     _deploymentLock = deploymentLock;
 }
コード例 #30
0
ファイル: BaseJobRunner.cs プロジェクト: uQr/kudu
        protected BaseJobRunner(string jobName, string jobsTypePath, IEnvironment environment,
            IDeploymentSettingsManager settings, ITraceFactory traceFactory, IAnalytics analytics)
        {
            TraceFactory = traceFactory;
            Environment = environment;
            Settings = settings;
            JobName = jobName;
            _analytics = analytics;

            JobBinariesPath = Path.Combine(Environment.JobsBinariesPath, jobsTypePath, jobName);
            JobTempPath = Path.Combine(Environment.TempPath, Constants.JobsPath, jobsTypePath, jobName);
            JobDataPath = Path.Combine(Environment.DataPath, Constants.JobsPath, jobsTypePath, jobName);

            _externalCommandFactory = new ExternalCommandFactory(Environment, Settings, Environment.RepositoryPath);
        }
コード例 #31
0
ファイル: DeploymentManager.cs プロジェクト: yut148/kudu
 public DeploymentManager(ISiteBuilderFactory builderFactory,
                          IEnvironment environment,
                          ITraceFactory traceFactory,
                          IAnalytics analytics,
                          IDeploymentSettingsManager settings,
                          IDeploymentStatusManager status,
                          IOperationLock deploymentLock,
                          ILogger globalLogger,
                          IWebHooksManager hooksManager)
 {
     _builderFactory = builderFactory;
     _environment    = environment;
     _traceFactory   = traceFactory;
     _analytics      = analytics;
     _deploymentLock = deploymentLock;
     _globalLogger   = globalLogger ?? NullLogger.Instance;
     _settings       = settings;
     _status         = status;
     _hooksManager   = hooksManager;
 }
コード例 #32
0
        private static DeploymentManager CreateDeploymentManager(
            ISiteBuilderFactory builderFactory  = null,
            IEnvironment environment            = null,
            IFileSystem fileSystem              = null,
            ITraceFactory traceFactory          = null,
            IDeploymentSettingsManager settings = null,
            IDeploymentStatusManager status     = null,
            IOperationLock deploymentLock       = null,
            ILogger globalLogger = null)
        {
            builderFactory = builderFactory ?? Mock.Of <ISiteBuilderFactory>();
            environment    = environment ?? Mock.Of <IEnvironment>();
            fileSystem     = fileSystem ?? Mock.Of <IFileSystem>();
            traceFactory   = traceFactory ?? Mock.Of <ITraceFactory>();
            settings       = settings ?? Mock.Of <IDeploymentSettingsManager>();
            status         = status ?? Mock.Of <IDeploymentStatusManager>();
            deploymentLock = deploymentLock ?? Mock.Of <IOperationLock>();
            globalLogger   = globalLogger ?? Mock.Of <ILogger>();

            return(new DeploymentManager(builderFactory, environment, fileSystem, traceFactory, settings, status, deploymentLock, globalLogger));
        }
コード例 #33
0
ファイル: JobsFileWatcher.cs プロジェクト: SeanDongX/kudu
        public JobsFileWatcher(
            string watchedDirectoryPath,
            Action <string> onJobChanged,
            string filter,
            Func <IEnumerable <string> > listJobNames,
            ITraceFactory traceFactory,
            IAnalytics analytics)
        {
            _traceFactory         = traceFactory;
            _analytics            = analytics;
            _watchedDirectoryPath = watchedDirectoryPath;
            _onJobChanged         = onJobChanged;
            _filter       = filter;
            _listJobNames = listJobNames;

            _makeChangesTimer      = new Timer(OnMakeChanges);
            _startFileWatcherTimer = new Timer(StartWatcher);
            _startFileWatcherTimer.Change(0, Timeout.Infinite);

            FirstTimeMakingChanges = true;
        }
コード例 #34
0
        public static TJobStatus ReadJobStatusFromFile <TJobStatus>(ITraceFactory traceFactory, string statusFilePath) where TJobStatus : class, IJobStatus
        {
            try
            {
                if (!FileSystemHelpers.FileExists(statusFilePath))
                {
                    return(null);
                }

                return(OperationManager.Attempt(() =>
                {
                    string content = FileSystemHelpers.ReadAllTextFromFile(statusFilePath).Trim();
                    return JsonConvert.DeserializeObject <TJobStatus>(content, JsonSerializerSettings);
                }));
            }
            catch (Exception ex)
            {
                traceFactory.GetTracer().TraceError(ex);
                return(null);
            }
        }
コード例 #35
0
        private LockFile MockLockFile(string path, ITraceFactory traceFactory = null, IFileSystem fileSystem = null)
        {
            traceFactory = traceFactory ?? NullTracerFactory.Instance;

            if (fileSystem == null)
            {
                var locked = false;
                var stream = new Mock <Stream>(MockBehavior.Strict);
                var fs     = new Mock <IFileSystem>(MockBehavior.Strict);
                stream.Setup(s => s.Close())
                .Callback(() =>
                {
                    locked = false;
                });
                fs.Setup(f => f.Directory.Exists(Path.GetDirectoryName(path)))
                .Returns(true);
                fs.Setup(f => f.File.Exists(path))
                .Returns(() => true);
                fs.Setup(f => f.File.Delete(path));
                fs.Setup(f => f.File.Open(path, It.IsAny <FileMode>(), FileAccess.Write, FileShare.None))
                .Returns(() =>
                {
                    lock (stream)
                    {
                        if (locked)
                        {
                            throw new IOException();
                        }
                        locked = true;
                        return(stream.Object);
                    }
                });

                fileSystem = fs.Object;
            }

            FileSystemHelpers.Instance = fileSystem;

            return(new LockFile(path, traceFactory));
        }
コード例 #36
0
ファイル: TraceController.cs プロジェクト: gvondra/BrassLoon
        public async Task <IActionResult> GetEventCode([FromRoute] Guid?domainId)
        {
            IActionResult result = null;

            try
            {
                if (result == null && (!domainId.HasValue || domainId.Value.Equals(Guid.Empty)))
                {
                    result = BadRequest("Missing domain id parameter value");
                }
                if (result == null)
                {
                    using ILifetimeScope scope = _container.BeginLifetimeScope();
                    SettingsFactory settingsFactory = scope.Resolve <SettingsFactory>();
                    if (!(await VerifyDomainAccount(domainId.Value, settingsFactory, _settings.Value, scope.Resolve <IDomainService>())))
                    {
                        result = StatusCode(StatusCodes.Status401Unauthorized);
                    }
                    else
                    {
                        CoreSettings  settings     = settingsFactory.CreateCore(_settings.Value);
                        ITraceFactory traceFactory = scope.Resolve <ITraceFactory>();
                        result = Ok(
                            await traceFactory.GetEventCodes(settings, domainId.Value)
                            );
                    }
                }
            }
            catch (Exception ex)
            {
                using (ILifetimeScope scope = _container.BeginLifetimeScope())
                {
                    await LogException(ex, scope.Resolve <IExceptionService>(), scope.Resolve <SettingsFactory>(), _settings.Value);
                }
                result = StatusCode(StatusCodes.Status500InternalServerError);
            }
            return(result);
        }
コード例 #37
0
        public GitExeServer(IEnvironment environment,
                            IOperationLock initLock,
                            string logFileEnv,
                            IRepositoryFactory repositoryFactory,
                            IDeploymentEnvironment deploymentEnvironment,
                            IDeploymentSettingsManager settings,
                            ITraceFactory traceFactory)
        {
            _gitExe = new GitExecutable(environment.RepositoryPath, settings.GetCommandIdleTimeout());
            _gitExe.SetHomePath(environment.SiteRootPath);
            _traceFactory      = traceFactory;
            _initLock          = initLock;
            _repositoryFactory = repositoryFactory;

            // Transfer logFileEnv => git.exe => kudu.exe, this represent per-request tracefile
            _gitExe.EnvironmentVariables[Constants.TraceFileEnvKey] = logFileEnv;

            // Setup the deployment environment variable to be used by the post receive hook
            _gitExe.EnvironmentVariables[KnownEnvironment.EXEPATH]  = deploymentEnvironment.ExePath;
            _gitExe.EnvironmentVariables[KnownEnvironment.APPPATH]  = deploymentEnvironment.ApplicationPath;
            _gitExe.EnvironmentVariables[KnownEnvironment.MSBUILD]  = deploymentEnvironment.MSBuildExtensionsPath;
            _gitExe.EnvironmentVariables[KnownEnvironment.DEPLOYER] = "";
        }
コード例 #38
0
        public SparseConditionalConstantPropagation(BasicBlocks basicBlocks, ITraceFactory traceFactory)
        {
            this.TraceFactory = traceFactory;
            this.BasicBlocks  = basicBlocks;

            MainTrace = CreateTrace("SparseConditionalConstantPropagation");

            // Method is empty - must be a plugged method
            if (BasicBlocks.HeadBlocks.Count == 0)
            {
                return;
            }

            blockStates = new bool[BasicBlocks.Count];

            for (int i = 0; i < BasicBlocks.Count; i++)
            {
                blockStates[i] = false;
            }

            // Initialize
            foreach (var block in BasicBlocks.HeadBlocks)
            {
                AddExecutionBlock(block);
            }

            while (blockWorklist.Count > 0 || instructionWorkList.Count > 0)
            {
                ProcessBlocks();
                ProcessInstructions();
            }

            DumpTrace();

            // Release
            phiStatements = null;
        }
コード例 #39
0
        private static DeploymentManager CreateDeploymentManager(
            ISiteBuilderFactory builderFactory = null,
            IEnvironment environment           = null,
            IFileSystem fileSystem             = null,
            ITraceFactory traceFactory         = null,
            IAnalytics analytics = null,
            IDeploymentSettingsManager settings = null,
            IDeploymentStatusManager status     = null,
            IOperationLock deploymentLock       = null,
            ILogger globalLogger          = null,
            IWebHooksManager hooksManager = null)
        {
            builderFactory             = builderFactory ?? Mock.Of <ISiteBuilderFactory>();
            environment                = environment ?? Mock.Of <IEnvironment>();
            FileSystemHelpers.Instance = fileSystem ?? Mock.Of <IFileSystem>();
            traceFactory               = traceFactory ?? Mock.Of <ITraceFactory>();
            analytics      = analytics ?? Mock.Of <IAnalytics>();
            settings       = settings ?? Mock.Of <IDeploymentSettingsManager>();
            status         = status ?? Mock.Of <IDeploymentStatusManager>();
            deploymentLock = deploymentLock ?? Mock.Of <IOperationLock>();
            globalLogger   = globalLogger ?? Mock.Of <ILogger>();

            return(new DeploymentManager(builderFactory, environment, traceFactory, analytics, settings, status, deploymentLock, globalLogger, hooksManager, Mock.Of <IAutoSwapHandler>(), Mock.Of <IFunctionManager>()));
        }
コード例 #40
0
 public FunctionController(IFunctionManager manager, ITraceFactory traceFactory, IEnvironment environment)
 {
     _manager      = manager;
     _traceFactory = traceFactory;
     _environment  = environment;
 }
コード例 #41
0
 public GitExeRepository(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory profilerFactory)
 {
     _gitExe                  = new GitExecutable(environment.RepositoryPath, settings.GetCommandIdleTimeout());
     _tracerFactory           = profilerFactory;
     _settings                = settings;
     SkipPostReceiveHookCheck = false;
     _gitExe.SetHomePath(environment);
     _environment = environment;
 }
コード例 #42
0
        public SiteExtensionManager(IContinuousJobsManager continuousJobManager, ITriggeredJobsManager triggeredJobManager, IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, HttpContextBase context, IAnalytics analytics)
        {
            _rootPath = Path.Combine(environment.RootPath, "SiteExtensions");
            _baseUrl  = context.Request.Url == null ? String.Empty : context.Request.Url.GetLeftPart(UriPartial.Authority).TrimEnd('/');

            _localRepository      = GetSourceRepository(_rootPath);
            _continuousJobManager = continuousJobManager;
            _triggeredJobManager  = triggeredJobManager;
            _environment          = environment;
            _settings             = settings;
            _traceFactory         = traceFactory;
            _analytics            = analytics;
        }
コード例 #43
0
ファイル: LockFile.cs プロジェクト: sathirayee/kudu
 public LockFile(string path, ITraceFactory traceFactory)
 {
     _path         = Path.GetFullPath(path);
     _traceFactory = traceFactory;
 }
コード例 #44
0
 public RepositoryFactory(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory)
 {
     _environment  = environment;
     _settings     = settings;
     _traceFactory = traceFactory;
 }
コード例 #45
0
 public ArtifactDeploymentInfo(IEnvironment environment, ITraceFactory traceFactory)
 {
     _environment  = environment;
     _traceFactory = traceFactory;
 }
コード例 #46
0
 protected AggregateJobsManagerBase(JobsManagerBase <TJob> primaryManager, Func <IEnumerable <string>, JobsManagerBase <TJob> > secondaryManagerFactory, IDeploymentSettingsManager settings, IEnvironment environment, ITraceFactory traceFactory, string jobType)
 {
     PrimaryJobManager = primaryManager;
     // pass the list of primary job names so the second manager can excluded them
     SecondaryJobManager = secondaryManagerFactory(PrimaryJobManager.ListJobs(forceRefreshCache: false).Select(j => j.Name));
     _settings           = settings;
     _environment        = environment;
     _traceFactory       = traceFactory;
     _jobType            = jobType;
 }
コード例 #47
0
 public ContinuousJobsManager(ITraceFactory traceFactory, IEnvironment environment, IDeploymentSettingsManager settings, IAnalytics analytics)
     : base(traceFactory, environment, settings, analytics, Constants.ContinuousPath)
 {
     RegisterExtraEventHandlerForFileChange(OnJobChanged);
 }
コード例 #48
0
 public Analytics(IDeploymentSettingsManager settings, IServerConfiguration serverConfiguration, ITraceFactory traceFactory)
 {
     _settings            = settings;
     _serverConfiguration = serverConfiguration;
     _traceFactory        = traceFactory;
 }
コード例 #49
0
ファイル: LockFile.cs プロジェクト: sanchitmehta/ProjectKudu
 public LockFile(string path, ITraceFactory traceFactory, bool ensureLock = false)
 {
     _path         = Path.GetFullPath(path);
     _traceFactory = traceFactory;
     _ensureLock   = ensureLock;
 }
コード例 #50
0
        public ContinuousJobRunner(string jobName, IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, IAnalytics analytics)
            : base(jobName, Constants.ContinuousPath, environment, settings, traceFactory, analytics)
        {
            _continuousJobLogger = new ContinuousJobLogger(jobName, Environment, TraceFactory);

            _disableFilePath = Path.Combine(JobBinariesPath, "disable.job");

            _singletonLock = new LockFile(Path.Combine(JobDataPath, "singleton.job.lock"), TraceFactory);
        }
コード例 #51
0
        private static int PerformDeploy(
            string appRoot,
            string wapTargets,
            string deployer,
            string lockPath,
            IEnvironment env,
            IDeploymentSettingsManager settingsManager,
            TraceLevel level,
            ITracer tracer,
            ITraceFactory traceFactory,
            IOperationLock deploymentLock)
        {
            System.Environment.SetEnvironmentVariable("GIT_DIR", null, System.EnvironmentVariableTarget.Process);

            // Skip SSL Certificate Validate
            if (System.Environment.GetEnvironmentVariable(SettingsKeys.SkipSslValidation) == "1")
            {
                ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
            }

            // Adjust repo path
            env.RepositoryPath = Path.Combine(env.SiteRootPath, settingsManager.GetRepositoryPath());

            string statusLockPath = Path.Combine(lockPath, Constants.StatusLockFile);
            string hooksLockPath  = Path.Combine(lockPath, Constants.HooksLockFile);

            IOperationLock statusLock = new LockFile(statusLockPath, traceFactory);
            IOperationLock hooksLock  = new LockFile(hooksLockPath, traceFactory);

            IBuildPropertyProvider buildPropertyProvider = new BuildPropertyProvider();
            ISiteBuilderFactory    builderFactory        = new SiteBuilderFactory(buildPropertyProvider, env);
            var logger = new ConsoleLogger();

            IRepository gitRepository;

            if (settingsManager.UseLibGit2SharpRepository())
            {
                gitRepository = new LibGit2SharpRepository(env, settingsManager, traceFactory);
            }
            else
            {
                gitRepository = new GitExeRepository(env, settingsManager, traceFactory);
            }

            IServerConfiguration serverConfiguration = new ServerConfiguration();
            IAnalytics           analytics           = new Analytics(settingsManager, serverConfiguration, traceFactory);

            IWebHooksManager         hooksManager            = new WebHooksManager(tracer, env, hooksLock);
            IDeploymentStatusManager deploymentStatusManager = new DeploymentStatusManager(env, analytics, statusLock);
            IDeploymentManager       deploymentManager       = new DeploymentManager(builderFactory,
                                                                                     env,
                                                                                     traceFactory,
                                                                                     analytics,
                                                                                     settingsManager,
                                                                                     deploymentStatusManager,
                                                                                     deploymentLock,
                                                                                     GetLogger(env, level, logger),
                                                                                     hooksManager);

            var step = tracer.Step(XmlTracer.ExecutingExternalProcessTrace, new Dictionary <string, string>
            {
                { "type", "process" },
                { "path", "kudu.exe" },
                { "arguments", appRoot + " " + wapTargets }
            });

            using (step)
            {
                try
                {
                    // although the api is called DeployAsync, most expensive works are done synchronously.
                    // need to launch separate task to go async explicitly (consistent with FetchDeploymentManager)
                    var deploymentTask = Task.Run(async() => await deploymentManager.DeployAsync(gitRepository, changeSet: null, deployer: deployer, clean: false));

#pragma warning disable 4014
                    // Track pending task
                    PostDeploymentHelper.TrackPendingOperation(deploymentTask, TimeSpan.Zero);
#pragma warning restore 4014

                    deploymentTask.Wait();

                    if (PostDeploymentHelper.IsAutoSwapEnabled())
                    {
                        string                branch     = settingsManager.GetBranch();
                        ChangeSet             changeSet  = gitRepository.GetChangeSet(branch);
                        IDeploymentStatusFile statusFile = deploymentStatusManager.Open(changeSet.Id);
                        if (statusFile != null && statusFile.Status == DeployStatus.Success)
                        {
                            PostDeploymentHelper.PerformAutoSwap(env.RequestId, new PostDeploymentTraceListener(tracer, deploymentManager.GetLogger(changeSet.Id))).Wait();
                        }
                    }
                }
                catch (Exception e)
                {
                    tracer.TraceError(e);

                    System.Console.Error.WriteLine(e.GetBaseException().Message);
                    System.Console.Error.WriteLine(Resources.Log_DeploymentError);
                    return(1);
                }
            }

            if (logger.HasErrors)
            {
                System.Console.Error.WriteLine(Resources.Log_DeploymentError);
                return(1);
            }

            return(0);
        }
コード例 #52
0
ファイル: ContinuousJobLogger.cs プロジェクト: phaniac/kudu-1
 public ContinuousJobLogger(string jobName, IEnvironment environment, ITraceFactory traceFactory)
     : base(jobName, Constants.ContinuousPath, GetStatusFileName(), JobLogFileName, environment, traceFactory)
 {
     // Lock status file (allowing read and write but not delete) as a way to notify that this status file is valid (shows status of a current working instance)
     ResetLockedStatusFile();
 }
コード例 #53
0
 public BasicRegisterAllocator(BasicBlocks basicBlocks, VirtualRegisters compilerVirtualRegisters, StackLayout stackLayout, BaseArchitecture architecture, ITraceFactory traceFactory)
     : base(basicBlocks, compilerVirtualRegisters, stackLayout, architecture, traceFactory)
 {
 }
コード例 #54
0
 public TriggeredJobRunner(string jobName, IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory traceFactory, IAnalytics analytics)
     : base(jobName, Constants.TriggeredPath, environment, settings, traceFactory, analytics)
 {
     _lockFile = BuildTriggeredJobRunnerLockFile(JobDataPath, TraceFactory);
 }
コード例 #55
0
 public DockerController(ITraceFactory traceFactory, IDeploymentSettingsManager settings, IEnvironment environment)
 {
     _traceFactory = traceFactory;
     _settings     = settings;
     _environment  = environment;
 }
コード例 #56
0
 public static LockFile BuildTriggeredJobRunnerLockFile(string jobDataPath, ITraceFactory traceFactory)
 {
     return(new LockFile(Path.Combine(jobDataPath, "triggeredJob.lock"), traceFactory));
 }
コード例 #57
0
 public LibGit2SharpRepository(IEnvironment environment, IDeploymentSettingsManager settings, ITraceFactory tracerFactory)
 {
     _tracerFactory          = tracerFactory;
     _settings               = settings;
     RepositoryPath          = environment.RepositoryPath;
     _legacyGitExeRepository = new GitExeRepository(environment, settings, tracerFactory);
 }
コード例 #58
0
 private const int lockTimeout            = 1200; //in seconds
 public AllSafeLinuxLock(string path, ITraceFactory traceFactory)
 {
     _traceFactory = traceFactory;
 }
コード例 #59
0
 public DockerController(ITraceFactory traceFactory)
 {
     _traceFactory = traceFactory;
 }
コード例 #60
0
 public FunctionManager(IEnvironment environment, ITraceFactory traceFactory)
 {
     _environment  = environment;
     _traceFactory = traceFactory;
 }