private VirtualMachineSqlServerExtensionContext GetSqlServerExtensionContext(PSVirtualMachineExtension extension) { SqlServerPublicSettings extensionPublicSettings = null; VirtualMachineSqlServerExtensionContext context = null; try { extensionPublicSettings = string.IsNullOrEmpty(extension.PublicSettings) ? null : JsonConvert.DeserializeObject <SqlServerPublicSettings>(extension.PublicSettings); // #$ISSUE- extension.Statuses is always null, follow up with Azure team context = new VirtualMachineSqlServerExtensionContext { ResourceGroupName = extension.ResourceGroupName, Name = extension.Name, Location = extension.Location, Etag = extension.Etag, Publisher = extension.Publisher, ExtensionType = extension.ExtensionType, TypeHandlerVersion = extension.TypeHandlerVersion, Id = extension.Id, PublicSettings = JsonConvert.SerializeObject(extensionPublicSettings), ProtectedSettings = extension.ProtectedSettings, ProvisioningState = extension.ProvisioningState, AutoBackupSettings = extensionPublicSettings.AutoBackupSettings, AutoPatchingSettings = extensionPublicSettings.AutoPatchingSettings, KeyVaultCredentialSettings = extensionPublicSettings.KeyVaultCredentialSettings, Statuses = extension.Statuses }; } catch (JsonException e) { ThrowTerminatingError( new ErrorRecord( new JsonException( String.Format( CultureInfo.CurrentUICulture, Properties.Resources.AzureVMSqlServerWrongSettingsFormat, extension.PublicSettings), e), string.Empty, ErrorCategory.ParserError, null)); } return(context); }
private VirtualMachineSqlServerExtensionContext GetSqlServerExtensionContext(PSVirtualMachineExtension extension) { SqlServerPublicSettings extensionPublicSettings = null; VirtualMachineSqlServerExtensionContext context = null; // Extract sql configuration information from one of the sub statuses if (extension.SubStatuses == null || extension.SubStatuses.FirstOrDefault(s => s.Code.Equals(SqlConfigurationSubStatusCode, StringComparison.InvariantCultureIgnoreCase)) == null) { ThrowTerminatingError( new ErrorRecord( new Exception( String.Format( CultureInfo.CurrentUICulture, Properties.Resources.AzureVMSqlServerSqlConfigurationNotFound, extension.SubStatuses)), string.Empty, ErrorCategory.ParserError, null)); } string sqlConfiguration = extension.SubStatuses.First(s => s.Code.Equals(SqlConfigurationSubStatusCode, StringComparison.InvariantCultureIgnoreCase)).Message; try { AzureVMSqlServerConfiguration settings = JsonConvert.DeserializeObject <AzureVMSqlServerConfiguration>(sqlConfiguration); // #$ISSUE- extension.Statuses is always null, follow up with Azure team context = new VirtualMachineSqlServerExtensionContext { ResourceGroupName = extension.ResourceGroupName, Name = extension.Name, Location = extension.Location, Etag = extension.Etag, Publisher = extension.Publisher, ExtensionType = extension.ExtensionType, TypeHandlerVersion = extension.TypeHandlerVersion, Id = extension.Id, PublicSettings = JsonConvert.SerializeObject(extensionPublicSettings), ProtectedSettings = extension.ProtectedSettings, ProvisioningState = extension.ProvisioningState, AutoBackupSettings = settings.AutoBackup == null ? null : new AutoBackupSettings() { Enable = settings.AutoBackup.Enable, EnableEncryption = settings.AutoBackup.EnableEncryption, RetentionPeriod = settings.AutoBackup.RetentionPeriod, StorageUrl = settings.AutoBackup.StorageAccountUrl, BackupSystemDbs = settings.AutoBackup.BackupSystemDbs, BackupScheduleType = string.IsNullOrEmpty(settings.AutoBackup.BackupScheduleType) ? null : AutoBackupScheduleTypeMap[settings.AutoBackup.BackupScheduleType], FullBackupFrequency = settings.AutoBackup.FullBackupFrequency, FullBackupStartTime = settings.AutoBackup.FullBackupStartTime, FullBackupWindowHours = settings.AutoBackup.FullBackupWindowHours, LogBackupFrequency = settings.AutoBackup.LogBackupFrequency }, AutoPatchingSettings = settings.AutoPatching == null ? null : new AutoPatchingSettings() { Enable = settings.AutoPatching.Enable, DayOfWeek = settings.AutoPatching.DayOfWeek, MaintenanceWindowDuration = settings.AutoPatching.MaintenanceWindowDuration, MaintenanceWindowStartingHour = settings.AutoPatching.MaintenanceWindowStartingHour, PatchCategory = string.IsNullOrEmpty(settings.AutoPatching.PatchCategory) ? null : AutoPatchingCategoryMap[settings.AutoPatching.PatchCategory] }, KeyVaultCredentialSettings = settings.AzureKeyVault == null ? null : new KeyVaultCredentialSettings() { Enable = settings.AzureKeyVault.Enable, Credentials = settings.AzureKeyVault.CredentialsList }, AutoTelemetrySettings = settings.AutoTelemetryReport == null ? null : new AutoTelemetrySettings() { Region = settings.AutoTelemetryReport.Location, }, Statuses = extension.Statuses }; } catch (JsonException e) { ThrowTerminatingError( new ErrorRecord( new JsonException( String.Format( CultureInfo.CurrentUICulture, Properties.Resources.AzureVMSqlServerWrongConfigFormat, sqlConfiguration), e), string.Empty, ErrorCategory.ParserError, null)); } return(context); }
private VirtualMachineSqlServerExtensionContext GetSqlServerExtensionContext(PSVirtualMachineExtension extension) { SqlServerPublicSettings extensionPublicSettings = null; VirtualMachineSqlServerExtensionContext context = null; try { extensionPublicSettings = string.IsNullOrEmpty(extension.PublicSettings) ? null : JsonConvert.DeserializeObject<SqlServerPublicSettings>(extension.PublicSettings); // #$ISSUE- extension.Statuses is always null, follow up with Azure team context = new VirtualMachineSqlServerExtensionContext { ResourceGroupName = extension.ResourceGroupName, Name = extension.Name, Location = extension.Location, Etag = extension.Etag, Publisher = extension.Publisher, ExtensionType = extension.ExtensionType, TypeHandlerVersion = extension.TypeHandlerVersion, Id = extension.Id, PublicSettings = JsonConvert.SerializeObject(extensionPublicSettings), ProtectedSettings = extension.ProtectedSettings, ProvisioningState = extension.ProvisioningState, AutoBackupSettings = extensionPublicSettings.AutoBackupSettings, AutoPatchingSettings = extensionPublicSettings.AutoPatchingSettings, Statuses = extension.Statuses }; } catch (JsonException e) { ThrowTerminatingError( new ErrorRecord( new JsonException( String.Format( CultureInfo.CurrentUICulture, Properties.Resources.AzureVMSqlServerWrongSettingsFormat, extension.PublicSettings), e), string.Empty, ErrorCategory.ParserError, null)); } return context; }