Skip to content

Commit 2ea07ab

Browse files
committed
Moving some items into settings manager
1 parent 47d2839 commit 2ea07ab

File tree

7 files changed

+26
-48
lines changed

7 files changed

+26
-48
lines changed

src/WebJobs.Script.WebHost/App_Start/WebApiConfig.cs

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,16 @@ namespace Microsoft.Azure.WebJobs.Script.WebHost
1616
{
1717
public static class WebApiConfig
1818
{
19-
private static ScriptSettingsManager _settingsManager;
20-
21-
public static void Register(HttpConfiguration config)
22-
{
23-
_settingsManager = ScriptSettingsManager.Instance;
24-
Register(config, _settingsManager, GetDefaultSettings());
25-
}
26-
27-
public static void Register(HttpConfiguration config, ScriptSettingsManager settingsManager, WebHostSettings settings = null, Action<ContainerBuilder, WebHostSettings> dependencyCallback = null)
19+
public static void Register(HttpConfiguration config, ScriptSettingsManager settingsManager = null,
20+
WebHostSettings settings = null, Action<ContainerBuilder, WebHostSettings> dependencyCallback = null)
2821
{
2922
if (config == null)
3023
{
3124
throw new ArgumentNullException("config");
3225
}
33-
if (settings == null)
34-
{
35-
throw new ArgumentNullException("settings");
36-
}
37-
38-
if (settingsManager == null)
39-
{
40-
throw new ArgumentNullException("settingsManager");
41-
}
4226

43-
_settingsManager = settingsManager;
27+
settingsManager = settingsManager ?? ScriptSettingsManager.Instance;
28+
settings = settings ?? GetDefaultSettings(settingsManager);
4429

4530
// Delete hostingstart.html if any. Azure creates that in all sites by default
4631
string hostingStart = Path.Combine(settings.ScriptPath, "hostingstart.html");
@@ -50,11 +35,11 @@ public static void Register(HttpConfiguration config, ScriptSettingsManager sett
5035
}
5136

5237
// Add necessary folders to the %PATH%
53-
PrependFoldersToEnvironmentPath();
38+
PrependFoldersToEnvironmentPath(settingsManager);
5439

5540
var builder = new ContainerBuilder();
5641
builder.RegisterApiControllers(typeof(FunctionsController).Assembly);
57-
AutofacBootstrap.Initialize(_settingsManager, builder, settings);
42+
AutofacBootstrap.Initialize(settingsManager, builder, settings);
5843

5944
// Invoke registration callback
6045
dependencyCallback?.Invoke(builder, settings);
@@ -96,10 +81,10 @@ public static void Register(HttpConfiguration config, ScriptSettingsManager sett
9681
config.InitializeReceiveSalesforceWebHooks();
9782
}
9883

99-
private static void PrependFoldersToEnvironmentPath()
84+
private static void PrependFoldersToEnvironmentPath(ScriptSettingsManager settingsManager)
10085
{
10186
// Only do this when %HOME% is defined (normally on Azure)
102-
string home = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteHomePath);
87+
string home = settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteHomePath);
10388
if (!string.IsNullOrEmpty(home))
10489
{
10590
// Create the tools folder if it doesn't exist
@@ -109,28 +94,28 @@ private static void PrependFoldersToEnvironmentPath()
10994
var folders = new List<string>();
11095
folders.Add(Path.Combine(home, @"site\tools"));
11196

112-
string path = _settingsManager.GetSetting("PATH");
97+
string path = Environment.GetEnvironmentVariable("PATH");
11398
string additionalPaths = String.Join(";", folders);
11499

115100
// Make sure we haven't already added them. This can happen if the appdomain restart (since it's still same process)
116101
if (!path.Contains(additionalPaths))
117102
{
118103
path = additionalPaths + ";" + path;
119104

120-
_settingsManager.SetSetting("PATH", path);
105+
Environment.SetEnvironmentVariable("PATH", path);
121106
}
122107
}
123108
}
124109

125-
private static WebHostSettings GetDefaultSettings()
110+
private static WebHostSettings GetDefaultSettings(ScriptSettingsManager settingsManager)
126111
{
127112
WebHostSettings settings = new WebHostSettings();
128113

129-
string home = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteHomePath);
114+
string home = settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteHomePath);
130115
bool isLocal = string.IsNullOrEmpty(home);
131116
if (isLocal)
132117
{
133-
settings.ScriptPath = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebJobsScriptRoot);
118+
settings.ScriptPath = settingsManager.GetSetting(EnvironmentSettingNames.AzureWebJobsScriptRoot);
134119
settings.LogPath = Path.Combine(Path.GetTempPath(), @"Functions");
135120
settings.SecretsPath = HttpContext.Current.Server.MapPath("~/App_Data/Secrets");
136121
}

src/WebJobs.Script.WebHost/App_Start/WebHostResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ private void EnsureInitialized(WebHostSettings settings)
136136

137137
private static void ReinitializeAppSettings()
138138
{
139-
if (WebScriptHostManager.IsAzureEnvironment)
139+
if (_settingsManager.IsAzureEnvironment)
140140
{
141141
// the nature of this is only add or update (not remove).
142142
// so there may be settings from standby site leak over.

src/WebJobs.Script.WebHost/Global.asax.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class WebApiApplication : System.Web.HttpApplication
1010
{
1111
protected void Application_Start()
1212
{
13-
GlobalConfiguration.Configure(WebApiConfig.Register);
13+
GlobalConfiguration.Configure(c => WebApiConfig.Register(c));
1414

1515
var scriptHostManager = GlobalConfiguration.Configuration.DependencyResolver.GetService<WebScriptHostManager>();
1616

src/WebJobs.Script.WebHost/Security/DefaultKeyValueConverterFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public DefaultKeyValueConverterFactory(ScriptSettingsManager settingsManager)
2323
_encryptionSupported = IsEncryptionSupported();
2424
}
2525

26-
private static bool IsEncryptionSupported() => WebScriptHostManager.IsAzureEnvironment || _settingsManager.GetSetting(AzureWebsiteLocalEncryptionKey) != null;
26+
private static bool IsEncryptionSupported() => _settingsManager.IsAzureEnvironment || _settingsManager.GetSetting(AzureWebsiteLocalEncryptionKey) != null;
2727

2828
public IKeyValueReader GetValueReader(Key key)
2929
{

src/WebJobs.Script.WebHost/WebScriptHostManager.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,6 @@ public WebScriptHostManager(ScriptHostConfiguration config, ISecretManager secre
6868
{
6969
}
7070

71-
public static bool IsAzureEnvironment
72-
{
73-
get
74-
{
75-
return !string.IsNullOrEmpty(ScriptSettingsManager.Instance.GetSetting(EnvironmentSettingNames.AzureWebsiteInstanceId));
76-
}
77-
}
78-
7971
public virtual bool Initialized
8072
{
8173
get

src/WebJobs.Script/Config/ScriptSettingsManager.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@ public class ScriptSettingsManager
99
{
1010
private static ScriptSettingsManager _instance = new ScriptSettingsManager();
1111

12+
protected ScriptSettingsManager()
13+
{
14+
}
15+
1216
public static ScriptSettingsManager Instance
1317
{
1418
get { return _instance; }
1519
set { _instance = value; }
1620
}
1721

18-
protected ScriptSettingsManager()
19-
{
20-
}
22+
public bool IsAzureEnvironment => !string.IsNullOrEmpty(GetSetting(EnvironmentSettingNames.AzureWebsiteInstanceId));
23+
24+
public bool IsRemoteDebuggingEnabled => !string.IsNullOrEmpty(GetSetting(EnvironmentSettingNames.RemoteDebuggingPort));
2125

2226
public virtual void Reset()
2327
{

src/WebJobs.Script/Description/DotNet/DotNetCompilationServiceFactory.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ namespace Microsoft.Azure.WebJobs.Script.Description
1313
public sealed class DotNetCompilationServiceFactory : ICompilationServiceFactory
1414
{
1515
private static readonly ImmutableArray<ScriptType> SupportedScriptTypes = new[] { ScriptType.CSharp, ScriptType.FSharp }.ToImmutableArray();
16-
1716
private static OptimizationLevel? _optimizationLevel;
1817

1918
ImmutableArray<ScriptType> ICompilationServiceFactory.SupportedScriptTypes
@@ -24,10 +23,6 @@ ImmutableArray<ScriptType> ICompilationServiceFactory.SupportedScriptTypes
2423
}
2524
}
2625

27-
private static bool IsLocal => string.IsNullOrEmpty(Environment.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteInstanceId));
28-
29-
private static bool IsRemoteDebuggingEnabled => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable(EnvironmentSettingNames.RemoteDebuggingPort));
30-
3126
internal static OptimizationLevel OptimizationLevel
3227
{
3328
get
@@ -37,7 +32,9 @@ internal static OptimizationLevel OptimizationLevel
3732
// Get the release mode setting. If set, this will take priority over environment settings.
3833
string releaseModeSetting = ScriptSettingsManager.Instance.GetSetting(EnvironmentSettingNames.CompilationReleaseMode);
3934
bool releaseMode;
40-
if (!bool.TryParse(releaseModeSetting, out releaseMode) && !IsLocal && !IsRemoteDebuggingEnabled)
35+
if (!bool.TryParse(releaseModeSetting, out releaseMode) &&
36+
ScriptSettingsManager.Instance.IsAzureEnvironment &&
37+
!ScriptSettingsManager.Instance.IsRemoteDebuggingEnabled)
4138
{
4239
// If the release mode setting is not set, we're running in Azure
4340
// and not remote debugging, use release mode.

0 commit comments

Comments
 (0)