public static ConfigMasterParsed CalculateListsOfEntities(ConfigMasterParsed CMP) { CMP.ListOfComponents.Clear(); CMP.ListOfEnvironments.Clear(); CMP.ListOfServers.Clear(); // TODO: Populate these lists from the Recipe and Settings. // TODO: Indicate which problems or inconsistencies there are. return(CMP); }
public static List <CalculatedFile> CalculateFiles(ConfigMasterParsed configMaster) { var Result = new List <CalculatedFile>(); foreach (var item in configMaster.GlobalRecipe.ListOfRecipeConfigFiles) { var newCalcFile = new CalculatedFile() { Component = item.Component, ComputerName = item.ComputerName, Environment = item.Environment, ConfigFilename = item.ConfigFilePath }; newCalcFile.ListOfEffectiveSettings = CalculateThisFile(configMaster, newCalcFile.ConfigFilename); Result.Add(newCalcFile); } return(Result); }
public static ConfigMasterParsed CalculateListsOfEntities(ConfigMasterParsed CMP) { CMP.ListOfComponents.Clear(); CMP.ListOfEnvironments.Clear(); CMP.ListOfServers.Clear(); // TODO: Populate these lists from the Recipe and Settings. // TODO: Indicate which problems or inconsistencies there are. return CMP; }
public static List<CalculatedFile> CalculateFiles(ConfigMasterParsed configMaster) { var Result = new List<CalculatedFile>(); foreach (var item in configMaster.GlobalRecipe.ListOfRecipeConfigFiles) { var newCalcFile = new CalculatedFile() { Component = item.Component, ComputerName = item.ComputerName, Environment = item.Environment, ConfigFilename = item.ConfigFilePath }; newCalcFile.ListOfEffectiveSettings = CalculateThisFile(configMaster, newCalcFile.ConfigFilename); Result.Add(newCalcFile); } return Result; }
/// <summary> /// Loads the Master Config XML file into an ConfigMasterParsed Object /// </summary> /// <param name="ConfigMasterFilename"></param> /// <returns></returns> public static ConfigMasterParsed LoadConfigMasterFile(string ConfigMasterFilename) { var CMO = new ConfigMasterParsed(); var XMasterFile = XDocument.Load(ConfigMasterFilename); //// Load registered Environments //foreach (var env in XMasterFile.Root.Element("Environments").Elements("Environment")) //{ // CMO.ListOfEnvironments.Add(new Models.Environment() // { // Title = env.Attribute("Title").Value, // Description = env.Attribute("Description").Value // }); //} //// Load registered Servers //foreach (var env in XMasterFile.Root.Element("Servers").Elements("Server")) //{ // CMO.ListOfServers.Add(new Models.Computer() // { // ComputerName = env.Attribute("ComputerName").Value, // Description = env.Attribute("Description").Value // }); //} //// Load registered Components //foreach (var env in XMasterFile.Root.Element("Components").Elements("Component")) //{ // CMO.ListOfComponents.Add(new Models.Component() // { // Title = env.Attribute("Title").Value, // Description = env.Attribute("Description").Value // }); //} // Load Recipe CMO.GlobalRecipe = new ConfigFileInstances(); foreach (var env in XMasterFile.Root.Element("Recipes").Elements("Environment")) { foreach (var comp in env.Elements("Component")) { foreach (var svr in comp.Elements("Server")) { var newSvr = new ConfigFileInstances.ConfigFileInstance() { Environment = env.Attribute("Title").Value, Component = comp.Attribute("Title").Value, ComputerName = svr.Attribute("ComputerName").Value, ConfigFilePath = svr.Attribute("ConfigFilePath").Value }; CMO.GlobalRecipe.ListOfRecipeConfigFiles.Add(newSvr); } } } // Load Settings CMO.GlobalSettings = new Settings(); foreach (var sett in XMasterFile.Root.Element("Settings").Elements("Setting")) { var newSetting = new Settings.Setting(); newSetting.Name = sett.Attribute("Name").Value; newSetting.Key = sett.Attribute("Key").Value; newSetting.GlobalDefaultValue = sett.Attribute("GlobalDefaultValue").Value; foreach (var applicComp in sett.Element("ApplicableComponents").Elements("Component")) { newSetting.ListOfApplicableComponents.Add(applicComp.Attribute("Title").Value); } foreach (var overrideSetting in sett.Elements("Override")) { var overridSet = new Settings.Setting.Overrides() { OverrideValue = overrideSetting.Attribute("OverrideValue").Value, Component = overrideSetting?.Element("Component")?.Attribute("Title")?.Value, Environment = overrideSetting?.Element("Environment")?.Attribute("Title")?.Value, Server = overrideSetting?.Element("Server")?.Attribute("ComputerName")?.Value, }; newSetting.ListOfOverrides.Add(overridSet); } CMO.GlobalSettings.ListOfSettings.Add(newSetting); } return CMO; }
public static List<Settings.EffectiveSetting> CalculateThisFile(ConfigMasterParsed configMaster, string configFilename) { var Result = new List<Settings.EffectiveSetting>(); var configFileInfo = configMaster.GlobalRecipe.ListOfRecipeConfigFiles.FirstOrDefault(q => q.ConfigFilePath == configFilename); if (configFileInfo != null) { var CurrentEnvironment = configFileInfo.Environment; var CurrentServer = configFileInfo.ComputerName; var CurrentComponent = configFileInfo.Component; var ApplicableSettings = configMaster.GlobalSettings.ListOfSettings.Where(q => q.ListOfApplicableComponents.Contains(CurrentComponent)); foreach (var sett in ApplicableSettings) { var newSetting = new Settings.EffectiveSetting() { Key = sett.Key, Name = sett.Name, DesiredValue = sett.GlobalDefaultValue }; // See if we should override the value var ComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server == null); if (ComponentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ComponentOverriders?.OverrideValue; } var EnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null); if (EnvironmentOverriders?.OverrideValue != null) { newSetting.DesiredValue = EnvironmentOverriders?.OverrideValue; } var ServerOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower()); if (ServerOverriders?.OverrideValue != null) { newSetting.DesiredValue = ServerOverriders?.OverrideValue; } // More specific: Component and Environment var ComponentEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null); if (ComponentEnvironmentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ComponentEnvironmentOverriders?.OverrideValue; } var ServerEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower()); if (ServerEnvironmentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ServerEnvironmentOverriders?.OverrideValue; } var ServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower()); if (ServerComponentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ServerComponentOverriders?.OverrideValue; } // Most Specific: Component and Environment and Server var EnvironmentServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower()); if (EnvironmentServerComponentOverriders?.OverrideValue != null) { newSetting.DesiredValue = EnvironmentServerComponentOverriders?.OverrideValue; } Result.Add(newSetting); } } return Result; }
/// <summary> /// Loads the Master Config XML file into an ConfigMasterParsed Object /// </summary> /// <param name="ConfigMasterFilename"></param> /// <returns></returns> public static ConfigMasterParsed LoadConfigMasterFile(string ConfigMasterFilename) { var CMO = new ConfigMasterParsed(); var XMasterFile = XDocument.Load(ConfigMasterFilename); //// Load registered Environments //foreach (var env in XMasterFile.Root.Element("Environments").Elements("Environment")) //{ // CMO.ListOfEnvironments.Add(new Models.Environment() // { // Title = env.Attribute("Title").Value, // Description = env.Attribute("Description").Value // }); //} //// Load registered Servers //foreach (var env in XMasterFile.Root.Element("Servers").Elements("Server")) //{ // CMO.ListOfServers.Add(new Models.Computer() // { // ComputerName = env.Attribute("ComputerName").Value, // Description = env.Attribute("Description").Value // }); //} //// Load registered Components //foreach (var env in XMasterFile.Root.Element("Components").Elements("Component")) //{ // CMO.ListOfComponents.Add(new Models.Component() // { // Title = env.Attribute("Title").Value, // Description = env.Attribute("Description").Value // }); //} // Load Recipe CMO.GlobalRecipe = new ConfigFileInstances(); foreach (var env in XMasterFile.Root.Element("Recipes").Elements("Environment")) { foreach (var comp in env.Elements("Component")) { foreach (var svr in comp.Elements("Server")) { var newSvr = new ConfigFileInstances.ConfigFileInstance() { Environment = env.Attribute("Title").Value, Component = comp.Attribute("Title").Value, ComputerName = svr.Attribute("ComputerName").Value, ConfigFilePath = svr.Attribute("ConfigFilePath").Value }; CMO.GlobalRecipe.ListOfRecipeConfigFiles.Add(newSvr); } } } // Load Settings CMO.GlobalSettings = new Settings(); foreach (var sett in XMasterFile.Root.Element("Settings").Elements("Setting")) { var newSetting = new Settings.Setting(); newSetting.Name = sett.Attribute("Name").Value; newSetting.Key = sett.Attribute("Key").Value; newSetting.GlobalDefaultValue = sett.Attribute("GlobalDefaultValue").Value; foreach (var applicComp in sett.Element("ApplicableComponents").Elements("Component")) { newSetting.ListOfApplicableComponents.Add(applicComp.Attribute("Title").Value); } foreach (var overrideSetting in sett.Elements("Override")) { var overridSet = new Settings.Setting.Overrides() { OverrideValue = overrideSetting.Attribute("OverrideValue").Value, Component = overrideSetting?.Element("Component")?.Attribute("Title")?.Value, Environment = overrideSetting?.Element("Environment")?.Attribute("Title")?.Value, Server = overrideSetting?.Element("Server")?.Attribute("ComputerName")?.Value, }; newSetting.ListOfOverrides.Add(overridSet); } CMO.GlobalSettings.ListOfSettings.Add(newSetting); } return(CMO); }
public static List <Settings.EffectiveSetting> CalculateThisFile(ConfigMasterParsed configMaster, string configFilename) { var Result = new List <Settings.EffectiveSetting>(); var configFileInfo = configMaster.GlobalRecipe.ListOfRecipeConfigFiles.FirstOrDefault(q => q.ConfigFilePath == configFilename); if (configFileInfo != null) { var CurrentEnvironment = configFileInfo.Environment; var CurrentServer = configFileInfo.ComputerName; var CurrentComponent = configFileInfo.Component; var ApplicableSettings = configMaster.GlobalSettings.ListOfSettings.Where(q => q.ListOfApplicableComponents.Contains(CurrentComponent)); foreach (var sett in ApplicableSettings) { var newSetting = new Settings.EffectiveSetting() { Key = sett.Key, Name = sett.Name, DesiredValue = sett.GlobalDefaultValue }; // See if we should override the value var ComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server == null); if (ComponentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ComponentOverriders?.OverrideValue; } var EnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null); if (EnvironmentOverriders?.OverrideValue != null) { newSetting.DesiredValue = EnvironmentOverriders?.OverrideValue; } var ServerOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower()); if (ServerOverriders?.OverrideValue != null) { newSetting.DesiredValue = ServerOverriders?.OverrideValue; } // More specific: Component and Environment var ComponentEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null); if (ComponentEnvironmentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ComponentEnvironmentOverriders?.OverrideValue; } var ServerEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower()); if (ServerEnvironmentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ServerEnvironmentOverriders?.OverrideValue; } var ServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower()); if (ServerComponentOverriders?.OverrideValue != null) { newSetting.DesiredValue = ServerComponentOverriders?.OverrideValue; } // Most Specific: Component and Environment and Server var EnvironmentServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower()); if (EnvironmentServerComponentOverriders?.OverrideValue != null) { newSetting.DesiredValue = EnvironmentServerComponentOverriders?.OverrideValue; } Result.Add(newSetting); } } return(Result); }