SQL Server Extension's public settings
コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }