示例#1
0
 public InstanceManager(IOptionsFactory <ScriptApplicationHostOptions> optionsFactory, IHttpClientFactory httpClientFactory, IScriptWebHostEnvironment webHostEnvironment,
                        IEnvironment environment, ILogger <InstanceManager> logger, IMetricsLogger metricsLogger, IMeshServiceClient meshServiceClient, IRunFromPackageHandler runFromPackageHandler,
                        IPackageDownloadHandler packageDownloadHandler)
 {
     _client                 = httpClientFactory?.CreateClient() ?? throw new ArgumentNullException(nameof(httpClientFactory));
     _webHostEnvironment     = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment));
     _logger                 = logger ?? throw new ArgumentNullException(nameof(logger));
     _metricsLogger          = metricsLogger;
     _meshServiceClient      = meshServiceClient;
     _runFromPackageHandler  = runFromPackageHandler ?? throw new ArgumentNullException(nameof(runFromPackageHandler));
     _packageDownloadHandler = packageDownloadHandler ?? throw new ArgumentNullException(nameof(packageDownloadHandler));
     _environment            = environment ?? throw new ArgumentNullException(nameof(environment));
     _optionsFactory         = optionsFactory ?? throw new ArgumentNullException(nameof(optionsFactory));
 }
 public InstanceManager(IOptionsFactory <ScriptApplicationHostOptions> optionsFactory, HttpClient client, IScriptWebHostEnvironment webHostEnvironment,
                        IEnvironment environment, ILogger <InstanceManager> logger, IMetricsLogger metricsLogger, IMeshServiceClient meshServiceClient)
 {
     _client             = client ?? throw new ArgumentNullException(nameof(client));
     _webHostEnvironment = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment));
     _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
     _metricsLogger      = metricsLogger;
     _meshServiceClient  = meshServiceClient;
     _environment        = environment ?? throw new ArgumentNullException(nameof(environment));
     _optionsFactory     = optionsFactory ?? throw new ArgumentNullException(nameof(optionsFactory));
 }
 public FunctionsSyncManager(IConfiguration configuration, IHostIdProvider hostIdProvider, IOptionsMonitor <ScriptApplicationHostOptions> applicationHostOptions, ILogger <FunctionsSyncManager> logger, HttpClient httpClient, ISecretManagerProvider secretManagerProvider, IScriptWebHostEnvironment webHostEnvironment, IEnvironment environment, HostNameProvider hostNameProvider, IFunctionMetadataManager functionMetadataManager)
 {
     _applicationHostOptions = applicationHostOptions;
     _logger                  = logger;
     _httpClient              = httpClient;
     _secretManagerProvider   = secretManagerProvider;
     _configuration           = configuration;
     _hostIdProvider          = hostIdProvider;
     _webHostEnvironment      = webHostEnvironment;
     _environment             = environment;
     _hostNameProvider        = hostNameProvider;
     _functionMetadataManager = functionMetadataManager;
 }
        public static IHostBuilder AddWebScriptHost(this IHostBuilder builder, IServiceProvider rootServiceProvider,
                                                    IServiceScopeFactory rootScopeFactory, ScriptApplicationHostOptions webHostOptions, Action <IWebJobsBuilder> configureWebJobs = null)
        {
            ILoggerFactory configLoggerFactory = rootServiceProvider.GetService <ILoggerFactory>();

            builder.UseServiceProviderFactory(new JobHostScopedServiceProviderFactory(rootServiceProvider, rootScopeFactory))
            .ConfigureServices(services =>
            {
                // register default configuration
                // must happen before the script host is added below
                services.ConfigureOptions <HttpOptionsSetup>();
            })
            .AddScriptHost(webHostOptions, configLoggerFactory, webJobsBuilder =>
            {
                webJobsBuilder
                .AddAzureStorageCoreServices();

                configureWebJobs?.Invoke(webJobsBuilder);

                ConfigureRegisteredBuilders(webJobsBuilder, rootServiceProvider);
            })
            .ConfigureAppConfiguration(configurationBuilder =>
            {
                ConfigureRegisteredBuilders(configurationBuilder, rootServiceProvider);
            })
            .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.Services.AddSingleton <ILoggerFactory, ScriptLoggerFactory>();

                loggingBuilder.AddWebJobsSystem <SystemLoggerProvider>();
                loggingBuilder.Services.AddSingleton <ILoggerProvider, UserLogMetricsLoggerProvider>();
                loggingBuilder.Services.AddSingleton <ILoggerProvider>(services =>
                {
                    IEnvironment environment = services.GetService <IEnvironment>();
                    IScriptWebHostEnvironment hostEnvironment = services.GetService <IScriptWebHostEnvironment>();

                    if (!hostEnvironment.InStandbyMode &&
                        !string.IsNullOrEmpty(environment.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteHostName)))
                    {
                        IEventGenerator eventGenerator          = services.GetService <IEventGenerator>();
                        IOptions <ScriptJobHostOptions> options = services.GetService <IOptions <ScriptJobHostOptions> >();
                        return(new AzureMonitorDiagnosticLoggerProvider(options, eventGenerator, environment));
                    }

                    return(NullLoggerProvider.Instance);
                });

                ConfigureRegisteredBuilders(loggingBuilder, rootServiceProvider);
            })
            .ConfigureServices(services =>
            {
                var webHostEnvironment = rootServiceProvider.GetService <IScriptWebHostEnvironment>();
                var environment        = rootServiceProvider.GetService <IEnvironment>();
                if (FunctionsSyncManager.IsSyncTriggersEnvironment(webHostEnvironment, environment))
                {
                    services.AddSingleton <IHostedService, FunctionsSyncService>();
                }

                services.AddSingleton <HttpRequestQueue>();
                services.AddSingleton <IHostLifetime, JobHostHostLifetime>();
                services.TryAddSingleton <IWebJobsExceptionHandler, WebScriptHostExceptionHandler>();
                services.AddSingleton <IScriptJobHostEnvironment, WebScriptJobHostEnvironment>();

                services.AddSingleton <DefaultScriptWebHookProvider>();
                services.TryAddSingleton <IScriptWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());

                // Make sure the registered IHostIdProvider is used
                IHostIdProvider provider = rootServiceProvider.GetService <IHostIdProvider>();
                if (provider != null)
                {
                    services.AddSingleton <IHostIdProvider>(provider);
                }

                // Logging and diagnostics
                services.AddSingleton <IMetricsLogger, WebHostMetricsLogger>();
                services.AddSingleton <IEventCollectorProvider, FunctionInstanceLogCollectorProvider>();

                // Hosted services
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IHostedService, HttpInitializationService>());
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IHostedService, FileMonitoringService>());
            });

            var debugStateProvider = rootServiceProvider.GetService <IDebugStateProvider>();

            if (debugStateProvider.InDebugMode)
            {
                builder.UseEnvironment(EnvironmentName.Development);
            }

            return(builder);
        }
 public StandbyManager(IScriptHostManager scriptHostManager, IWebHostLanguageWorkerChannelManager languageWorkerChannelManager, IConfiguration configuration, IScriptWebHostEnvironment webHostEnvironment,
                       IEnvironment environment, IOptionsMonitor <ScriptApplicationHostOptions> options, ILogger <StandbyManager> logger, HostNameProvider hostNameProvider, IApplicationLifetime applicationLifetime, TimeSpan specializationTimerInterval)
 {
     _scriptHostManager               = scriptHostManager ?? throw new ArgumentNullException(nameof(scriptHostManager));
     _options                         = options ?? throw new ArgumentNullException(nameof(options));
     _logger                          = logger ?? throw new ArgumentNullException(nameof(logger));
     _specializationTask              = new Lazy <Task>(SpecializeHostCoreAsync, LazyThreadSafetyMode.ExecutionAndPublication);
     _webHostEnvironment              = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment));
     _environment                     = environment ?? throw new ArgumentNullException(nameof(environment));
     _configuration                   = configuration as IConfigurationRoot ?? throw new ArgumentNullException(nameof(configuration));
     _languageWorkerChannelManager    = languageWorkerChannelManager ?? throw new ArgumentNullException(nameof(languageWorkerChannelManager));
     _hostNameProvider                = hostNameProvider ?? throw new ArgumentNullException(nameof(hostNameProvider));
     _changeTokenCallbackSubscription = ChangeToken.RegisterChangeCallback(_ => _logger.LogDebug($"{nameof(StandbyManager)}.{nameof(ChangeToken)} callback has fired."), null);
     _specializationTimerInterval     = specializationTimerInterval;
     _applicationLifetime             = applicationLifetime;
 }
 public StandbyManager(IScriptHostManager scriptHostManager, IWebHostLanguageWorkerChannelManager languageWorkerChannelManager, IConfiguration configuration, IScriptWebHostEnvironment webHostEnvironment,
                       IEnvironment environment, IOptionsMonitor <ScriptApplicationHostOptions> options, ILogger <StandbyManager> logger, HostNameProvider hostNameProvider, IApplicationLifetime applicationLifetime)
     : this(scriptHostManager, languageWorkerChannelManager, configuration, webHostEnvironment, environment, options, logger, hostNameProvider, applicationLifetime, TimeSpan.FromMilliseconds(500))
 {
 }
 public FunctionsSyncManager(IConfiguration configuration, IHostIdProvider hostIdProvider, IOptionsMonitor <ScriptApplicationHostOptions> applicationHostOptions, IOptions <LanguageWorkerOptions> languageWorkerOptions, ILogger <FunctionsSyncManager> logger, HttpClient httpClient, ISecretManagerProvider secretManagerProvider, IScriptWebHostEnvironment webHostEnvironment, IEnvironment environment, HostNameProvider hostNameProvider)
 {
     _applicationHostOptions = applicationHostOptions;
     _logger                = logger;
     _workerConfigs         = languageWorkerOptions.Value.WorkerConfigs;
     _httpClient            = httpClient;
     _secretManagerProvider = secretManagerProvider;
     _configuration         = configuration;
     _hostIdProvider        = hostIdProvider;
     _webHostEnvironment    = webHostEnvironment;
     _environment           = environment;
     _hostNameProvider      = hostNameProvider;
 }