Ejemplo n.º 1
0
        public static PSVirtualMachineExtension ToPSVirtualMachineExtension(this VirtualMachineExtension ext, string rgName, string vmName)
        {
            PSVirtualMachineExtension result = new PSVirtualMachineExtension
            {
                ResourceGroupName = rgName,
                VMName            = vmName,
                Name               = ext.Name,
                Location           = ext.Location,
                Etag               = JsonConvert.SerializeObject(ext.Tags),
                Publisher          = ext.Publisher,
                ExtensionType      = ext.VirtualMachineExtensionType,
                TypeHandlerVersion = ext.TypeHandlerVersion,
                Id                      = ext.Id,
                PublicSettings          = ext.Settings == null ? null : ext.Settings.ToString(),
                ProtectedSettings       = ext.ProtectedSettings == null ? null : ext.ProtectedSettings.ToString(),
                ProvisioningState       = ext.ProvisioningState,
                Statuses                = ext.InstanceView == null ? null : ext.InstanceView.Statuses,
                SubStatuses             = ext.InstanceView == null ? null : ext.InstanceView.Substatuses,
                AutoUpgradeMinorVersion = ext.AutoUpgradeMinorVersion,
                ForceUpdateTag          = ext.ForceUpdateTag,
                EnableAutomaticUpgrade  = ext.EnableAutomaticUpgrade
            };

            return(result);
        }
        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;
        }
        public AzureDiskEncryptionExtensionContext(PSVirtualMachineExtension psExt)
        {
            ResourceGroupName = psExt.ResourceGroupName;
            Name = psExt.Name;
            Location = psExt.Location;
            Etag = psExt.Etag;
            Publisher = psExt.Publisher;
            ExtensionType = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id = psExt.Id;
            PublicSettings = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses = psExt.Statuses;

            InitializeAzureDiskEncryptionMembers(psExt);
        }
        private void InitializeAzureDiskEncryptionMembers(PSVirtualMachineExtension psExt)
        {
            AzureDiskEncryptionExtensionPublicSettings publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject<AzureDiskEncryptionExtensionPublicSettings>(psExt.PublicSettings);

            AzureDiskEncryptionExtensionProtectedSettings protectedSettings = string.IsNullOrEmpty(psExt.ProtectedSettings) ? null
                                    : JsonConvert.DeserializeObject<AzureDiskEncryptionExtensionProtectedSettings>(psExt.ProtectedSettings);

            AadClientID = (publicSettings == null) ? null : publicSettings.AadClientID;
            KeyVaultURL = (publicSettings == null) ? null : publicSettings.KeyVaultURL;
            KeyEncryptionKeyURL = (publicSettings == null) ? null : publicSettings.KeyEncryptionKeyURL;
            KeyEncryptionAlgorithm = (publicSettings == null) ? null : publicSettings.KeyEncryptionAlgorithm;
            VolumeType = (publicSettings == null) ? null : publicSettings.VolumeType;
            AadClientCertThumbprint = (publicSettings == null) ? null : publicSettings.AadClientCertThumbprint;
            SequenceVersion = (publicSettings == null) ? null : publicSettings.SequenceVersion;
            AadClientSecret = (protectedSettings == null) ? null : ConvertStringToSecureString(protectedSettings.AadClientSecret);
            Passphrase = (protectedSettings == null) ? null : ConvertStringToSecureString(protectedSettings.Passphrase);
        }
        public VirtualMachineAccessExtensionContext(PSVirtualMachineExtension psExt)
        {
            var publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject<VMAccessExtensionPublicSettings>(psExt.PublicSettings);

            ResourceGroupName = psExt.ResourceGroupName;
            Name = psExt.Name;
            Location = psExt.Location;
            Etag = psExt.Etag;
            Publisher = psExt.Publisher;
            ExtensionType = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id = psExt.Id;
            PublicSettings = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses = psExt.Statuses;
            UserName = (publicSettings == null) ? null : publicSettings.UserName;
        }
        public VirtualMachineAccessExtensionContext(PSVirtualMachineExtension psExt)
        {
            var publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject <VMAccessExtensionPublicSettings>(psExt.PublicSettings);

            ResourceGroupName = psExt.ResourceGroupName;
            Name               = psExt.Name;
            Location           = psExt.Location;
            Etag               = psExt.Etag;
            Publisher          = psExt.Publisher;
            ExtensionType      = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id                = psExt.Id;
            PublicSettings    = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses          = psExt.Statuses;
            UserName          = (publicSettings == null) ? null : publicSettings.UserName;
        }
Ejemplo n.º 7
0
        public static PSVirtualMachineExtension ToPSVirtualMachineExtension(this VirtualMachineExtension ext, string rgName = null)
        {
            PSVirtualMachineExtension result = new PSVirtualMachineExtension
            {
                ResourceGroupName = rgName,
                Name               = ext.Name,
                Location           = ext.Location,
                Etag               = null, // TODO: Update CRP library for this field
                Publisher          = ext == null ? null : ext.Publisher,
                ExtensionType      = ext == null ? null : ext.ExtensionType,
                TypeHandlerVersion = ext == null ? null : ext.TypeHandlerVersion,
                Id                = ext.Id,
                PublicSettings    = ext == null ? null : ext.Settings,
                ProtectedSettings = ext == null ? null : ext.ProtectedSettings,
                ProvisioningState = ext == null ? null : ext.ProvisioningState,
                Statuses          = ext == null || ext.InstanceView == null ? null : ext.InstanceView.Statuses
            };

            return(result);
        }
        public VirtualMachineCustomScriptExtensionContext(PSVirtualMachineExtension psExt)
        {
            var publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject <CustomScriptExtensionPublicSettings>(psExt.PublicSettings);

            ResourceGroupName = psExt.ResourceGroupName;
            Name               = psExt.Name;
            Location           = psExt.Location;
            Etag               = psExt.Etag;
            Publisher          = psExt.Publisher;
            ExtensionType      = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id                = psExt.Id;
            PublicSettings    = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses          = psExt.Statuses;
            CommandToExecute  = (publicSettings == null) ? null : publicSettings.commandToExecute;
            Uri               = (publicSettings == null) ? null : publicSettings.fileUris;
        }
        public VirtualMachineCustomScriptExtensionContext(PSVirtualMachineExtension psExt)
        {
            var publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject<CustomScriptExtensionPublicSettings>(psExt.PublicSettings);

            ResourceGroupName = psExt.ResourceGroupName;
            Name = psExt.Name;
            Location = psExt.Location;
            Etag = psExt.Etag;
            Publisher = psExt.Publisher;
            ExtensionType = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id = psExt.Id;
            PublicSettings = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses = psExt.Statuses;
            CommandToExecute = (publicSettings == null) ? null : publicSettings.commandToExecute;
            Uri = (publicSettings == null) ? null : publicSettings.fileUris;
        }
        public static PSVirtualMachineExtension ToPSVirtualMachineExtension(this VirtualMachineExtension ext, string rgName = null)
        {
            PSVirtualMachineExtension result = new PSVirtualMachineExtension
            {
                ResourceGroupName = rgName,
                Name = ext.Name,
                Location = ext.Location,
                Etag = null, // TODO: Update CRP library for this field
                Publisher = ext == null ? null : ext.Publisher,
                ExtensionType = ext == null ? null : ext.ExtensionType,
                TypeHandlerVersion = ext == null ? null : ext.TypeHandlerVersion,
                Id = ext.Id,
                PublicSettings = ext == null ? null : ext.Settings,
                ProtectedSettings = ext == null ? null : ext.ProtectedSettings,
                ProvisioningState = ext == null ? null : ext.ProvisioningState,
                Statuses = ext == null || ext.InstanceView == null ? null : ext.InstanceView.Statuses
            };

            return result;
        }
        public VirtualMachineADDomainExtensionContext(PSVirtualMachineExtension psExt)
        {
            var publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject<ADDomainExtensionPublicSettings>(psExt.PublicSettings);

            ResourceGroupName = psExt.ResourceGroupName;
            Name = psExt.Name;
            Location = psExt.Location;
            Etag = psExt.Etag;
            Publisher = psExt.Publisher;
            ExtensionType = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id = psExt.Id;
            PublicSettings = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses = psExt.Statuses;
            DomainName = (publicSettings == null) ? null : publicSettings.Name;
            OUPath = (publicSettings == null) ? null : publicSettings.OUPath;
            User = (publicSettings == null) ? null : publicSettings.User;
            JoinOption = (publicSettings == null) ? (uint?) null : publicSettings.Options;
            Restart = (publicSettings == null) ? (bool?) null : publicSettings.Restart;
        }
        public VirtualMachineADDomainExtensionContext(PSVirtualMachineExtension psExt)
        {
            var publicSettings = string.IsNullOrEmpty(psExt.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject <ADDomainExtensionPublicSettings>(psExt.PublicSettings);

            ResourceGroupName = psExt.ResourceGroupName;
            Name               = psExt.Name;
            Location           = psExt.Location;
            Etag               = psExt.Etag;
            Publisher          = psExt.Publisher;
            ExtensionType      = psExt.ExtensionType;
            TypeHandlerVersion = psExt.TypeHandlerVersion;
            Id                = psExt.Id;
            PublicSettings    = psExt.PublicSettings;
            ProtectedSettings = psExt.ProtectedSettings;
            ProvisioningState = psExt.ProvisioningState;
            Statuses          = psExt.Statuses;
            DomainName        = (publicSettings == null) ? null : publicSettings.Name;
            OUPath            = (publicSettings == null) ? null : publicSettings.OUPath;
            User              = (publicSettings == null) ? null : publicSettings.User;
            JoinOption        = (publicSettings == null) ? (uint?)null : publicSettings.Options;
            Restart           = (publicSettings == null) ? (bool?)null : publicSettings.Restart;
        }
        private VirtualMachineDscExtensionContext GetDscExtensionContext(PSVirtualMachineExtension extension)
        {
            var context = new VirtualMachineDscExtensionContext
            {
                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 = extension.PublicSettings,
                ProtectedSettings = extension.ProtectedSettings,
                ProvisioningState = extension.ProvisioningState,
                Statuses = extension.Statuses
            };

            DscExtensionPublicSettings extensionPublicSettings = null;
            try
            {
                extensionPublicSettings = DscExtensionSettingsSerializer.DeserializePublicSettings(extension.PublicSettings);
            }
            catch (JsonException e)
            {
                ThrowTerminatingError(
                    new ErrorRecord(
                        new JsonException(
                            String.Format(
                                CultureInfo.CurrentUICulture,
                                Properties.Resources.AzureVMDscWrongSettingsFormat,
                                extension.PublicSettings),
                            e),
                        string.Empty,
                        ErrorCategory.ParserError,
                        null));
            }

            if (extensionPublicSettings == null)
            {
                context.ModulesUrl = string.Empty;
                context.ConfigurationFunction = string.Empty;
                context.Properties = null;
            }
            else
            {
                context.ModulesUrl = extensionPublicSettings.ModulesUrl;
                context.ConfigurationFunction = extensionPublicSettings.ConfigurationFunction;
                context.Properties = new Hashtable(extensionPublicSettings.Properties.ToDictionary(x => x.Name, x => x.Value));
            }

            return context;
        }
        public static PSVirtualMachineExtension ToPSVirtualMachineExtension(this VirtualMachineExtension ext, string rgName = null)
        {
            PSVirtualMachineExtension result = new PSVirtualMachineExtension
            {
                ResourceGroupName = rgName,
                Name = ext.Name,
                Location = ext.Location,
                Etag = JsonConvert.SerializeObject(ext.Tags),
                Publisher = ext.Publisher,
                ExtensionType = ext.VirtualMachineExtensionType,
                TypeHandlerVersion = ext.TypeHandlerVersion,
                Id = ext.Id,
                PublicSettings = ext.Settings == null ? null : ext.Settings.ToString(),
                ProtectedSettings = ext.ProtectedSettings == null ? null : ext.ProtectedSettings.ToString(),
                ProvisioningState = ext.ProvisioningState,
                Statuses = ext.InstanceView == null ? null : ext.InstanceView.Statuses,
                SubStatuses = ext.InstanceView == null ? null : ext.InstanceView.Substatuses,
                AutoUpgradeMinorVersion = ext.AutoUpgradeMinorVersion,
                ForceUpdateTag = ext.ForceUpdateTag
            };

            return result;
        }
        private VirtualMachineDscExtensionContext GetDscExtensionContext(PSVirtualMachineExtension extension)
        {
            var context = new VirtualMachineDscExtensionContext
            {
                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 = extension.PublicSettings,
                ProtectedSettings = extension.ProtectedSettings,
                ProvisioningState = extension.ProvisioningState,
                Statuses = extension.Statuses
            };

            DscExtensionPublicSettings publicSettings;
            try
            {
                publicSettings = string.IsNullOrEmpty(extension.PublicSettings) ? null
                                    : JsonConvert.DeserializeObject<DscExtensionPublicSettings>(extension.PublicSettings);
            }
            catch (Exception)
            {
                // Try deserialize as version 1.0
                try
                {
                    var publicSettingsV1 =
                        JsonConvert.DeserializeObject<DscExtensionPublicSettings.Version1>(extension.PublicSettings);
                    publicSettings = publicSettingsV1.ToCurrentVersion();
                }
                catch (JsonException)
                {
                    throw;
                } 
            }
            
            if (publicSettings == null)
            {
                context.ModulesUrl = string.Empty;
                context.ConfigurationFunction = string.Empty;
                context.Properties = null;
            }
            else
            {
                context.ModulesUrl = publicSettings.ModulesUrl;
                context.ConfigurationFunction = publicSettings.ConfigurationFunction;
                context.Properties = new Hashtable(publicSettings.Properties.ToDictionary( x => x.Name, x => x.Value ));
            }

            return context;
        }