Azure Config Generator
 All Classes Namespaces Files Functions Variables Properties
Public Member Functions | List of all members
FUSE.AzureConfig.Tasks.SpecProcessor Class Reference

Public Member Functions

AzureConfig Process (AzureConfigSpec spec)
 

Detailed Description

Definition at line 9 of file SpecProcessor.cs.

Member Function Documentation

AzureConfig FUSE.AzureConfig.Tasks.SpecProcessor.Process ( AzureConfigSpec  spec)
inline

Definition at line 11 of file SpecProcessor.cs.

12  {
13  var roles = new Dictionary<string, AzureRoleDetails>();
14  var envs = new Dictionary<string, AzureEnvironment>();
15  foreach (var e in spec.Environments)
16  {
17  ProcessEnv(e.Key, spec, roles, envs);
18  }
19  foreach (var r in envs.Values.SelectMany(e => e.Roles.Values).GroupBy(r => r.RoleName))
20  {
21  var currentSettings = r.SelectMany(x => x.ConfigSettings.Settings.Keys);
22  r.ToList().ForEach(x => x.Details.ConfigurationSettingKeys.UnionWith(currentSettings));
23  }
24  foreach (var r in envs.Values.SelectMany(e => e.Roles.Values))
25  {
26  r.ConfigSettings.AddMissing(r.Details.ConfigurationSettingKeys);
27  }
28  // Remove "parent" environments with no actual instances or with an empty profile name, and key off of profile name.
29  envs = envs.Where(e => e.Value.Roles.Any(x => x.Value.Instances > 0) && !string.IsNullOrEmpty(e.Value.EnvName))
30  .ToDictionary(x => x.Value.EnvName, x => x.Value);
31  return new AzureConfig(spec.Name, roles, envs);
32  }

The documentation for this class was generated from the following file: