public ExtensionsManager(IOptions <ScriptJobHostOptions> hostOptions, ILogger <ExtensionsManager> logger, IExtensionBundleManager extensionBundleManager)
 {
     _scriptRootPath         = hostOptions.Value.RootScriptPath;
     _nugetFallbackPath      = hostOptions.Value.NugetFallBackPath;
     _logger                 = logger;
     _extensionBundleManager = extensionBundleManager;
 }
 public ScriptStartupTypeLocator(string rootScriptPath, ILogger <ScriptStartupTypeLocator> logger, IExtensionBundleManager extensionBundleManager, IFunctionMetadataProvider functionMetadataProvider)
 {
     _rootScriptPath         = rootScriptPath ?? throw new ArgumentNullException(nameof(rootScriptPath));
     _extensionBundleManager = extensionBundleManager ?? throw new ArgumentNullException(nameof(extensionBundleManager));
     _logger = logger;
     _functionMetadataProvider = functionMetadataProvider;
 }
 public ExtensionsController(IExtensionsManager extensionsManager, ScriptSettingsManager settingsManager, IExtensionBundleManager extensionBundleManager, IEnvironment environment)
 {
     _extensionsManager      = extensionsManager ?? throw new ArgumentNullException(nameof(extensionsManager));
     _settingsManager        = settingsManager ?? throw new ArgumentNullException(nameof(settingsManager));
     _extensionBundleManager = extensionBundleManager ?? throw new ArgumentNullException(nameof(extensionBundleManager));
     _environment            = environment;
 }
示例#4
0
 public ExtensionsController(IExtensionsManager extensionsManager, ScriptSettingsManager settingsManager, IExtensionBundleManager extensionBundleManager, IEnvironment environment, IOptions <ScriptApplicationHostOptions> applicationHostOptions)
 {
     _extensionsManager      = extensionsManager ?? throw new ArgumentNullException(nameof(extensionsManager));
     _settingsManager        = settingsManager ?? throw new ArgumentNullException(nameof(settingsManager));
     _extensionBundleManager = extensionBundleManager ?? throw new ArgumentNullException(nameof(extensionBundleManager));
     _applicationHostOptions = applicationHostOptions ?? throw new ArgumentNullException(nameof(applicationHostOptions));
     _environment            = environment;
 }
 public ScriptStartupTypeLocator(string rootScriptPath, ILogger <ScriptStartupTypeLocator> logger, IExtensionBundleManager extensionBundleManager,
                                 IFunctionMetadataManager functionMetadataManager, IMetricsLogger metricsLogger)
 {
     _rootScriptPath         = rootScriptPath ?? throw new ArgumentNullException(nameof(rootScriptPath));
     _extensionBundleManager = extensionBundleManager ?? throw new ArgumentNullException(nameof(extensionBundleManager));
     _logger = logger;
     _functionMetadataManager = functionMetadataManager;
     _metricsLogger           = metricsLogger;
     _startupTypes            = new Lazy <IEnumerable <Type> >(() => GetExtensionsStartupTypesAsync().ConfigureAwait(false).GetAwaiter().GetResult());
 }
示例#6
0
        private ExtensionsManager GetExtensionsManager(string rootPath, IExtensionBundleManager extensionBundleManager = null)
        {
            extensionBundleManager = extensionBundleManager ?? new TestExtensionBundleManager();
            IOptions <ScriptJobHostOptions> options = new OptionsWrapper <ScriptJobHostOptions>(new ScriptJobHostOptions
            {
                RootScriptPath = rootPath
            });

            var manager = new Mock <ExtensionsManager>(options, NullLogger <ExtensionsManager> .Instance, extensionBundleManager);

            manager.Setup(m => m.ProcessExtensionsProject(It.IsAny <string>()))
            .Returns <string>(a =>
            {
                File.Copy(Path.Combine(a, ScriptConstants.ExtensionsProjectFileName), Path.Combine(rootPath, ScriptConstants.ExtensionsProjectFileName), true);
                return(Task.CompletedTask);
            });

            return(manager.Object);
        }
        // Specify the "builtin binding types". These are types that are directly accesible without needing an explicit load gesture.
        // This is the set of bindings we shipped prior to binding extensibility.
        // Map from BindingType to the Assembly Qualified Type name for its IExtensionConfigProvider object.

        public ScriptHost(IOptions <JobHostOptions> options,
                          IOptions <HttpWorkerOptions> httpWorkerOptions,
                          IEnvironment environment,
                          IJobHostContextFactory jobHostContextFactory,
                          IConfiguration configuration,
                          IDistributedLockManager distributedLockManager,
                          IScriptEventManager eventManager,
                          ILoggerFactory loggerFactory,
                          IFunctionInvocationDispatcherFactory functionDispatcherFactory,
                          IFunctionMetadataManager functionMetadataManager,
                          IFileLoggingStatusManager fileLoggingStatusManager,
                          IMetricsLogger metricsLogger,
                          IOptions <ScriptJobHostOptions> scriptHostOptions,
                          ITypeLocator typeLocator,
                          IScriptHostManager scriptHostManager,
                          IDebugStateProvider debugManager,
                          IEnumerable <IScriptBindingProvider> bindingProviders,
                          IPrimaryHostStateProvider primaryHostStateProvider,
                          IJobHostMetadataProvider metadataProvider,
                          IHostIdProvider hostIdProvider,
                          IHttpRoutesManager httpRoutesManager,
                          IApplicationLifetime applicationLifetime,
                          IExtensionBundleManager extensionBundleManager,
                          ScriptSettingsManager settingsManager = null)
            : base(options, jobHostContextFactory)
        {
            _environment = environment;
            _typeLocator = typeLocator as ScriptTypeLocator
                           ?? throw new ArgumentException(nameof(typeLocator), $"A {nameof(ScriptTypeLocator)} instance is required.");

            _instanceId               = Guid.NewGuid().ToString();
            _hostOptions              = options;
            _configuration            = configuration;
            _storageConnectionString  = configuration.GetWebJobsConnectionString(ConnectionStringNames.Storage);
            _distributedLockManager   = distributedLockManager;
            _functionMetadataManager  = functionMetadataManager;
            _fileLoggingStatusManager = fileLoggingStatusManager;
            _applicationLifetime      = applicationLifetime;
            _hostIdProvider           = hostIdProvider;
            _httpRoutesManager        = httpRoutesManager;
            _isHttpWorker             = httpWorkerOptions.Value.Description != null;
            ScriptOptions             = scriptHostOptions.Value;
            _scriptHostManager        = scriptHostManager;
            FunctionErrors            = new Dictionary <string, ICollection <string> >(StringComparer.OrdinalIgnoreCase);
            EventManager              = eventManager;
            _functionDispatcher       = functionDispatcherFactory.GetFunctionDispatcher();
            _settingsManager          = settingsManager ?? ScriptSettingsManager.Instance;
            ExtensionBundleManager    = extensionBundleManager;

            _metricsLogger = metricsLogger;

            _hostLogPath = Path.Combine(ScriptOptions.RootLogPath, "Host");

            _workerRuntime = _environment.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName);

            _loggerFactory = loggerFactory;
            _logger        = loggerFactory.CreateLogger(LogCategories.Startup);
            Logger         = _logger;

            _debugManager             = debugManager;
            _primaryHostStateProvider = primaryHostStateProvider;
            _bindingProviders         = new List <IScriptBindingProvider>(bindingProviders);
            _metadataProvider         = metadataProvider;
            _eventSubscriptions.Add(EventManager.OfType <FunctionIndexingEvent>()
                                    .Subscribe(evt =>
            {
                HandleHostError(evt.Exception);
            }));
        }
 public ExtensionBundleContentProvider(IExtensionBundleManager extensionBundleManager, ILogger <ExtensionBundleContentProvider> logger)
 {
     _extensionBundleManager = extensionBundleManager;
     _logger = logger;
 }
示例#9
0
        public static IWebJobsBuilder UseScriptExternalStartup(this IWebJobsBuilder builder, ScriptApplicationHostOptions applicationHostOptions, ILoggerFactory loggerFactory, IExtensionBundleManager extensionBundleManager)
        {
            var logger = loggerFactory?.CreateLogger <ScriptStartupTypeLocator>() ?? throw new ArgumentNullException(nameof(loggerFactory));
            var metadataServiceProvider = applicationHostOptions.RootServiceProvider.GetService <IFunctionMetadataProvider>();

            return(builder.UseExternalStartup(new ScriptStartupTypeLocator(applicationHostOptions.ScriptPath, logger, extensionBundleManager, metadataServiceProvider)));
        }
 public static IWebJobsBuilder UseScriptExternalStartup(this IWebJobsBuilder builder, string rootScriptPath, IExtensionBundleManager extensionBundleManager)
 {
     return(builder.UseExternalStartup(new ScriptStartupTypeLocator(rootScriptPath, extensionBundleManager)));
 }
示例#11
0
 public ScriptStartupTypeLocator(string rootScriptPath, ILogger logger, IExtensionBundleManager extensionBundleManager)
 {
     _rootScriptPath         = rootScriptPath ?? throw new ArgumentNullException(nameof(rootScriptPath));
     _extensionBundleManager = extensionBundleManager ?? throw new ArgumentNullException(nameof(extensionBundleManager));
     _logger = logger;
 }
示例#12
0
 public ScriptStartupTypeLocator(string rootScriptPath, IExtensionBundleManager extensionBundleManager)
     : this(rootScriptPath, NullLogger.Instance, extensionBundleManager)
 {
 }
示例#13
0
        public static IWebJobsBuilder UseScriptExternalStartup(this IWebJobsBuilder builder, string rootScriptPath, ILoggerFactory loggerFactory, IExtensionBundleManager extensionBundleManager)
        {
            var logger = loggerFactory.CreateLogger <ScriptStartupTypeLocator>() ?? throw new ArgumentNullException(nameof(loggerFactory));

            return(builder.UseExternalStartup(new ScriptStartupTypeLocator(rootScriptPath, logger, extensionBundleManager)));
        }