private bool UpdateSetting(ref RoleSettings rs, ServiceConfigurationSchema.ConfigurationSetting cs) { bool done = false; int count = (rs.ConfigurationSettings == null) ? 0 : rs.ConfigurationSettings.Length; for (int i = 0; i < count; i++) { ServiceConfigurationSchema.ConfigurationSetting setting = rs.ConfigurationSettings[i]; if (setting.name == cs.name) { setting.value = cs.value; done = true; } } return done; }
/// <summary> /// Wait until a certificate has been added to a hosted service. /// </summary> private void WaitForCertificateToBeAdded(ServiceConfigurationSchema.Certificate certificate) { Debug.Assert( !string.IsNullOrEmpty(_hostedServiceName), "_hostedServiceName cannot be null or empty."); CertificateList certificates = null; do { Thread.Sleep(TimeSpan.FromMilliseconds(500)); certificates = RetryCall<CertificateList>(subscription => Channel.ListCertificates(subscription, _hostedServiceName)); } while (certificates == null || certificates.Count<Certificate>(c => c.Thumbprint.Equals( certificate.thumbprint, StringComparison.OrdinalIgnoreCase)) < 1); }
private void ConfigureRoleStorageAccountKeys(ServiceConfigurationSchema.ServiceConfiguration config, string primaryKey) { string cloudStorageFormat = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2}"; string cloudStorageFormatCnHttp = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};" + "BlobEndpoint=http://{1}.blob.core.chinacloudapi.cn/;" + "QueueEndpoint=http://{1}.queue.core.chinacloudapi.cn/;" + "TableEndpoint=http://{1}.table.core.chinacloudapi.cn/"; string cloudStorageFormatCnHttps = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};" + "BlobEndpoint=https://{1}.blob.core.chinacloudapi.cn/;" + "QueueEndpoint=https://{1}.queue.core.chinacloudapi.cn/;" + "TableEndpoint=https://{1}.table.core.chinacloudapi.cn/"; string httpUrlformatBasedOnEnv = Utils.IsChinaCloud == false ? cloudStorageFormat : cloudStorageFormatCnHttp; string httpsUrlformatBasedOnEnv = Utils.IsChinaCloud == false ? cloudStorageFormat : cloudStorageFormatCnHttps; string storageHttpKey = string.Format(CultureInfo.InvariantCulture, httpUrlformatBasedOnEnv, "http", this.StorageAccount, primaryKey); string storageHttpsKey = string.Format(CultureInfo.InvariantCulture, httpsUrlformatBasedOnEnv, "https", this.StorageAccount, primaryKey); for (int i = 0; i < config.Role.Length; i++) { ServiceConfigurationSchema.ConfigurationSetting newSetting; newSetting = new ServiceConfigurationSchema.ConfigurationSetting() { name = Resources.DataConnectionString, value = storageHttpKey }; UpdateSetting(ref config.Role[i], newSetting); newSetting = new ServiceConfigurationSchema.ConfigurationSetting() { name = Resources.DiagnosticsConnectionString, value = storageHttpsKey }; UpdateSetting(ref config.Role[i], newSetting); } SerializationUtils.SerializeXmlFile<ServiceConfigurationSchema.ServiceConfiguration>(config, CloudCSCFGFile); }
private void UpdateServiceConfigurations(AzureService service, string forwarderName, ServiceConfigurationSchema.Certificate certElement, string encryptedPassword) { foreach (ServiceConfiguration config in new[] { service.Components.LocalConfig, service.Components.CloudConfig }) { foreach (ServiceConfigurationSchema.RoleSettings role in config.Role) { if (role.Certificates == null) { role.Certificates = new ServiceConfigurationSchema.Certificate[0]; } ServiceConfigurationSchema.Certificate existingCert = role.Certificates.FirstOrDefault(c => c.name == certElement.name); if (existingCert != null) { // ensure we're referencing the right cert existingCert.thumbprint = certElement.thumbprint; } else { role.Certificates = role.Certificates.Concat(new[] { certElement }).ToArray(); } Dictionary<string, string> settings = new Dictionary<string, string>(); foreach (ServiceConfigurationSchema.ConfigurationSetting setting in role.ConfigurationSettings) { settings[setting.name] = setting.value; } settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled"] = "true"; settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername"] = Username; settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword"] = encryptedPassword; settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration"] = (DateTime.Now + TimeSpan.FromDays(365)).ToString("o"); if (role.name == forwarderName) { settings["Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled"] = "true"; } role.ConfigurationSettings = settings.Select(pair => new ServiceConfigurationSchema.ConfigurationSetting { name = pair.Key, value = pair.Value }).ToArray(); } } }
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; } } }