public override void ExecuteCmdlet() { ExecutionBlock(() => { ConfirmAction( Force.IsPresent, string.Format(Resources.DisableProtectionWarning, Item.Name), Resources.DisableProtectionMessage, Item.Name, () => { base.ExecuteCmdlet(); ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId); string vaultName = resourceIdentifier.ResourceName; string resourceGroupName = resourceIdentifier.ResourceGroupName; PsBackupProviderManager providerManager = new PsBackupProviderManager(new Dictionary <System.Enum, object>() { { VaultParams.VaultName, vaultName }, { VaultParams.ResourceGroupName, resourceGroupName }, { ItemParams.Item, Item }, { ItemParams.DeleteBackupData, this.DeleteBackupData }, }, ServiceClientAdapter); IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance(Item.WorkloadType, Item.BackupManagementType); if (DeleteBackupData) { var itemResponse = psBackupProvider.DisableProtectionWithDeleteData(); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } else { var itemResponse = psBackupProvider.DisableProtection(); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } ); }, ShouldProcess(Item.Name, VerbsLifecycle.Disable)); }
public override void ExecuteCmdlet() { ExecutionBlock(() => { ConfirmAction( Force.IsPresent, string.Format(Resources.DisableProtectionWarning, Item.Name), Resources.DisableProtectionMessage, Item.Name, () => { base.ExecuteCmdlet(); ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId); string vaultName = resourceIdentifier.ResourceName; string resourceGroupName = resourceIdentifier.ResourceGroupName; if (Token != "" && Token != null && !this.DeleteBackupData) { throw new ArgumentException(String.Format(Resources.DisableWithRetainBackupNotCrititcal)); } PsBackupProviderManager providerManager = new PsBackupProviderManager(new Dictionary <System.Enum, object>() { { VaultParams.VaultName, vaultName }, { VaultParams.ResourceGroupName, resourceGroupName }, { ItemParams.Item, Item }, { ItemParams.DeleteBackupData, this.DeleteBackupData }, { ResourceGuardParams.Token, Token }, }, ServiceClientAdapter); IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance(Item.WorkloadType, Item.BackupManagementType); if (DeleteBackupData) { #region Archived RPs // Fetch RecoveryPoints in Archive Tier, if yes throw warning and confirmation prompt Dictionary <UriEnums, string> uriDict = HelperUtils.ParseUri(Item.Id); string containerUri = HelperUtils.GetContainerUri(uriDict, Item.Id); string protectedItemName = HelperUtils.GetProtectedItemUri(uriDict, Item.Id); ODataQuery <ServiceClientModel.BMSRPQueryObject> queryFilter = null; if (string.Compare(Item.BackupManagementType.ToString(), BackupManagementType.AzureWorkload.ToString()) == 0) { var restorePointQueryType = "FullAndDifferential"; string queryFilterString = QueryBuilder.Instance.GetQueryString(new ServiceClientModel.BMSRPQueryObject() { RestorePointQueryType = restorePointQueryType, ExtendedInfo = true }); queryFilter = new ODataQuery <ServiceClientModel.BMSRPQueryObject>(); queryFilter.Filter = queryFilterString; } var rpListResponse = ServiceClientAdapter.GetRecoveryPoints( containerUri, protectedItemName, queryFilter, vaultName: vaultName, resourceGroupName: resourceGroupName); var recoveryPointList = RecoveryPointConversions.GetPSAzureRecoveryPoints(rpListResponse, Item); recoveryPointList = RecoveryPointConversions.FilterRPsBasedOnTier(recoveryPointList, RecoveryPointTier.VaultArchive); #endregion if (recoveryPointList.Count != 0) { bool yesToAll = Force.IsPresent; bool noToAll = false; if (ShouldContinue(Resources.DeleteArchiveRecoveryPoints, Resources.DeleteRecoveryPoints, ref yesToAll, ref noToAll)) { var itemResponse = psBackupProvider.DisableProtectionWithDeleteData(); Logger.Instance.WriteDebug("item Response " + JsonConvert.SerializeObject(itemResponse)); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } else { var itemResponse = psBackupProvider.DisableProtectionWithDeleteData(); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } else { var itemResponse = psBackupProvider.DisableProtection(); Logger.Instance.WriteDebug("Disable protection response " + JsonConvert.SerializeObject(itemResponse)); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } ); }, ShouldProcess(Item.Name, VerbsLifecycle.Disable)); }
public override void ExecuteCmdlet() { ExecutionBlock(() => { ConfirmAction( Force.IsPresent, string.Format(Resources.DisableProtectionWarning, Item.Name), Resources.DisableProtectionMessage, Item.Name, () => { base.ExecuteCmdlet(); ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId); string vaultName = resourceIdentifier.ResourceName; string resourceGroupName = resourceIdentifier.ResourceGroupName; PsBackupProviderManager providerManager = new PsBackupProviderManager(new Dictionary <System.Enum, object>() { { VaultParams.VaultName, vaultName }, { VaultParams.ResourceGroupName, resourceGroupName }, { ItemParams.Item, Item }, { ItemParams.DeleteBackupData, this.DeleteBackupData }, }, ServiceClientAdapter); IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance(Item.WorkloadType, Item.BackupManagementType); if (DeleteBackupData) { // Fetch RecoveryPoints in Archive Tier, if yes throw warning and confirmation prompt Dictionary <UriEnums, string> uriDict = HelperUtils.ParseUri(Item.Id); string containerUri = HelperUtils.GetContainerUri(uriDict, Item.Id); string protectedItemName = HelperUtils.GetProtectedItemUri(uriDict, Item.Id); var rpListResponse = ServiceClientAdapter.GetRecoveryPoints( containerUri, protectedItemName, null, vaultName: vaultName, resourceGroupName: resourceGroupName); var recoveryPointList = RecoveryPointConversions.GetPSAzureRecoveryPoints(rpListResponse, Item); recoveryPointList = RecoveryPointConversions.FilterRPsBasedOnTier(recoveryPointList, RecoveryPointTier.VaultArchive); if (recoveryPointList.Count != 0) { bool yesToAll = Force.IsPresent; bool noToAll = false; if (ShouldContinue(Resources.DeleteArchiveRecoveryPoints, Resources.DeleteRecoveryPoints, ref yesToAll, ref noToAll)) { var itemResponse = psBackupProvider.DisableProtectionWithDeleteData(); Logger.Instance.WriteDebug("item Response " + JsonConvert.SerializeObject(itemResponse)); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } else { var itemResponse = psBackupProvider.DisableProtectionWithDeleteData(); Logger.Instance.WriteDebug("item Response " + JsonConvert.SerializeObject(itemResponse)); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } else { var itemResponse = psBackupProvider.DisableProtection(); Logger.Instance.WriteDebug("Disable protection response " + JsonConvert.SerializeObject(itemResponse)); // Track Response and display job details HandleCreatedJob( itemResponse, Resources.DisableProtectionOperation, vaultName: vaultName, resourceGroupName: resourceGroupName); } } ); }, ShouldProcess(Item.Name, VerbsLifecycle.Disable)); }