Ejemplo n.º 1
0
        public override void ExecuteCmdlet()
        {
            if (ShouldProcess(Resources.VaultTarget, "set"))
            {
                try
                {
                    Vault        vault = null;
                    IdentityData MSI   = new IdentityData();

                    if (IdentityType == MSIdentity.SystemAssigned)
                    {
                        MSI.Type = MSIdentity.SystemAssigned.ToString();
                    }
                    else if (IdentityType == MSIdentity.None)
                    {
                        MSI.Type = MSIdentity.None.ToString();
                    }
                    PatchVault patchVault = new PatchVault();
                    patchVault.Identity = MSI;
                    vault = RecoveryServicesClient.UpdateRSVault(this.ResourceGroupName, this.Name, patchVault);

                    WriteObject(new ARSVault(vault));
                }
                catch (Exception exception)
                {
                    WriteExceptionError(exception);
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Updates the vault.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group where the recovery services vault is
 /// present.
 /// </param>
 /// <param name='vaultName'>
 /// The name of the recovery services vault.
 /// </param>
 /// <param name='vault'>
 /// Recovery Services Vault to be created.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <Vault> BeginUpdateAsync(this IVaultsOperations operations, string resourceGroupName, string vaultName, PatchVault vault, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(resourceGroupName, vaultName, vault, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Updates the vault.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group where the recovery services vault is
 /// present.
 /// </param>
 /// <param name='vaultName'>
 /// The name of the recovery services vault.
 /// </param>
 /// <param name='vault'>
 /// Recovery Services Vault to be created.
 /// </param>
 public static Vault BeginUpdate(this IVaultsOperations operations, string resourceGroupName, string vaultName, PatchVault vault)
 {
     return(operations.BeginUpdateAsync(resourceGroupName, vaultName, vault).GetAwaiter().GetResult());
 }
Ejemplo n.º 4
0
        public override void ExecuteCmdlet()
        {
            ExecutionBlock(() =>
            {
                try
                {
                    ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId);
                    string vaultName         = resourceIdentifier.ResourceName;
                    string resourceGroupName = resourceIdentifier.ResourceGroupName;

                    if (SoftDeleteFeatureState != null || DisableHybridBackupSecurityFeature != null)
                    {
                        BackupResourceVaultConfigResource currentConfig = ServiceClientAdapter.GetVaultProperty(vaultName, resourceGroupName);
                        BackupResourceVaultConfigResource param         = new BackupResourceVaultConfigResource();
                        param.Properties = new BackupResourceVaultConfig();

                        param.Properties.SoftDeleteFeatureState = (SoftDeleteFeatureState != null) ? SoftDeleteFeatureState + "d" : currentConfig.Properties.SoftDeleteFeatureState;
                        param.Properties.EnhancedSecurityState  = (DisableHybridBackupSecurityFeature != null) ? (((bool)DisableHybridBackupSecurityFeature) ? "Disabled" : "Enabled") : currentConfig.Properties.EnhancedSecurityState;

                        bool isMUAProtected = checkMUAForSoftDelete(currentConfig, param);

                        BackupResourceVaultConfigResource result = ServiceClientAdapter.SetVaultProperty(vaultName, resourceGroupName, param, Token, isMUAProtected);
                        WriteObject(result.Properties);
                    }
                    else if (EncryptionKeyId != null)
                    {
                        BackupResourceEncryptionConfigResource vaultEncryptionSettings = new BackupResourceEncryptionConfigResource();
                        vaultEncryptionSettings.Properties = new BackupResourceEncryptionConfig();

                        PatchVault patchVault = new PatchVault();
                        patchVault.Properties = new VaultProperties();
                        VaultPropertiesEncryption vaultEncryption = new VaultPropertiesEncryption();
                        vaultEncryption.KeyVaultProperties        = new CmkKeyVaultProperties();
                        vaultEncryption.KekIdentity = new CmkKekIdentity();

                        vaultEncryption.KeyVaultProperties.KeyUri = EncryptionKeyId;

                        if (InfrastructureEncryption.IsPresent)
                        {
                            vaultEncryption.InfrastructureEncryption = "Enabled";
                        }

                        vaultEncryption.KekIdentity.UseSystemAssignedIdentity = UseSystemAssignedIdentity;

                        if (!UseSystemAssignedIdentity && (UserAssignedIdentity == null || UserAssignedIdentity == ""))
                        {
                            throw new ArgumentException(Resources.IdentityIdRequiredForCMK);
                        }
                        else if (!UseSystemAssignedIdentity)
                        {
                            vaultEncryption.KekIdentity.UserAssignedIdentity = UserAssignedIdentity;
                        }

                        patchVault.Properties.Encryption = vaultEncryption;

                        ServiceClientAdapter.UpdateRSVault(resourceGroupName, vaultName, patchVault);
                    }
                }
                catch (Exception exception)
                {
                    WriteExceptionError(exception);
                }
            }, ShouldProcess(VaultId, VerbsCommon.Set));
        }
Ejemplo n.º 5
0
        public override void ExecuteCmdlet()
        {
            if (ShouldProcess(Resources.VaultTarget, "set"))
            {
                try
                {
                    IdentityData MSI   = new IdentityData();
                    Vault        vault = RecoveryServicesClient.GetVault(this.ResourceGroupName, this.Name);

                    if (ParameterSetName == AzureRSVaultAddMSIdentity)
                    {
                        if (IdentityType == MSIdentity.SystemAssigned)
                        {
                            if (IdentityId != null)
                            {
                                throw new ArgumentException(Resources.InvalidParameterIdentityId);
                            }

                            if (vault.Identity != null && vault.Identity.Type.ToLower().Contains("userassigned"))
                            {
                                MSI.Type = MSIdentity.SystemAssigned.ToString() + "," + MSIdentity.UserAssigned.ToString();
                            }
                            else
                            {
                                MSI.Type = MSIdentity.SystemAssigned.ToString();
                            }
                        }
                        else if (IdentityType == MSIdentity.None)
                        {
                            MSI.Type = MSIdentity.None.ToString();
                        }
                        else if (IdentityType == MSIdentity.UserAssigned)
                        {
                            if (IdentityId == null)
                            {
                                throw new ArgumentException(Resources.IdentityIdRequired);
                            }

                            if (vault.Identity != null && vault.Identity.Type.ToLower().Contains("systemassigned"))
                            {
                                MSI.Type = MSIdentity.SystemAssigned.ToString() + "," + MSIdentity.UserAssigned.ToString();
                            }
                            else
                            {
                                MSI.Type = MSIdentity.UserAssigned.ToString();
                            }

                            MSI.UserAssignedIdentities = new Dictionary <string, UserIdentity>();
                            foreach (string userIdentityId in IdentityId)
                            {
                                MSI.UserAssignedIdentities.Add(userIdentityId, new UserIdentity());
                            }
                        }
                    }
                    else
                    {
                        if (RemoveSystemAssigned.IsPresent)
                        {
                            if (IdentityId != null || RemoveUserAssigned.IsPresent)
                            {
                                throw new ArgumentException(Resources.InvalidIdentityRemove);
                            }

                            if (vault.Identity != null && vault.Identity.Type.ToLower().Contains("systemassigned"))
                            {
                                if (vault.Identity.Type.ToLower().Contains("userassigned"))
                                {
                                    MSI.Type = MSIdentity.UserAssigned.ToString();
                                }
                                else
                                {
                                    MSI.Type = MSIdentity.None.ToString();
                                }
                            }
                        }
                        else if (RemoveUserAssigned.IsPresent)
                        {
                            if (IdentityId == null)
                            {
                                throw new ArgumentException(Resources.IdentityIdRequired);
                            }

                            foreach (string identity in IdentityId)
                            {
                                if (!vault.Identity.UserAssignedIdentities.ContainsKey(identity))
                                {
                                    throw new ArgumentException(String.Format(Resources.InvalidIdentityId, identity));
                                }
                            }

                            if (vault.Identity != null && vault.Identity.Type.ToLower().Contains("userassigned"))
                            {
                                if (vault.Identity.Type.ToLower().Contains("systemassigned"))
                                {
                                    if (vault.Identity.UserAssignedIdentities.Keys.Count == IdentityId.Length)
                                    {
                                        MSI.Type = MSIdentity.SystemAssigned.ToString();
                                    }
                                    else
                                    {
                                        MSI.Type = MSIdentity.SystemAssigned.ToString() + "," + MSIdentity.UserAssigned.ToString();
                                    }
                                }
                                else
                                {
                                    if (vault.Identity.UserAssignedIdentities.Keys.Count == IdentityId.Length)
                                    {
                                        MSI.Type = MSIdentity.None.ToString();
                                    }
                                    else
                                    {
                                        MSI.Type = MSIdentity.UserAssigned.ToString();
                                    }
                                }

                                if (MSI.Type != "SystemAssigned" && MSI.Type != "None")
                                {
                                    MSI.UserAssignedIdentities = new Dictionary <string, UserIdentity>();
                                    foreach (string userIdentityId in IdentityId)
                                    {
                                        MSI.UserAssignedIdentities.Add(userIdentityId, null);
                                    }
                                }
                            }
                        }
                        else
                        {
                            throw new ArgumentException(Resources.InvalidParameterSet);
                        }
                    }

                    PatchVault patchVault = new PatchVault();
                    patchVault.Identity = MSI;
                    vault = RecoveryServicesClient.UpdateRSVault(this.ResourceGroupName, this.Name, patchVault);
                    WriteObject(new ARSVault(vault));
                }
                catch (Exception exception)
                {
                    WriteExceptionError(exception);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Method to create or update Recovery Services Vault.
        /// </summary>
        /// <param name="resouceGroupName">Name of the resouce group</param>
        /// <param name="vaultName">Name of the vault</param>
        /// <param name="patchVault">patch vault object to patch the recovery services Vault</param>
        /// <returns>Azure Recovery Services Vault.</returns>
        public Vault UpdateRSVault(string resouceGroupName, string vaultName, PatchVault patchVault)
        {
            var response = RSAdapter.Client.Vaults.UpdateWithHttpMessagesAsync(resouceGroupName, vaultName, patchVault).Result;

            return(response.Body);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Method to create or update Recovery Services Vault.
        /// </summary>
        /// <param name="resouceGroupName">Name of the resouce group</param>
        /// <param name="vaultName">Name of the vault</param>
        /// <param name="vault">patch vault object to patch the recovery services Vault</param>
        /// <returns>Azure Recovery Services Vault.</returns>
        public Vault UpdateRSVault(string resouceGroupName, string vaultName, PatchVault vault)
        {
            var response = GetRecoveryServicesClient.Vaults.UpdateWithHttpMessagesAsync(resouceGroupName, vaultName, vault).Result;

            return(response.Body);
        }