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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }