private void UpdateCSCFG() { string normalizedRoleName = this.RoleName.ToUpperInvariant(); ServiceConfigurationSchema.ServiceConfiguration sourceCSCFG = SerializationUtils.DeserializeXmlFile <ServiceConfigurationSchema.ServiceConfiguration>(CscfgFile); ServiceConfigurationSchema.RoleSettings roleToAdd = sourceCSCFG.Role.Where(eachRole => eachRole.name.ToUpperInvariant() == normalizedRoleName).FirstOrDefault(); if (roleToAdd == null) { throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, Resources.RoleNotFoundInCSCFG, this.RoleName)); } ConfigureInstCount(roleToAdd); OverrideSettings(roleToAdd); AddRole(roleToAdd, CloudCSCFGFile); AddRole(roleToAdd, LocalCSCFGFile); }
private void ConfigureInstCount(RoleSettings roleToAdd) { if (roleToAdd.Instances == null) { roleToAdd.Instances = new TargetSetting(); } roleToAdd.Instances.count = this.InstanceCount == 0 ? 1 : this.InstanceCount; }
private void AddRole(RoleSettings roleToAdd, string cscfgFileLoc) { ServiceConfigurationSchema.ServiceConfiguration config = SerializationUtils.DeserializeXmlFile<ServiceConfigurationSchema.ServiceConfiguration>(cscfgFileLoc); string roleNameToAdd = roleToAdd.name.ToUpperInvariant(); if (config.Role != null) { //Check if role to be added is already present inside the cscfg. If so just update instance count. RoleSettings matchingRoleInConfig = config.Role.Where(eachRole => eachRole.name.ToUpperInvariant() == roleNameToAdd).FirstOrDefault(); if (matchingRoleInConfig != null) { ConfigureInstCount(matchingRoleInConfig); SerializationUtils.SerializeXmlFile<ServiceConfigurationSchema.ServiceConfiguration>(config, cscfgFileLoc); WriteObject(string.Format(CultureInfo.InvariantCulture, Resources.RoleAlreadyPresentInCSCFG, roleNameToAdd, matchingRoleInConfig.Instances.count.ToString(CultureInfo.InvariantCulture))); return; } } List<ServiceConfigurationSchema.RoleSettings> roles = new List<ServiceConfigurationSchema.RoleSettings>(); //Retain existing roles inside the cscfg. if (config.Role != null) { roles.AddRange(config.Role); } roles.Add(roleToAdd); config.Role = roles.ToArray(); SerializationUtils.SerializeXmlFile<ServiceConfigurationSchema.ServiceConfiguration>(config, cscfgFileLoc); }
private void OverrideSettings(RoleSettings roleToAdd) { if (string.IsNullOrEmpty(this.Settings) == true) { return; } if (roleToAdd.ConfigurationSettings == null) { WriteWarning(Resources.SettingsAbsentInCSCFG); return; } string[] separatedSetting = Settings.Split(SettingSplitter, StringSplitOptions.RemoveEmptyEntries); foreach (string eachSetting in separatedSetting) { string[] settingsPart = eachSetting.Split(SettingPartSplitter, StringSplitOptions.RemoveEmptyEntries); //Find setting in the role to add. ServiceConfigurationSchema.ConfigurationSetting settingToOverride = roleToAdd.ConfigurationSettings.Where(e => e.name.ToLowerInvariant() == settingsPart[0].ToLowerInvariant()).FirstOrDefault(); //OOPS not found. if (settingToOverride == null) { WriteWarning(string.Format(CultureInfo.InvariantCulture, Resources.SettingsAbsentInCSCFG, settingsPart[0])); continue; } //Update. settingToOverride.value = settingsPart[1]; } }
private static void UpdateSetting(ref RoleSettings rs, ServiceConfigurationSchema.ConfigurationSetting cs) { if (rs.ConfigurationSettings == null) { return; } for (int i = 0; i < rs.ConfigurationSettings.Length; i++) { ServiceConfigurationSchema.ConfigurationSetting setting = rs.ConfigurationSettings[i]; if (setting.name == cs.name) { setting.value = cs.value; break; } } }