Azure Config Generator
 All Classes Namespaces Files Functions Variables Properties
AzureConfig.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 
7 namespace FUSE.AzureConfig.Tasks
8 {
12  public class AzureConfig
13  {
14  public AzureConfig(string name)
15  {
16  this.Name = name;
17  this.Roles = new Dictionary<string, AzureRoleDetails>();
18  this.Environments = new Dictionary<string, AzureEnvironment>();
19  }
20 
21  public AzureConfig(string name,
22  IDictionary<string, AzureRoleDetails> roles,
23  IDictionary<string, AzureEnvironment> envs)
24  {
25  this.Name = name;
26  this.Roles = roles;
27  this.Environments = envs;
28  }
29 
30  public string Name { get; private set; }
31 
32  public IDictionary<string, AzureRoleDetails> Roles { get; private set; }
33 
34  public IDictionary<string, AzureEnvironment> Environments { get; private set; }
35  }
36 
37  public class AzureRoleDetails
38  {
39  public AzureRoleDetails(string roleName)
40  {
41  this.RoleName = roleName;
42  this.ConfigurationSettingKeys = new HashSet<string>();
43  }
44 
45  public string RoleName { get; private set; }
46 
47  public string RoleType { get; set; }
48 
49  public ISet<string> ConfigurationSettingKeys { get; private set; }
50  }
51 
52  public class AzureEnvironment
53  {
54  public static AzureEnvironment FromParent(string envName, AzureEnvironment parent)
55  {
56  var env = new AzureEnvironment(envName);
57  foreach (var r in parent.Roles)
58  {
59  var newR = new AzureRoleEnvironmentDetails(r.Value.Details);
60  newR.Instances = r.Value.Instances;
61  newR.ConfigSettings.AddSettings(r.Value.ConfigSettings.Settings);
62  newR.ConfigSettings.AddMissing(r.Value.ConfigSettings.MissingSettings);
63  env.Roles.Add(r.Key, newR);
64  }
65 
66  return env;
67  }
68 
69  public AzureEnvironment(string envName)
70  {
71  this.EnvName = envName;
72  this.Roles = new Dictionary<string, AzureRoleEnvironmentDetails>();
73  }
74 
75  public string EnvName { get; private set; }
76 
77  public IDictionary<string, AzureRoleEnvironmentDetails> Roles { get; private set; }
78  }
79 
81  {
83  {
84  this.Details = roleDetails;
85  this.ConfigSettings = new AzureConfigSettings();
86  }
87 
88  public AzureRoleDetails Details { get; private set; }
89 
90  public string RoleName { get { return this.Details.RoleName; } }
91 
92  public int Instances { get; set; }
93 
94  public AzureConfigSettings ConfigSettings { get; set; }
95  }
96 
97  public class AzureConfigSettings
98  {
100  {
101  this.Settings = new Dictionary<string, string>();
102  }
103 
104  public IDictionary<string, string> Settings { get; private set; }
105 
106  private HashSet<string> _missing = new HashSet<string>();
107 
108  public ISet<string> MissingSettings
109  {
110  get
111  {
112  var found = _missing.Intersect(this.Settings.Keys);
113  if (found.Any())
114  {
115  _missing = new HashSet<string>(_missing.Except(found));
116  }
117  return _missing;
118  }
119  }
120 
121  public void AddSettings(IDictionary<string, string> settings)
122  {
123  foreach (var s in settings)
124  this.Settings[s.Key] = s.Value;
125  }
126 
127  public void AddMissing(ISet<string> possiblyMissing)
128  {
129  foreach (var m in possiblyMissing.Except(this.Settings.Keys))
130  this.MissingSettings.Add(m);
131  }
132  }
133 }
AzureConfig(string name, IDictionary< string, AzureRoleDetails > roles, IDictionary< string, AzureEnvironment > envs)
Definition: AzureConfig.cs:21
AzureRoleEnvironmentDetails(AzureRoleDetails roleDetails)
Definition: AzureConfig.cs:82
Processed Azure configuration
Definition: AzureConfig.cs:12
void AddMissing(ISet< string > possiblyMissing)
Definition: AzureConfig.cs:127
void AddSettings(IDictionary< string, string > settings)
Definition: AzureConfig.cs:121
static AzureEnvironment FromParent(string envName, AzureEnvironment parent)
Definition: AzureConfig.cs:54