public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                VirtualMachine vmParameters = (this.ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName));

                EncryptionStatus osVolumeEncrypted = IsOsVolumeEncrypted(vmParameters);
                DiskEncryptionSettings osVolumeEncryptionSettings = GetOsVolumeEncryptionSettings(vmParameters);
                EncryptionStatus dataVolumesEncrypted             = AreDataVolumesEncrypted(vmParameters);

                OSType osType = GetOSType(vmParameters);
                switch (osType)
                {
                case OSType.Windows:
                case OSType.Linux:
                    AzureDiskEncryptionStatusContext encryptionStatus = new AzureDiskEncryptionStatusContext
                    {
                        OsVolumeEncrypted          = osVolumeEncrypted,
                        DataVolumesEncrypted       = dataVolumesEncrypted,
                        OsVolumeEncryptionSettings = osVolumeEncryptionSettings
                    };
                    WriteObject(encryptionStatus);
                    break;

                case OSType.Unknown:
                    ThrowTerminatingError(new ErrorRecord(new ApplicationException(string.Format(CultureInfo.CurrentUICulture, "OS type unknown.")),
                                                          "InvalidResult",
                                                          ErrorCategory.InvalidResult,
                                                          null));
                    break;
                }
            });
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the EncryptionSettingsInner class.
 /// </summary>
 /// <param name="encryptionStatus">The encryption status to indicates
 /// if encryption is enabled or not. Possible values include:
 /// 'Enabled', 'Disabled'</param>
 /// <param name="keyRolloverStatus">The key rollover status to
 /// indicates if key rollover is required or not. If secret's
 /// encryption has been upgraded, then it requires key rollover.
 /// Possible values include: 'Required', 'NotRequired'</param>
 /// <param name="id">The path ID that uniquely identifies the
 /// object.</param>
 /// <param name="name">The name of the object.</param>
 /// <param name="type">The hierarchical type of the object.</param>
 /// <param name="kind">The Kind of the object. Currently only
 /// Series8000 is supported. Possible values include:
 /// 'Series8000'</param>
 public EncryptionSettingsInner(EncryptionStatus encryptionStatus, KeyRolloverStatus keyRolloverStatus, string id = default(string), string name = default(string), string type = default(string), Kind?kind = default(Kind?))
     : base(id, name, type, kind)
 {
     EncryptionStatus  = encryptionStatus;
     KeyRolloverStatus = keyRolloverStatus;
     CustomInit();
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the EncryptionSettings class.
 /// </summary>
 /// <param name="encryptionStatus">The encryption status which
 /// indicates if encryption is enabled or not. Possible values include:
 /// 'Enabled', 'Disabled'</param>
 /// <param name="keyRolloverStatus">The key rollover status which
 /// indicates if key rollover is required or not. If secrets encryption
 /// has been upgraded, then it requires key rollover. Possible values
 /// include: 'Required', 'NotRequired'</param>
 /// <param name="id">The identifier.</param>
 /// <param name="name">The name.</param>
 /// <param name="type">The type.</param>
 public EncryptionSettings(EncryptionStatus encryptionStatus, KeyRolloverStatus keyRolloverStatus, string id = default(string), string name = default(string), string type = default(string))
     : base(id, name, type)
 {
     EncryptionStatus  = encryptionStatus;
     KeyRolloverStatus = keyRolloverStatus;
     CustomInit();
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the StorageDomain class.
 /// </summary>
 /// <param name="storageAccountCredentialIds">The storage account
 /// credentials.</param>
 /// <param name="encryptionStatus">The encryption status "Enabled |
 /// Disabled". Possible values include: 'Enabled', 'Disabled'</param>
 /// <param name="id">The identifier.</param>
 /// <param name="name">The name.</param>
 /// <param name="type">The type.</param>
 /// <param name="encryptionKey">The encryption key used to encrypt the
 /// data. This is a user secret.</param>
 public StorageDomain(IList <string> storageAccountCredentialIds, EncryptionStatus encryptionStatus, string id = default(string), string name = default(string), string type = default(string), AsymmetricEncryptedSecret encryptionKey = default(AsymmetricEncryptedSecret))
     : base(id, name, type)
 {
     StorageAccountCredentialIds = storageAccountCredentialIds;
     EncryptionKey    = encryptionKey;
     EncryptionStatus = encryptionStatus;
     CustomInit();
 }
        internal static string ToSerializedValue(this EncryptionStatus value)
        {
            switch (value)
            {
            case EncryptionStatus.Enabled:
                return("Enabled");

            case EncryptionStatus.Disabled:
                return("Disabled");
            }
            return(null);
        }
 /// <summary>
 /// Given disk instance view status code, check whether it is encryption status code if yes map it to EncryptionStatus.
 /// </summary>
 /// <param name="code">The encryption status code.</param>
 /// <return>Mapped EncryptionStatus if given code is encryption status code, null otherwise.</return>
 internal static EncryptionStatus GetEncryptionStatusFromCode(string code)
 {
     if (code != null && code.ToLower().StartsWith("encryptionstate"))
     {
         // e.g. "code": "EncryptionState/encrypted"
         //      "code": "EncryptionState/notEncrypted"
         string[] parts = code.Split('/');
         if (parts.Length != 2)
         {
             return(EncryptionStatus.Unknown);
         }
         else
         {
             return(EncryptionStatus.Parse(parts[1]));
         }
     }
     return(null);
 }
Ejemplo n.º 7
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (EncryptionType != global::Google.Cloud.Spanner.Admin.Database.V1.EncryptionInfo.Types.Type.Unspecified)
            {
                hash ^= EncryptionType.GetHashCode();
            }
            if (encryptionStatus_ != null)
            {
                hash ^= EncryptionStatus.GetHashCode();
            }
            if (KmsKeyVersion.Length != 0)
            {
                hash ^= KmsKeyVersion.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Ejemplo n.º 8
0
 public void MergeFrom(EncryptionInfo other)
 {
     if (other == null)
     {
         return;
     }
     if (other.EncryptionType != global::Google.Cloud.Spanner.Admin.Database.V1.EncryptionInfo.Types.Type.Unspecified)
     {
         EncryptionType = other.EncryptionType;
     }
     if (other.encryptionStatus_ != null)
     {
         if (encryptionStatus_ == null)
         {
             EncryptionStatus = new global::Google.Rpc.Status();
         }
         EncryptionStatus.MergeFrom(other.EncryptionStatus);
     }
     if (other.KmsKeyVersion.Length != 0)
     {
         KmsKeyVersion = other.KmsKeyVersion;
     }
     _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
 }
        private AzureDiskEncryptionStatusContext getStatusDualPass(VirtualMachine vm)
        {
            DiskEncryptionSettings           osVolumeEncryptionSettings = GetOsVolumeEncryptionSettingsDualPass(vm);
            AzureDiskEncryptionStatusContext encryptionStatus           = null;

            switch (vm.StorageProfile.OsDisk.OsType)
            {
            case OperatingSystemTypes.Windows:
                EncryptionStatus osVolumeEncrypted    = IsWindowsOsVolumeEncryptedDualPass(vm);
                EncryptionStatus dataVolumesEncrypted = AreWindowsDataVolumesEncryptedDualPass(vm);
                encryptionStatus = new AzureDiskEncryptionStatusContext
                {
                    OsVolumeEncrypted          = osVolumeEncrypted,
                    DataVolumesEncrypted       = dataVolumesEncrypted,
                    OsVolumeEncryptionSettings = osVolumeEncryptionSettings,
                    ProgressMessage            = string.Format(CultureInfo.CurrentUICulture, "OsVolume: {0}, DataVolumes: {1}", osVolumeEncrypted, dataVolumesEncrypted)
                };
                break;

            case OperatingSystemTypes.Linux:
                if (!this.IsExtensionInstalled(vm) && this.isVMRunning(vm))
                {
                    VirtualMachineExtension parameters = GetDualPassQueryVmExtensionParameters(vm);

                    this.VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        this.ResourceGroupName,
                        this.VMName,
                        this.Name,
                        parameters).GetAwaiter().GetResult();
                }

                Dictionary <string, string> encryptionStatusParsed = null;
                try
                {
                    string encryptionStatusJson = GetExtensionStatusMessage(vm, returnSubstatusMessage: true);
                    encryptionStatusParsed = JsonConvert.DeserializeObject <Dictionary <string, string> >(encryptionStatusJson);
                }
                catch (KeyNotFoundException)
                {
                    encryptionStatusParsed = new Dictionary <string, string>()
                    {
                        { AzureDiskEncryptionExtensionConstants.encryptionResultOsKey, EncryptionStatus.Unknown.ToString() },
                        { AzureDiskEncryptionExtensionConstants.encryptionResultDataKey, EncryptionStatus.Unknown.ToString() }
                    };
                }

                string progressMessage = null;
                try
                {
                    progressMessage = GetExtensionStatusMessage(vm);
                }
                catch (KeyNotFoundException)
                {
                    progressMessage = string.Format(CultureInfo.CurrentUICulture, "Extension status not available on the VM");
                }

                encryptionStatus = new AzureDiskEncryptionStatusContext
                {
                    OsVolumeEncrypted          = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultOsKey]),
                    DataVolumesEncrypted       = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultDataKey]),
                    OsVolumeEncryptionSettings = osVolumeEncryptionSettings,
                    ProgressMessage            = progressMessage
                };
                break;

            default:
                ThrowTerminatingError(new ErrorRecord(new ApplicationException(string.Format(CultureInfo.CurrentUICulture, "OS type unknown.")),
                                                      "InvalidResult",
                                                      ErrorCategory.InvalidResult,
                                                      null));
                break;
            }
            return(encryptionStatus);
        }
Ejemplo n.º 10
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                VirtualMachine vmParameters = (this.ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName));

                EncryptionStatus osVolumeEncrypted = IsOsVolumeEncrypted(vmParameters);
                DiskEncryptionSettings osVolumeEncryptionSettings = GetOsVolumeEncryptionSettings(vmParameters);
                EncryptionStatus dataVolumesEncrypted             = AreDataVolumesEncrypted(vmParameters);
                AzureDiskEncryptionStatusContext encryptionStatus = null;
                string progressMessage = null;

                OSType osType = GetOSType(vmParameters);
                switch (osType)
                {
                case OSType.Windows:
                    encryptionStatus = new AzureDiskEncryptionStatusContext
                    {
                        OsVolumeEncrypted          = osVolumeEncrypted,
                        DataVolumesEncrypted       = dataVolumesEncrypted,
                        OsVolumeEncryptionSettings = osVolumeEncryptionSettings,
                        ProgressMessage            = string.Format(CultureInfo.CurrentUICulture, "OsVolume: {0}, DataVolumes: {1}", osVolumeEncrypted, dataVolumesEncrypted)
                    };
                    WriteObject(encryptionStatus);
                    break;

                case OSType.Linux:
                    if (!IsExtensionInstalled(osType))
                    {
                        VirtualMachine virtualMachineResponse = this.ComputeClient.ComputeManagementClient.VirtualMachines.GetWithInstanceView(
                            this.ResourceGroupName, VMName).Body;
                        VirtualMachineExtension parameters = GetVmExtensionParameters(virtualMachineResponse, osType);

                        this.VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                            this.ResourceGroupName,
                            this.VMName,
                            this.Name,
                            parameters).GetAwaiter().GetResult();
                    }

                    Dictionary <string, string> encryptionStatusParsed = null;
                    try
                    {
                        string encryptionStatusJson = GetExtensionStatusMessage(osType, returnSubstatusMessage: true);
                        encryptionStatusParsed      = JsonConvert.DeserializeObject <Dictionary <string, string> >(encryptionStatusJson);
                    }
                    catch (KeyNotFoundException)
                    {
                        encryptionStatusParsed = new Dictionary <string, string>()
                        {
                            { AzureDiskEncryptionExtensionConstants.encryptionResultOsKey, EncryptionStatus.Unknown.ToString() },
                            { AzureDiskEncryptionExtensionConstants.encryptionResultDataKey, EncryptionStatus.Unknown.ToString() }
                        };
                    }

                    try
                    {
                        progressMessage = GetExtensionStatusMessage(osType);
                    }
                    catch (KeyNotFoundException)
                    {
                        progressMessage = string.Format(CultureInfo.CurrentUICulture, "Extension status not available on the VM");
                    }

                    encryptionStatus = new AzureDiskEncryptionStatusContext
                    {
                        OsVolumeEncrypted          = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultOsKey]),
                        DataVolumesEncrypted       = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultDataKey]),
                        OsVolumeEncryptionSettings = osVolumeEncryptionSettings,
                        ProgressMessage            = progressMessage
                    };
                    WriteObject(encryptionStatus);
                    break;

                case OSType.Unknown:
                    ThrowTerminatingError(new ErrorRecord(new ApplicationException(string.Format(CultureInfo.CurrentUICulture, "OS type unknown.")),
                                                          "InvalidResult",
                                                          ErrorCategory.InvalidResult,
                                                          null));
                    break;
                }
            });
        }
        private void SetDataDisksEncryptionStatus(List <DiskInstanceView> disks, StorageProfile storage, JObject DataDisksEncryptionStatus, EncryptionStatus status)
        {
            foreach (var disk in disks)
            {
                if (disk.Name == storage.OsDisk.Name)
                {
                    continue;
                }

                DataDisksEncryptionStatus[disk.Name] = status.ToString();
            }
        }