From eb302f4d00257224c1565c69e0a55d6343ba8619 Mon Sep 17 00:00:00 2001 From: mkherani Date: Tue, 18 Aug 2015 15:39:27 +0530 Subject: [PATCH 1/3] Blocking registration of already registered VM from powershell. --- .../Cmdlets/Container/RegisterAzureRMBackupContainer.cs | 3 ++- .../Commands.AzureBackup/Properties/Resources.Designer.cs | 3 ++- .../AzureBackup/Commands.AzureBackup/Properties/Resources.resx | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs index cc9acc11c418..6d64a6f3618b 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs @@ -159,7 +159,8 @@ private bool IsDiscoveryNeeded(string vmName, string rgName, out CSMContainerRes ContainerQueryParameters parameters = new ContainerQueryParameters() { ContainerType = ManagedContainerType.IaasVM.ToString(), - FriendlyName = vmName, + FriendlyName = vmName, + Status = AzureBackupContainerRegistrationStatus.NotRegistered.ToString(), }; //First check if container is discovered or not diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs index c623108e7a72..8afdda456a66 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs @@ -65,7 +65,8 @@ internal Resources() { ///1. VM does not exist ///2. VM is Azure IaaS v2 VM ///3. The VM name or the Service name needs to be case sensitive - /// + ///4. VM is already Registered with same or other Vault. Please Unregister VM first and then try to register it again. + /// ///Please contact Microsoft for further assistant.. /// internal static string AzureVMNotFound { diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx index 749a03eaa037..932e9b0e937f 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx @@ -122,7 +122,8 @@ 1. VM does not exist 2. VM is Azure IaaS v2 VM 3. The VM name or the Service name needs to be case sensitive - +4. VM is already Registered with same or other Vault. Please Unregister VM first and then try to register it again. + Please contact Microsoft for further assistant. From 8298e242852b7e3d5723bf86c0e357a9720451eb Mon Sep 17 00:00:00 2001 From: pikumarmsft Date: Tue, 18 Aug 2015 19:27:23 +0530 Subject: [PATCH 2/3] Moving hard coded string to Resorces file. --- .../AzureBackUpRestoreBase.cs | 2 +- .../AzureBackupClientAdapter/PolicyAdapter.cs | 2 +- .../AzureBackupCmdletBase.cs | 16 +- .../AzureBackupContainerCmdletBase.cs | 2 +- .../AzureBackupDSCmdletBase.cs | 2 +- .../AzureBackupItemCmdletBase.cs | 2 +- .../AzureBackupPolicyCmdletBase.cs | 2 +- .../Cmdlets/Backup/BackupAzureRMBackupItem.cs | 5 +- ...bleAzureRMBackupContainerReregistration.cs | 2 +- .../Container/GetAzureRMBackupContainer.cs | 5 +- .../RegisterAzureRMBackupContainer.cs | 22 +- .../Item/Disable-AzureRMBackupProtection .cs | 5 +- .../Item/Enable-AzureRMBackupProtection .cs | 12 +- .../Cmdlets/Item/GetAzureRMBackupItem.cs | 5 +- .../Cmdlets/Jobs/GetAzureRMBackupJob.cs | 25 +- .../Jobs/GetAzureRMBackupJobDetails.cs | 5 +- .../Cmdlets/Jobs/StopAzureRMBackukpJob.cs | 7 +- .../Cmdlets/Jobs/WaitAzureRMBackupJob.cs | 13 +- .../GetAzureRMBackupProtectionPolicy.cs | 14 +- .../NewAzureRMBackupProtectionPolicy.cs | 7 +- .../RemoveAzureRMBackupProtectionPolicy.cs | 7 +- .../SetAzureRMBackupProtectionPolicy.cs | 13 +- .../GetAzureRMBackupRecoveryPoint.cs | 7 +- .../Restore/RestoreAzureRMBackupItem.cs | 5 +- .../Cmdlets/Vault/NewAzureRMBackupVault.cs | 5 +- .../Cmdlets/Vault/SetAzureRMBackupVault.cs | 3 +- .../GetAzureRMBackupVaultCredentials.cs | 13 +- .../Helpers/ProtectionPolicyHelpers.cs | 70 +- .../Models/AzurePSBackupVault.cs | 5 +- .../Properties/Resources.Designer.cs | 976 +++++++++++++++++- .../Properties/Resources.resx | 325 ++++++ ...re.Management.BackupServicesManagement.dll | Bin 212480 -> 236544 bytes 32 files changed, 1448 insertions(+), 136 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackUpRestoreBase.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackUpRestoreBase.cs index cc1e26f4ab2a..5cbce720bd25 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackUpRestoreBase.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackUpRestoreBase.cs @@ -40,7 +40,7 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug(String.Format("Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}", RecoveryPoint.ResourceGroupName, RecoveryPoint.ResourceName)); + WriteDebug(String.Format(Resources.CmdletCalled, RecoveryPoint.ResourceGroupName, RecoveryPoint.ResourceName, RecoveryPoint.Location)); InitializeAzureBackupCmdlet(RecoveryPoint.ResourceGroupName, RecoveryPoint.ResourceName); } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/PolicyAdapter.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/PolicyAdapter.cs index f4260c719b98..df17ca032313 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/PolicyAdapter.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/PolicyAdapter.cs @@ -94,7 +94,7 @@ public void CheckProtectionPolicyNameAvailability(string resourceGroupName, stri var policy = GetProtectionPolicyByName(resourceGroupName, resourceName, name); if (policy != null) { - var exception = new ArgumentException("A protection policy with the specified name already exists."); + var exception = new ArgumentException(Resources.PolicyAlreadyExist); throw exception; } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletBase.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletBase.cs index badebb06f932..a30eb28024a3 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletBase.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletBase.cs @@ -59,7 +59,7 @@ protected void InitializeAzureBackupCmdlet(string rgName, string rName) var cloudServicesClient = AzureSession.ClientFactory.CreateClient(Profile, Profile.Context.Subscription, AzureEnvironment.Endpoint.ResourceManager); azureBackupClientAdapter = new AzureBackupClientAdapter(cloudServicesClient.Credentials, cloudServicesClient.BaseUri); - WriteDebug(string.Format("Initialized AzureBackup Cmdlet, ClientRequestId: {0}, ResourceGroupName: {1}, ResourceName : {2}", azureBackupClientAdapter.GetClientRequestId(), rgName, rName)); + WriteDebug(string.Format(Resources.InitializingClient, azureBackupClientAdapter.GetClientRequestId(), rgName, rName)); } /// @@ -79,7 +79,7 @@ protected void ExecutionBlock(Action execAction) } catch (Exception exception) { - WriteDebug(String.Format("Caught exception, type: {0}", exception.GetType())); + WriteDebug(String.Format(Resources.ExceptionInExecution, exception.GetType())); HandleException(exception); } } @@ -93,7 +93,7 @@ private void HandleException(Exception exception) if (exception is AggregateException && ((AggregateException)exception).InnerExceptions != null && ((AggregateException)exception).InnerExceptions.Count != 0) { - WriteDebug("Handling aggregate exception"); + WriteDebug(Resources.AggregateException); foreach (var innerEx in ((AggregateException)exception).InnerExceptions) { HandleException(innerEx); @@ -110,14 +110,14 @@ private void HandleException(Exception exception) var cloudEx = exception as CloudException; if (cloudEx.Response != null && cloudEx.Response.StatusCode == HttpStatusCode.NotFound) { - WriteDebug(String.Format("Received CloudException, StatusCode: {0}", cloudEx.Response.StatusCode)); + WriteDebug(String.Format(Resources.CloudExceptionCodeNotFound, cloudEx.Response.StatusCode)); targetEx = new Exception(Resources.ResourceNotFoundMessage); targetErrorCategory = ErrorCategory.InvalidArgument; } else if (cloudEx.Error != null) { - WriteDebug(String.Format("Received CloudException, ErrorCode: {0}, Message: {1}", cloudEx.Error.Code, cloudEx.Error.Message)); + WriteDebug(String.Format(Resources.CloudException, cloudEx.Error.Code, cloudEx.Error.Message)); targetErrorId = cloudEx.Error.Code; targetErrorCategory = ErrorCategory.InvalidOperation; @@ -126,13 +126,13 @@ private void HandleException(Exception exception) else if (exception is WebException) { var webEx = exception as WebException; - WriteDebug(string.Format("Received WebException, Response: {0}, Status: {1}", webEx.Response, webEx.Status)); + WriteDebug(string.Format(Resources.WebException, webEx.Response, webEx.Status)); targetErrorCategory = ErrorCategory.ConnectionError; } else if (exception is ArgumentException || exception is ArgumentNullException) { - WriteDebug(string.Format("Received ArgumentException")); + WriteDebug(string.Format(Resources.ArgumentException)); targetErrorCategory = ErrorCategory.InvalidArgument; } @@ -169,7 +169,7 @@ internal CSMOperationResult TrackOperation(string resourceGroupName, string reso if (response.Status != CSMAzureBackupOperationStatus.InProgress.ToString()) { - WriteDebug(String.Format("OperationStatus : {0}", response.Status)); + WriteDebug(String.Format(Resources.OperationStatus, response.Status)); break; } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupContainerCmdletBase.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupContainerCmdletBase.cs index a93f6a951912..8a70d8635362 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupContainerCmdletBase.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupContainerCmdletBase.cs @@ -37,7 +37,7 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug(String.Format("Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2}", Container.ResourceGroupName, Container.ResourceName, Container.Location)); + WriteDebug(String.Format(Resources.CmdletCalled, Container.ResourceGroupName, Container.ResourceName, Container.Location)); InitializeAzureBackupCmdlet(Container.ResourceGroupName, Container.ResourceName); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupDSCmdletBase.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupDSCmdletBase.cs index 709a6cebe7cb..74455d5fefd4 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupDSCmdletBase.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupDSCmdletBase.cs @@ -37,7 +37,7 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug(String.Format("Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}", Item.ResourceGroupName, Item.ResourceName)); + WriteDebug(String.Format(Resources.CmdletCalled, Item.ResourceGroupName, Item.ResourceName, Item.Location)); InitializeAzureBackupCmdlet(Item.ResourceGroupName, Item.ResourceName); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupItemCmdletBase.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupItemCmdletBase.cs index eda3641e9c65..fdad61ff1125 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupItemCmdletBase.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupItemCmdletBase.cs @@ -36,7 +36,7 @@ public abstract class AzureRMBackupItemCmdletBase : AzureBackupCmdletBase public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug(String.Format("Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2}", Item.ResourceGroupName, Item.ResourceName, Item.Location)); + WriteDebug(String.Format(Resources.CmdletCalled, Item.ResourceGroupName, Item.ResourceName, Item.Location)); InitializeAzureBackupCmdlet(Item.ResourceGroupName, Item.ResourceName); } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupPolicyCmdletBase.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupPolicyCmdletBase.cs index edb2066cd24a..fd3448384205 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupPolicyCmdletBase.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupPolicyCmdletBase.cs @@ -40,7 +40,7 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug(String.Format("Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2}", + WriteDebug(String.Format(Resources.CmdletCalled, ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Location)); InitializeAzureBackupCmdlet(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Backup/BackupAzureRMBackupItem.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Backup/BackupAzureRMBackupItem.cs index 4815ccaefd69..dff9d4cb385c 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Backup/BackupAzureRMBackupItem.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Backup/BackupAzureRMBackupItem.cs @@ -20,6 +20,7 @@ using Microsoft.Azure.Management.BackupServices.Models; using MBS = Microsoft.Azure.Management.BackupServices; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -35,10 +36,10 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); Guid operationId = AzureBackupClient.TriggerBackup(Item.ResourceGroupName, Item.ResourceName, Item.ContainerUniqueName, Item.ItemName); - WriteDebug(string.Format("Triggered backup. Converting response {0}", operationId)); + WriteDebug(string.Format(Resources.TriggeringBackup, operationId)); var operationStatus = TrackOperation(Item.ResourceGroupName, Item.ResourceName, operationId); WriteObject(GetCreatedJobs(Item.ResourceGroupName, Item.ResourceName, new Models.AzureRMBackupVault(Item.ResourceGroupName, Item.ResourceName, Item.Location), operationStatus.JobList).FirstOrDefault()); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/EnableAzureRMBackupContainerReregistration.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/EnableAzureRMBackupContainerReregistration.cs index c8bab2b68b40..7fe6cc352f75 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/EnableAzureRMBackupContainerReregistration.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/EnableAzureRMBackupContainerReregistration.cs @@ -50,7 +50,7 @@ public override void ExecuteCmdlet() AzureBackupClient.EnableMachineContainerReregistration(Container.ResourceGroupName, Container.ResourceName, Container.Id); break; default: - throw new ArgumentException("Reregistration can be enable only for machine containers."); + throw new ArgumentException(Resources.CannotEnableRegistration); } }); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureRMBackupContainer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureRMBackupContainer.cs index 2db30fc3bb6c..4a60561d17c8 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureRMBackupContainer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureRMBackupContainer.cs @@ -15,6 +15,7 @@ using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Commands.AzureBackup.Library; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; using Microsoft.Azure.Management.BackupServices.Models; using System; using System.Collections.Generic; @@ -123,7 +124,7 @@ private List GetManagedContainers(string resourceGroupNa List containers = new List(); containers.AddRange(AzureBackupClient.ListContainers(resourceGroupName, resourceName, parameters)); - WriteDebug(string.Format("Fetched {0} containers", containers.Count())); + WriteDebug(string.Format(Resources.FetchedContainer , containers.Count())); // When resource group name is specified, remove all containers whose resource group name // doesn't match the given resource group name @@ -134,7 +135,7 @@ private List GetManagedContainers(string resourceGroupNa string rgName = ContainerHelpers.GetRGNameFromId(container.Properties.ParentContainerId); return rgName != ManagedResourceGroupName; }); - WriteDebug(string.Format("Count of containers after resource group filter = {0}", containers.Count)); + WriteDebug(string.Format(Resources.ContainerCountAfterFilter, containers.Count)); } // TODO: Container friendly name is not captures in Container response diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs index cc9acc11c418..a3c0cf8ede30 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/RegisterAzureRMBackupContainer.cs @@ -64,20 +64,20 @@ public override void ExecuteCmdlet() { vmName = Name; rgName = ServiceName; - WriteDebug(String.Format("Registering ARM-V1 VM, VMName: {0}, CloudServiceName: {1}", vmName, rgName)); + WriteDebug(String.Format(Resources.RegisteringARMVM1, vmName, rgName)); ServiceOrRG = "CloudServiceName"; } else if(this.ParameterSetName == V2VMParameterSet) { vmName = Name; rgName = ResourceGroupName; - WriteDebug(String.Format("Registering ARM-V2 VM, VMName: {0}, ResourceGroupName: {1}", vmName, rgName)); + WriteDebug(String.Format(Resources.RegisteringARMVM2, vmName, rgName)); ServiceOrRG = "ResourceGroupName"; } else { - throw new PSArgumentException("Please make sure you have pass right set of parameters"); //TODO: PM scrub needed + throw new PSArgumentException(Resources.PSArgumentException); //TODO: PM scrub needed } Guid jobId = Guid.Empty; @@ -87,20 +87,20 @@ public override void ExecuteCmdlet() isDiscoveryNeed = IsDiscoveryNeeded(vmName, rgName, out container); if(isDiscoveryNeed) { - WriteDebug(String.Format("VM {0} is not yet discovered. Triggering Discovery", vmName)); + WriteDebug(String.Format(Resources.VMNotDiscovered, vmName)); RefreshContainer(Vault.ResourceGroupName, Vault.Name); isDiscoveryNeed = IsDiscoveryNeeded(vmName, rgName, out container); if ((isDiscoveryNeed == true) || (container == null)) { //Container is not discovered. Throw exception - string errMsg = String.Format("Failed to discover VM {0} under {1} {2}. Please make sure names are correct and VM is not deleted", vmName, ServiceOrRG, rgName); + string errMsg = String.Format(Resources.DiscoveryFailure, vmName, ServiceOrRG, rgName); WriteDebug(errMsg); ThrowTerminatingError(new ErrorRecord(new Exception(Resources.AzureVMNotFound), string.Empty, ErrorCategory.InvalidArgument, null)); } } //Container is discovered. Register the container - WriteDebug(String.Format("Going to register VM {0}", vmName)); + WriteDebug(String.Format(Resources.RegisteringVM, vmName)); var operationId = AzureBackupClient.RegisterContainer(Vault.ResourceGroupName, Vault.Name, container.Name); var operationStatus = GetOperationStatus(Vault.ResourceGroupName, Vault.Name, operationId); @@ -141,13 +141,13 @@ private bool WaitForDiscoveryToComplete(string resourceGroupName, string resourc { isDiscoverySuccessful = false; errorMessage = status.Error.Message; - WriteDebug(String.Format("Discovery operation failed with ErrorCode: {0}", status.Error.Code)); + WriteDebug(String.Format(Resources.DiscoveryFailureErrorCode, status.Error.Code)); if ((status.Error.Code == AzureBackupOperationErrorCode.DiscoveryInProgress.ToString() || (status.Error.Code == AzureBackupOperationErrorCode.BMSUserErrorObjectLocked.ToString()))) { //Need to retry for this errors isRetryNeeded = true; - WriteDebug(String.Format("Going to retry Discovery if retry count is not exceeded")); + WriteDebug(String.Format(Resources.RertyDiscovery)); } } return isRetryNeeded; @@ -164,11 +164,11 @@ private bool IsDiscoveryNeeded(string vmName, string rgName, out CSMContainerRes //First check if container is discovered or not var containers = AzureBackupClient.ListContainers(Vault.ResourceGroupName, Vault.Name, parameters); - WriteDebug(String.Format("Container count returned from service: {0}.", containers.Count())); + WriteDebug(String.Format(Resources.ContainerCountFromService, containers.Count())); if (containers.Count() == 0) { //Container is not discover - WriteDebug("Container is not discovered"); + WriteDebug(Resources.ContainerNotDiscovered); container = null; isDiscoveryNeed = true; } @@ -180,7 +180,7 @@ private bool IsDiscoveryNeeded(string vmName, string rgName, out CSMContainerRes if (container == null) { //Container is not in list of registered container - WriteDebug(String.Format("Desired Container is not found. Returning with isDiscoveryNeed = true")); + WriteDebug(String.Format(Resources.DesiredContainerNotFound)); isDiscoveryNeed = true; } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureRMBackupProtection .cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureRMBackupProtection .cs index 52170422a00b..ef40407e65df 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureRMBackupProtection .cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureRMBackupProtection .cs @@ -13,6 +13,7 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; using Microsoft.Azure.Management.BackupServices; using Microsoft.Azure.Management.BackupServices.Models; using System; @@ -51,7 +52,7 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); Guid operationId = Guid.Empty; - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); if (!this.DeleteBackupData) { @@ -71,7 +72,7 @@ public override void ExecuteCmdlet() } - WriteDebug("Received disable azure backup protection response"); + WriteDebug(Resources.DisableAzureBackupProtection); var operationStatus = TrackOperation(Item.ResourceGroupName, Item.ResourceName, operationId); this.WriteObject(GetCreatedJobs(Item.ResourceGroupName, Item.ResourceName, diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureRMBackupProtection .cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureRMBackupProtection .cs index f1b132b6dc81..1c7a6f518c05 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureRMBackupProtection .cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureRMBackupProtection .cs @@ -22,6 +22,7 @@ using System.Runtime.Serialization; using Microsoft.Azure.Management.BackupServices; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -41,7 +42,7 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); string itemName = string.Empty; CSMSetProtectionRequest input = new CSMSetProtectionRequest(); @@ -55,24 +56,25 @@ public override void ExecuteCmdlet() else if (Item.GetType() == typeof(AzureRMBackupContainer)) { - WriteDebug("Input is container Type = " + Item.GetType()); + WriteDebug(String.Format(Resources.ContainerTypeInput, Item.GetType())); + if ((Item as AzureRMBackupContainer).ContainerType == AzureBackupContainerType.AzureVM.ToString()) { itemName = (Item as AzureRMBackupContainer).ContainerUniqueName; } else { - throw new Exception("Unknown item type"); + throw new Exception(Resources.UnknownItemType); } } else { - throw new Exception("Unknown item type"); + throw new Exception(Resources.UnknownItemType); } var operationId = AzureBackupClient.EnableProtection(Item.ResourceGroupName, Item.ResourceName, Item.ContainerUniqueName, itemName, input); - WriteDebug("Received enable azure backup protection response"); + WriteDebug(Resources.EnableAzureBackupProtection); var operationStatus = TrackOperation(Item.ResourceGroupName, Item.ResourceName, operationId); this.WriteObject(GetCreatedJobs(Item.ResourceGroupName, diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/GetAzureRMBackupItem.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/GetAzureRMBackupItem.cs index b74bbcab51f9..a0e6495bde0b 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/GetAzureRMBackupItem.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/GetAzureRMBackupItem.cs @@ -22,6 +22,7 @@ using System.Collections.Specialized; using Microsoft.Azure.Common.OData; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -52,7 +53,7 @@ public override void ExecuteCmdlet() List azureBackupDatasourceObjects = null; List azureBackupPOObjects = null; - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); CSMProtectedItemQueryObject DSQueryParam = new CSMProtectedItemQueryObject() { ProtectionStatus = this.ProtectionStatus, @@ -82,7 +83,7 @@ public override void ExecuteCmdlet() } } - WriteDebug("Received azure backup item response"); + WriteDebug(Resources.AzureBackupItemResponse); WriteAzureBackupItem(azureBackupDatasourceObjects, azureBackupPOObjects, Container); }); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJob.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJob.cs index 0eab1f74bb1f..0c8a35f7cd73 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJob.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJob.cs @@ -21,6 +21,7 @@ using Microsoft.Azure.Management.BackupServices; using Mgmt = Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -83,9 +84,9 @@ public override void ExecuteCmdlet() { if (To.HasValue) { - throw new Exception("Please specify both From and To."); + throw new Exception(Resources.AzureBackupJobArguementException); } - WriteDebug("Setting StartTime to min value."); + WriteDebug(Resources.SettingStartTime); From = new DateTime(); From = AzureBackupJobHelper.MinimumAllowedDate; } @@ -96,18 +97,18 @@ public override void ExecuteCmdlet() } else if (To.HasValue && To.Value <= From.Value) { - throw new Exception("From should be lesser than To."); + throw new Exception(Resources.TimeFilterNotCorrect); } else { if (From != AzureBackupJobHelper.MinimumAllowedDate) { - WriteDebug("End time not set. Setting it to current time."); + WriteDebug(Resources.EndTimeNotSet); To = DateTime.Now; } else { - WriteDebug("Setting EndTime to min value."); + WriteDebug(Resources.SettingEndTime); To = new DateTime(); To = AzureBackupJobHelper.MinimumAllowedDate; } @@ -126,12 +127,12 @@ public override void ExecuteCmdlet() To = DateTime.UtcNow; } - WriteDebug("StartTime filter is: " + System.Uri.EscapeDataString(From.Value.ToString("yyyy-MM-dd hh:mm:ss tt"))); - WriteDebug("EndTime filter is: " + System.Uri.EscapeDataString(To.Value.ToString("yyyy-MM-dd hh:mm:ss tt"))); - WriteDebug("Operation filter is: " + Operation); - WriteDebug("Status filter is: " + Status); - WriteDebug("Type filter is: " + Type); - WriteDebug("JobID filter is: " + JobId); + WriteDebug(String.Format(Resources.StartTimeFilter, System.Uri.EscapeDataString(From.Value.ToString("yyyy-MM-dd hh:mm:ss tt")))); + WriteDebug(String.Format(Resources.EndTimeFilter, System.Uri.EscapeDataString(To.Value.ToString("yyyy-MM-dd hh:mm:ss tt")))); + WriteDebug(String.Format(Resources.OperationFilter, Operation)); + WriteDebug(String.Format(Resources.StatusFilter, Status)); + WriteDebug(String.Format(Resources.TypeFilter, Type)); + WriteDebug(String.Format(Resources.JobIdFilter, JobId)); Mgmt.CSMJobQueryObject queryParams = new Mgmt.CSMJobQueryObject() { @@ -152,7 +153,7 @@ public override void ExecuteCmdlet() retrievedJobs.Add(new AzureRMBackupJob(Vault, serviceJob.Properties, serviceJob.Name)); } - WriteDebug("Successfully retrieved all jobs. Number of jobs retrieved: " + retrievedJobs.Count()); + WriteDebug(String.Format(Resources.JobRetrieved, retrievedJobs.Count())); if (retrievedJobs.Count == 1) { diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJobDetails.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJobDetails.cs index 3cfda7b613ff..742b85ae59f5 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJobDetails.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureRMBackupJobDetails.cs @@ -19,6 +19,7 @@ using System.Linq; using Mgmt = Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -55,12 +56,12 @@ public override void ExecuteCmdlet() JobID = Job.InstanceId; } - WriteDebug("JobID filter is: " + JobID); + WriteDebug(String.Format(Resources.JobIdFilter, JobID)); Mgmt.CSMJobDetailsResponse serviceJobProperties = AzureBackupClient.GetJobDetails(Vault.ResourceGroupName, Vault.Name, JobID); AzureRMBackupJobDetails jobDetails = new AzureRMBackupJobDetails(Vault, serviceJobProperties.JobDetailedProperties, serviceJobProperties.Name); - WriteDebug("Retrieved JobDetails from service."); + WriteDebug(Resources.JobResponse); WriteObject(jobDetails); }); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/StopAzureRMBackukpJob.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/StopAzureRMBackukpJob.cs index b8acf53a9181..c0f5de4f1993 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/StopAzureRMBackukpJob.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/StopAzureRMBackukpJob.cs @@ -21,6 +21,7 @@ using System.Threading.Tasks; using Mgmt = Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -58,17 +59,17 @@ public override void ExecuteCmdlet() JobID = Job.InstanceId; } - WriteDebug("JobID is: " + JobID); + WriteDebug(String.Format(Resources.JobId, JobID)); Guid cancelTaskId = AzureBackupClient.TriggerCancelJob(Vault.ResourceGroupName, Vault.Name, JobID); CSMOperationResult opResponse = TrackOperation(Vault.ResourceGroupName, Vault.Name, cancelTaskId); if (opResponse.Status == CSMAzureBackupOperationStatus.Succeeded.ToString()) { - WriteDebug("Triggered cancellation of job with JobID: " + JobID); + WriteDebug(String.Format(Resources.TriggeredCancellationJob, JobID)); } else { - throw new Exception("Stop Job failed with ErrorCode: " + opResponse.Error.Code); + throw new Exception(String.Format(Resources.StopJobFailed, opResponse.Error.Code)); } }); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/WaitAzureRMBackupJob.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/WaitAzureRMBackupJob.cs index 3a90a84abee6..af4b8253f462 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/WaitAzureRMBackupJob.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/WaitAzureRMBackupJob.cs @@ -19,6 +19,7 @@ using System.Linq; using Mgmt = Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -50,7 +51,7 @@ public override void ExecuteCmdlet() } else if (Job is List) { - WriteDebug("Type of input paramter is List second case"); + WriteDebug(Resources.AzureBackupJobInputType); foreach (AzureRMBackupJob jobToWait in (Job as List)) { Vault = new AzureRMBackupVault(jobToWait.ResourceGroupName, jobToWait.ResourceName, jobToWait.Location); @@ -81,11 +82,11 @@ public override void ExecuteCmdlet() } } - WriteDebug("Number of jobs to wait on: " + specifiedJobs.Count); + WriteDebug(String.Format(Resources.NumberOfJobsForWaiting, specifiedJobs.Count)); if (specifiedJobs.Count == 0) { - WriteDebug("No jobs to wait on. Quitting."); + WriteDebug(Resources.QuittingWaitJob); return; } @@ -104,11 +105,11 @@ public override void ExecuteCmdlet() while (true) { - WriteDebug("In loop querying jobs"); + WriteDebug(Resources.QueryingJobs); if (DateTime.UtcNow.Subtract(waitingStartTime).TotalSeconds >= TimeOut) { - WriteDebug("Exiting due to timeout."); + WriteDebug(Resources.TimeOutWaitInJob); break; } @@ -128,7 +129,7 @@ public override void ExecuteCmdlet() if (!areJobsRunning) { - WriteDebug("Exiting because all jobs have finished running."); + WriteDebug(Resources.AllJobsCompleted); break; } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/GetAzureRMBackupProtectionPolicy.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/GetAzureRMBackupProtectionPolicy.cs index 815e9cf9bd21..0b334aec9cd1 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/GetAzureRMBackupProtectionPolicy.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/GetAzureRMBackupProtectionPolicy.cs @@ -12,14 +12,10 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using System; -using System.Management.Automation; -using System.Collections.Generic; -using System.Xml; -using System.Linq; -using Microsoft.Azure.Management.BackupServices.Models; -using Microsoft.Azure.Commands.AzureBackup.Models; using Microsoft.Azure.Commands.AzureBackup.Helpers; +using Microsoft.Azure.Commands.AzureBackup.Models; +using System.Collections.Generic; +using System.Management.Automation; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -38,7 +34,7 @@ public override void ExecuteCmdlet() ExecutionBlock(() => { base.ExecuteCmdlet(); - + if (Name != null) { var policyInfo = AzureBackupClient.GetProtectionPolicyByName(Vault.ResourceGroupName, Vault.Name, Name); @@ -48,7 +44,7 @@ public override void ExecuteCmdlet() { var policyObjects = AzureBackupClient.ListProtectionPolicies(Vault.ResourceGroupName, Vault.Name); WriteObject(ProtectionPolicyHelpers.GetCmdletPolicies(Vault, policyObjects)); - } + } }); } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/NewAzureRMBackupProtectionPolicy.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/NewAzureRMBackupProtectionPolicy.cs index 21801c1a629d..cf3406a42c85 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/NewAzureRMBackupProtectionPolicy.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/NewAzureRMBackupProtectionPolicy.cs @@ -20,6 +20,7 @@ using Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -69,14 +70,14 @@ public override void ExecuteCmdlet() ProtectionPolicyHelpers.ValidateProtectionPolicyName(Name); AzureBackupClient.CheckProtectionPolicyNameAvailability(Vault.ResourceGroupName, Vault.Name, this.Name); - var ScheduleType = ProtectionPolicyHelpers.GetScheduleType(DaysOfWeek, this.ParameterSetName, + var ScheduleType = ProtectionPolicyHelpers.GetScheduleType(DaysOfWeek, this.ParameterSetName, DailyScheduleParamSet, WeeklyScheduleParamSet); var backupSchedule = ProtectionPolicyHelpers.FillCSMBackupSchedule(ScheduleType, BackupTime, DaysOfWeek); ProtectionPolicyHelpers.ValidateRetentionPolicy(RetentionPolicy, backupSchedule); - + var addCSMProtectionPolicyRequest = new CSMAddProtectionPolicyRequest(); addCSMProtectionPolicyRequest.PolicyName = this.Name; addCSMProtectionPolicyRequest.Properties = new CSMAddProtectionPolicyRequestProperties(); @@ -87,7 +88,7 @@ public override void ExecuteCmdlet() addCSMProtectionPolicyRequest.Properties.LtrRetentionPolicy = ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(RetentionPolicy, backupSchedule); AzureBackupClient.AddProtectionPolicy(Vault.ResourceGroupName, Vault.Name, this.Name, addCSMProtectionPolicyRequest); - WriteDebug("Protection policy created successfully"); + WriteDebug(Resources.ProtectionPolicyCreated); var policyInfo = AzureBackupClient.GetProtectionPolicyByName(Vault.ResourceGroupName, Vault.Name, Name); WriteObject(ProtectionPolicyHelpers.GetCmdletPolicy(Vault, policyInfo)); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/RemoveAzureRMBackupProtectionPolicy.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/RemoveAzureRMBackupProtectionPolicy.cs index 3d912e2e5e12..e161d8a4680a 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/RemoveAzureRMBackupProtectionPolicy.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/RemoveAzureRMBackupProtectionPolicy.cs @@ -19,6 +19,7 @@ using System.Linq; using Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -34,17 +35,17 @@ public override void ExecuteCmdlet() { base.ExecuteCmdlet(); - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); var policyInfo = AzureBackupClient.GetProtectionPolicyByName(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Name); if (policyInfo != null) { AzureBackupClient.DeleteProtectionPolicy(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, policyInfo.Name); - WriteDebug("Successfully deleted policy"); + WriteDebug(Resources.ProtectionPolicyDeleted); } else { - var exception = new ArgumentException(string.Format("Protection Policy {0} not found.", policyInfo.Name)); + var exception = new ArgumentException(string.Format(Resources.PolicyNotFound, policyInfo.Name)); throw exception; } }); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/SetAzureRMBackupProtectionPolicy.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/SetAzureRMBackupProtectionPolicy.cs index 60b24cd936bb..58bc57f833ae 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/SetAzureRMBackupProtectionPolicy.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/ProtectionPolicy/SetAzureRMBackupProtectionPolicy.cs @@ -21,6 +21,7 @@ using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Commands.AzureBackup.Models; using CmdletModel = Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -59,7 +60,7 @@ public override void ExecuteCmdlet() ExecutionBlock(() => { base.ExecuteCmdlet(); - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); var response = AzureBackupClient.GetProtectionPolicyByName(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Name); var vault = new CmdletModel.AzureRMBackupVault(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Location); @@ -68,7 +69,7 @@ public override void ExecuteCmdlet() if (policyInfo == null) { - throw new ArgumentException(String.Format("Protection policy {0} not found", ProtectionPolicy.Name)); + throw new ArgumentException(String.Format(Resources.PolicyNotFound, ProtectionPolicy.Name)); } FillRemainingValuesForSetPolicyRequest(policyInfo, this.NewName); @@ -102,14 +103,14 @@ public override void ExecuteCmdlet() string resourceGroupName = ProtectionPolicy.ResourceGroupName; string resourceName = ProtectionPolicy.ResourceName; var operationStatus = GetOperationStatus(resourceGroupName, resourceName, operationId); - WriteDebug("Protection Policy successfully updated and created job(s) to re-configure protection on associated items"); + WriteDebug(Resources.PolicyUpdatedReconfigureProtectionDone); WriteObject(GetCreatedJobs(resourceGroupName, resourceName, vault, operationStatus.JobList)); } else { - WriteDebug("Protection Policy successfully updated"); + WriteDebug(Resources.PolicyUpdated); } }); @@ -126,7 +127,7 @@ private void FillRemainingValuesForSetPolicyRequest(AzureRMBackupProtectionPolic BackupTime = (BackupTime == DateTime.MinValue) ? policy.BackupTime : BackupTime; - WriteDebug("ParameterSetName = " + this.ParameterSetName.ToString()); + WriteDebug(String.Format(Resources.PolicyParameterSet, this.ParameterSetName.ToString())); if (this.ParameterSetName != NoScheduleParamSet ) { @@ -151,7 +152,7 @@ private void FillRemainingValuesForSetPolicyRequest(AzureRMBackupProtectionPolic } else if (DaysOfWeek != null && DaysOfWeek.Length > 0) { - throw new ArgumentException("For DaysOfWeek, weekly switch param is required"); + throw new ArgumentException(Resources.PolicyArgumentException); } } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/RecoveryPoint/GetAzureRMBackupRecoveryPoint.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/RecoveryPoint/GetAzureRMBackupRecoveryPoint.cs index c1d11524063a..f70976bdb17b 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/RecoveryPoint/GetAzureRMBackupRecoveryPoint.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/RecoveryPoint/GetAzureRMBackupRecoveryPoint.cs @@ -19,6 +19,7 @@ using System.Linq; using Microsoft.Azure.Management.BackupServices.Models; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -38,7 +39,7 @@ public override void ExecuteCmdlet() ExecutionBlock(() => { - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); if (RecoveryPointId != null) { @@ -49,7 +50,7 @@ public override void ExecuteCmdlet() } else { - WriteDebug(string.Format("{0}{1}", "No recovery point exist with Id := ", RecoveryPointId)); + WriteDebug(string.Format(Resources.NoRpExist, RecoveryPointId)); } } else @@ -70,7 +71,7 @@ public override void ExecuteCmdlet() } else { - WriteDebug("No recovery point found"); + WriteDebug(Resources.NoRpFound); } } }); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Restore/RestoreAzureRMBackupItem.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Restore/RestoreAzureRMBackupItem.cs index 6c043339cfcf..4c558243526c 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Restore/RestoreAzureRMBackupItem.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Restore/RestoreAzureRMBackupItem.cs @@ -21,6 +21,7 @@ using MBS = Microsoft.Azure.Management.BackupServices; using System.Web.Script.Serialization; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets { @@ -40,7 +41,7 @@ public override void ExecuteCmdlet() ExecutionBlock(() => { - WriteDebug("Making client call"); + WriteDebug(Resources.MakingClientCall); AzureIaaSVMRecoveryInputsCSMObject azureIaaSVMRecoveryInputsCSMObject = new AzureIaaSVMRecoveryInputsCSMObject() { CloudServiceName = string.Empty, @@ -65,7 +66,7 @@ public override void ExecuteCmdlet() }; Guid operationId = AzureBackupClient.TriggerRestore(RecoveryPoint.ResourceGroupName, RecoveryPoint.ResourceName, RecoveryPoint.ContainerUniqueName, RecoveryPoint.ItemName, RecoveryPoint.RecoveryPointName, csmRestoreRequest); - WriteDebug(string.Format("Triggered Restore. Converting response {0}", operationId)); + WriteDebug(string.Format(Resources.TriggeringRestore, operationId)); var operationStatus = TrackOperation(RecoveryPoint.ResourceGroupName, RecoveryPoint.ResourceName, operationId); WriteObject(GetCreatedJobs(RecoveryPoint.ResourceGroupName, diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs index 22686bd86cab..aca22a655f21 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs @@ -14,6 +14,7 @@ using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; using System; using System.Management.Automation; @@ -52,13 +53,13 @@ public override void ExecuteCmdlet() base.ExecuteCmdlet(); InitializeAzureBackupCmdlet(ResourceGroupName, Name); - WriteDebug(String.Format("Creating backup vault with ResourceGroupName: {0}, ResourceName: {1}", ResourceGroupName, Name)); + WriteDebug(String.Format(Resources.CreatingBackupVault, ResourceGroupName, Name)); var createdVault = AzureBackupClient.CreateOrUpdateAzureBackupVault(ResourceGroupName, Name, Region); if (Storage != 0) { - WriteDebug(String.Format("Setting storage type for the resource, Type: {0}", Storage)); + WriteDebug(String.Format(Resources.SettingStorageType, Storage)); AzureBackupClient.UpdateStorageType(ResourceGroupName, Name, Storage.ToString()); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs index f1adaee3c1f8..53419e94d4ae 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs @@ -14,6 +14,7 @@ using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; using System; using System.Management.Automation; using CmdletModel = Microsoft.Azure.Commands.AzureBackup.Models; @@ -42,7 +43,7 @@ public override void ExecuteCmdlet() { if (Storage != 0) { - WriteDebug(String.Format("Setting storage type for the resource, Type: {0}", Storage)); + WriteDebug(String.Format(Resources.SettingStorageType, Storage)); AzureBackupClient.UpdateStorageType(Vault.ResourceGroupName, Vault.Name, Storage.ToString()); } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/VaultCredentials/GetAzureRMBackupVaultCredentials.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/VaultCredentials/GetAzureRMBackupVaultCredentials.cs index 40ab5208185f..d862f07d0c9e 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/VaultCredentials/GetAzureRMBackupVaultCredentials.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/VaultCredentials/GetAzureRMBackupVaultCredentials.cs @@ -14,6 +14,7 @@ using Microsoft.Azure.Commands.AzureBackup.Library; using Microsoft.Azure.Commands.AzureBackup.Models; +using Microsoft.Azure.Commands.AzureBackup.Properties; using Microsoft.Azure.Management.BackupServices.Models; using System; using System.Globalization; @@ -46,7 +47,7 @@ public override void ExecuteCmdlet() if (!Directory.Exists(TargetLocation)) { - throw new ArgumentException("The target location provided is not a directory. Please provide a directory."); + throw new ArgumentException(Resources.VaultCredPathException); } string subscriptionId = Profile.DefaultSubscription.Id.ToString(); @@ -54,7 +55,7 @@ public override void ExecuteCmdlet() string displayName = subscriptionId + "_" + Vault.ResourceGroupName + "_" + Vault.Name; WriteDebug(string.Format(CultureInfo.InvariantCulture, - "Executing cmdlet with SubscriptionId = {0}, ResourceGroupName = {1}, ResourceName = {2}, TargetLocation = {3}", + Resources.ExecutingGetVaultCredCmdlet, subscriptionId, Vault.ResourceGroupName, Vault.Name, TargetLocation)); X509Certificate2 cert = CertUtils.CreateSelfSignedCert(CertUtils.DefaultIssuer, @@ -68,9 +69,9 @@ public override void ExecuteCmdlet() try { // Upload cert into ID Mgmt - WriteDebug(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Going to upload the certificate")); + WriteDebug(string.Format(CultureInfo.InvariantCulture, Resources.UploadingCertToIdmgmt)); acsNamespace = UploadCert(cert, subscriptionId, Vault.Name, resourceType, Vault.ResourceGroupName); - WriteDebug(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Successfully uploaded the certificate")); + WriteDebug(string.Format(CultureInfo.InvariantCulture, Resources.UploadedCertToIdmgmt)); } catch (Exception exception) { @@ -89,7 +90,7 @@ public override void ExecuteCmdlet() // prepare for download string fileName = string.Format("{0}_{1}.VaultCredentials", displayName, DateTime.UtcNow.ToString("yyyy-dd-M--HH-mm-ss")); string filePath = Path.Combine(TargetLocation, fileName); - WriteDebug(string.Format("Saving Vault Credentials to file : {0}", filePath)); + WriteDebug(string.Format(Resources.SavingVaultCred, filePath)); File.WriteAllBytes(filePath, Encoding.UTF8.GetBytes(vaultCredsFileContent)); @@ -180,7 +181,7 @@ private string GenerateVaultCredsForBackup(X509Certificate2 cert, string subscri DataContractSerializer serializer = new DataContractSerializer(typeof(BackupVaultCreds)); serializer.WriteObject(writer, backupVaultCreds); - WriteDebug(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Backup Vault - Successfully serialized the file content")); + WriteDebug(string.Format(CultureInfo.InvariantCulture, Resources.BackupVaultSerialized)); } return Encoding.UTF8.GetString(output.ToArray()); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/ProtectionPolicyHelpers.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/ProtectionPolicyHelpers.cs index 90d8e497fc68..97044655a262 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/ProtectionPolicyHelpers.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/ProtectionPolicyHelpers.cs @@ -100,13 +100,13 @@ public static void ValidateProtectionPolicyName(string policyName) { if(policyName.Length < MinPolicyNameLength || policyName.Length > MaxPolicyNameLength) { - var exception = new ArgumentException("The protection policy name must contain between 3 and 150 characters."); + var exception = new ArgumentException(Resources.ProtectionPolicyNameLengthException); throw exception; } if(!rgx.IsMatch(policyName)) { - var exception = new ArgumentException("The protection policy name should contain alphanumeric characters and cannot start with a number."); + var exception = new ArgumentException(Resources.ProtectionPolicyNameException); throw exception; } } @@ -118,7 +118,7 @@ public static string GetScheduleType(string[] ScheduleRunDays, string parameterS { if (parameterSetName == dailyParameterSet) { - throw new ArgumentException("For daily backup schedule, protection policy cannot have DaysOfWeek param in backup schedule"); + throw new ArgumentException(Resources.BackupScheduleDailyParamException); } else { @@ -129,7 +129,7 @@ public static string GetScheduleType(string[] ScheduleRunDays, string parameterS { if (parameterSetName == weeklyParameterSet) { - throw new ArgumentException("For weekly backup schedule, DaysOfWeek in backup schedule is mandatory and cannot be empty"); + throw new ArgumentException(Resources.BackupScheduleWeeklyParamException); } else { @@ -149,7 +149,7 @@ public static void ValidateRetentionPolicy(IList r if(retentionPolicyList.Count == 0 ) { - var exception = new ArgumentException("Atleast one retention policy in RetentionPolicies param is mandatory"); + var exception = new ArgumentException(Resources.RetentionPolicyCountException); throw exception; } @@ -202,19 +202,19 @@ public static void ValidateRetentionPolicy(IList r string scheduleType = backupSchedule.ScheduleRun; if (scheduleType == ScheduleType.Daily.ToString() && validateDailyRetention == false) { - var exception = new ArgumentException("For Daily Schedule, AzureBackupDailyRetentionPolicy in RetentionPolicies param is mandatory."); + var exception = new ArgumentException(Resources.DailyScheduleException); throw exception; } if (scheduleType == ScheduleType.Weekly.ToString() && validateWeeklyRetention == false) { - var exception = new ArgumentException("For Weekly Schedule, AzureBackupWeeklyRetentionPolicy in RetentionPolicies param is mandatory."); + var exception = new ArgumentException(Resources.WeeklyScheduleException); throw exception; } if (scheduleType == ScheduleType.Weekly.ToString() && validateDailyRetention == true) { - var exception = new ArgumentException("For Weekly Schedule, AzureBackupDailyRetentionPolicy in RetentionPolicies param is not allowed."); + var exception = new ArgumentException(Resources.WeeklyScheduleWithDailyException); throw exception; } } @@ -237,7 +237,7 @@ private static IList ParseScheduleRunDays(string[] scheduleRunDays) { if (scheduleRunDays == null || scheduleRunDays.Length <= 0) { - var exception = new ArgumentException("For weekly scheduletype , ScheduleRunDays param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.WeeklyScheduleRunDaysException); throw exception; } @@ -271,25 +271,25 @@ private static void ValidateRetentionPolicyCount(int dailyRetentionCount, int we { if(dailyRetentionCount > 1) { - var exception = new ArgumentException("Only one AzureBackupDailyRetentionPolicy in RetentionPolicies is allowed."); + var exception = new ArgumentException(Resources.DailyRetentionPolicyException); throw exception; } if (weeklyRetentionCount > 1) { - var exception = new ArgumentException("Only one AzureBackupWeeklyRetentionPolicy in RetentionPolicies is allowed."); + var exception = new ArgumentException(Resources.WeeklyRetentionPolicyException); throw exception; } if (monthlyRetentionCount > 1) { - var exception = new ArgumentException("Only one AzureBackupMonthlyRetentionPolicy in RetentionPolicies is allowed."); + var exception = new ArgumentException(Resources.MonthlyRetentionPolicyException); throw exception; } if (yearlyRetentionCount > 1) { - var exception = new ArgumentException("Only one AzureBackupYearlyRetentionPolicy in RetentionPolicies is allowed."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyException); throw exception; } @@ -299,7 +299,7 @@ private static void ValidateDailyRetention(AzureBackupDailyRetentionPolicy daily { if (dailyRetention.Retention < MinRetentionInDays || dailyRetention.Retention > MaxRetentionInDays) { - var exception = new ArgumentException(string.Format("For AzureBackupDailyRetentionPolicy , valid values of retention are {0} to {1}.", MinRetentionInDays, MaxRetentionInDays)); + var exception = new ArgumentException(string.Format(Resources.DailyRetentionPolicyValueException, MinRetentionInDays, MaxRetentionInDays)); throw exception; } } @@ -308,13 +308,13 @@ private static void ValidateWeeklyRetention(AzureBackupWeeklyRetentionPolicy wee { if (weeklyRetention.Retention < MinRetention || weeklyRetention.Retention > MaxRetentionInWeeks) { - var exception = new ArgumentException(string.Format("For AzureBackupWeeklyRetentionPolicy , valid values of retention are {0} to {1}.", MinRetention, MaxRetentionInWeeks)); + var exception = new ArgumentException(string.Format(Resources.WeeklyRetentionPolicyValueException, MinRetention, MaxRetentionInWeeks)); throw exception; } if(weeklyRetention.DaysOfWeek == null || weeklyRetention.DaysOfWeek.Count == 0) { - var exception = new ArgumentException("For AzureBackupWeeklyRetentionPolicy , DaysOfWeek param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.WeeklyRetentionPolicyDaysOfWeekException); throw exception; } } @@ -323,7 +323,7 @@ private static void ValidateMonthlyRetention(AzureBackupMonthlyRetentionPolicy m { if (monthlyRetention.Retention < MinRetention || monthlyRetention.Retention > MaxRetentionInMonths) { - var exception = new ArgumentException(string.Format("For AzureBackupMonthlyRetentionPolicy , valid values of retention are {0} to {1}.", MinRetention, MaxRetentionInMonths)); + var exception = new ArgumentException(string.Format(Resources.MonthlyRetentionPolicyValueException, MinRetention, MaxRetentionInMonths)); throw exception; } @@ -331,13 +331,13 @@ private static void ValidateMonthlyRetention(AzureBackupMonthlyRetentionPolicy m { if(monthlyRetention.DaysOfMonth == null || monthlyRetention.DaysOfMonth.Count == 0) { - var exception = new ArgumentException("For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Days, DaysOfMonth param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.MonthlyRetentionPolicyDaysOfMonthParamException); throw exception; } if(monthlyRetention.DaysOfWeek != null || monthlyRetention.WeekNumber != null) { - var exception = new ArgumentException("For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Days, DaysOfWeek or WeekNumber params are not allowed."); + var exception = new ArgumentException(Resources.MonthlyRetentionPolicyDaysOfWeekParamException); throw exception; } } @@ -346,19 +346,19 @@ private static void ValidateMonthlyRetention(AzureBackupMonthlyRetentionPolicy m { if (monthlyRetention.DaysOfWeek == null || monthlyRetention.DaysOfWeek.Count == 0) { - var exception = new ArgumentException("For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, DaysOfWeek param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.MonthlyRetentionPolicyDaysOfWeekException); throw exception; } if (monthlyRetention.WeekNumber == null || monthlyRetention.WeekNumber.Count == 0) { - var exception = new ArgumentException("For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, WeekNumber param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.MonthlyRetentionPolicyWeekNumException); throw exception; } if (monthlyRetention.DaysOfMonth != null) { - var exception = new ArgumentException("For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, DaysOfMonth param is not allowed."); + var exception = new ArgumentException(Resources.MonthlyRetentionPolicyDaysOfMonthsException); throw exception; } } @@ -368,13 +368,13 @@ private static void ValidateYearlyRetention(AzureBackupYearlyRetentionPolicy yea { if (yearlyRetention.Retention < MinRetention || yearlyRetention.Retention > MaxRetentionInYears) { - var exception = new ArgumentException(string.Format("For AzureBackupYearlyRetentionPolicy , valid values of retention are {0} to {1}.", MinRetention, MaxRetentionInYears)); + var exception = new ArgumentException(string.Format(Resources.YearlyRetentionPolicyValueException, MinRetention, MaxRetentionInYears)); throw exception; } if(yearlyRetention.MonthsOfYear == null || yearlyRetention.MonthsOfYear.Count == 0) { - var exception = new ArgumentException("For AzureBackupYearlyRetentionPolicy and RetentionFormat in days, MonthsOfYear param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyMonthOfYearParamException); throw exception; } @@ -382,13 +382,13 @@ private static void ValidateYearlyRetention(AzureBackupYearlyRetentionPolicy yea { if (yearlyRetention.DaysOfMonth == null || yearlyRetention.DaysOfMonth.Count == 0) { - var exception = new ArgumentException("For AzureBackupYearlyRetentionPolicy and RetentionFormat in Days, DaysOfMonth param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfMonthParamException); throw exception; } if (yearlyRetention.DaysOfWeek != null || yearlyRetention.WeekNumber != null) { - var exception = new ArgumentException("For AzureBackupYearlyRetentionPolicy and RetentionFormat in Days, DaysOfWeek or WeekNumber params are not allowed."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfWeekParamException); throw exception; } } @@ -397,19 +397,19 @@ private static void ValidateYearlyRetention(AzureBackupYearlyRetentionPolicy yea { if (yearlyRetention.DaysOfWeek == null || yearlyRetention.DaysOfWeek.Count == 0) { - var exception = new ArgumentException("For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, DaysOfWeek param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfWeekInWeeksFormatParamException); throw exception; } if (yearlyRetention.WeekNumber == null || yearlyRetention.WeekNumber.Count == 0) { - var exception = new ArgumentException("For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, WeekNumber param is mandatory and can not be empty."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyWeekNumParamException); throw exception; } if (yearlyRetention.DaysOfMonth != null) { - var exception = new ArgumentException("For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, DaysOfMonth param is not allowed."); + var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfMonthInWeekFormatException); throw exception; } } @@ -421,13 +421,13 @@ private static void ValidateForWeeklyBackupSchedule(RetentionFormat RetentionSch { if (RetentionScheduleType == RetentionFormat.Daily) { - throw new ArgumentException("Days of the month in Monthly/Yearly retention is not allowed for weekly backup Schedules."); + throw new ArgumentException(Resources.DaysOfMonthsNotAllowedinMonthlyYearlyFormat); } foreach (var day in retentionScheduleRunDays) { if (!backupScheduleRunDays.Contains(day)) { - throw new ArgumentException("Days of the week list in Monthly/Yearly retention schedule should be subset of Day of week list in Backup Schedule."); + throw new ArgumentException(Resources.MonthlyYearlyRetentionArgumentException); } } } @@ -440,13 +440,13 @@ private static void ValidateForWeeklyBackupScheduleDaysOfWeek(string backupSched { if(backupScheduleRunDays.Count != retentionScheduleRunDays.Count) { - throw new ArgumentException("DaysOfTheWeek of retention schedule must be same of backup schedule DaysOfTheWeek"); + throw new ArgumentException(Resources.DaysOfTheWeekOfRetentionScheduleException); } foreach (var day in retentionScheduleRunDays) { if (!backupScheduleRunDays.Contains(day)) { - throw new ArgumentException("DaysofTheWeek list in Weekly retention schedule must be same of backup schedule DaysOfTheWeek."); + throw new ArgumentException(Resources.DaysofTheWeekInWeeklyRetentionException); } } } @@ -510,7 +510,7 @@ public static string ConvertToPowershellWorkloadType(string workloadType) } else { - throw new ArgumentException("Unsupported WorkloadType"); + throw new ArgumentException(Resources.UnsupportedWorkloadTypeException); } } public static CSMLongTermRetentionPolicy ConvertToCSMRetentionPolicyObject(IList retentionPolicyList, CSMBackupSchedule backupSchedule) @@ -554,7 +554,7 @@ public static string ConvertToCSMWorkLoadType(string workloadType) } else { - throw new ArgumentException("Unsupported WorkloadType"); + throw new ArgumentException(Resources.UnsupportedWorkloadTypeException); } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs index 40b6c453ac11..a86ec7bc4aeb 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs @@ -12,6 +12,7 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using Microsoft.Azure.Commands.AzureBackup.Properties; using System; namespace Microsoft.Azure.Commands.AzureBackup.Models @@ -46,12 +47,12 @@ internal void Validate() { if (String.IsNullOrEmpty(ResourceGroupName)) { - throw new ArgumentException("AzureBackupVault.ResourceGroupName"); + throw new ArgumentException(Resources.BackupVaultRGNameNullOrEmpty); } if (String.IsNullOrEmpty(Name)) { - throw new ArgumentException("AzureBackupVault.Name"); + throw new ArgumentException(Resources.BackupVaultResNameNullOrEmpty); } } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs index c623108e7a72..dc9928dc2603 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.Designer.cs @@ -60,6 +60,60 @@ internal Resources() { } } + /// + /// Looks up a localized string similar to Handling aggregate exception. + /// + internal static string AggregateException { + get { + return ResourceManager.GetString("AggregateException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exiting because all jobs have finished running.. + /// + internal static string AllJobsCompleted { + get { + return ResourceManager.GetString("AllJobsCompleted", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received ArgumentException. + /// + internal static string ArgumentException { + get { + return ResourceManager.GetString("ArgumentException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received Azure Backup Item response. + /// + internal static string AzureBackupItemResponse { + get { + return ResourceManager.GetString("AzureBackupItemResponse", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Please specify both From and To.. + /// + internal static string AzureBackupJobArguementException { + get { + return ResourceManager.GetString("AzureBackupJobArguementException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type of input paramter is List<AzureBackupJob> second case. + /// + internal static string AzureBackupJobInputType { + get { + return ResourceManager.GetString("AzureBackupJobInputType", resourceCulture); + } + } + /// /// Looks up a localized string similar to The specified Azure Virtual Machine Not Found. Possible causes are ///1. VM does not exist @@ -68,9 +122,612 @@ internal Resources() { /// ///Please contact Microsoft for further assistant.. /// - internal static string AzureVMNotFound { + internal static string AzureVMNotFound { + get { + return ResourceManager.GetString("AzureVMNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2}. + /// + internal static string BackupItemCmdletCalled { + get { + return ResourceManager.GetString("BackupItemCmdletCalled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For daily backup schedule, protection policy cannot have DaysOfWeek param in backup schedule. + /// + internal static string BackupScheduleDailyParamException { + get { + return ResourceManager.GetString("BackupScheduleDailyParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For weekly backup schedule, DaysOfWeek in backup schedule is mandatory and cannot be empty. + /// + internal static string BackupScheduleWeeklyParamException { + get { + return ResourceManager.GetString("BackupScheduleWeeklyParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to AzureBackupVault.Name. + /// + internal static string BackupVaultResNameNullOrEmpty { + get { + return ResourceManager.GetString("BackupVaultResNameNullOrEmpty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to AzureBackupVault.ResourceGroupName. + /// + internal static string BackupVaultRGNameNullOrEmpty { + get { + return ResourceManager.GetString("BackupVaultRGNameNullOrEmpty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to RecoveryService - Backup Vault - Successfully serialized the file content. + /// + internal static string BackupVaultSerialized { + get { + return ResourceManager.GetString("BackupVaultSerialized", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reregistration can be enable only for machine containers.. + /// + internal static string CannotEnableRegistration { + get { + return ResourceManager.GetString("CannotEnableRegistration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received CloudException, ErrorCode: {0}, Message: {1}. + /// + internal static string CloudException { + get { + return ResourceManager.GetString("CloudException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received CloudException, StatusCode: {0}. + /// + internal static string CloudExceptionCodeNotFound { + get { + return ResourceManager.GetString("CloudExceptionCodeNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2}. + /// + internal static string CmdletCalled { + get { + return ResourceManager.GetString("CmdletCalled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Count of containers after resource group filter = {0}. + /// + internal static string ContainerCountAfterFilter { + get { + return ResourceManager.GetString("ContainerCountAfterFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Container count returned from service: {0}. + /// + internal static string ContainerCountFromService { + get { + return ResourceManager.GetString("ContainerCountFromService", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Container is not discovered. + /// + internal static string ContainerNotDiscovered { + get { + return ResourceManager.GetString("ContainerNotDiscovered", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Input is container Type = {0}. + /// + internal static string ContainerTypeInput { + get { + return ResourceManager.GetString("ContainerTypeInput", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Creating backup vault with ResourceGroupName: {0}, ResourceName: {1}. + /// + internal static string CreatingBackupVault { + get { + return ResourceManager.GetString("CreatingBackupVault", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Only one AzureBackupDailyRetentionPolicy in RetentionPolicies is allowed. + /// + internal static string DailyRetentionPolicyException { + get { + return ResourceManager.GetString("DailyRetentionPolicyException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupDailyRetentionPolicy , valid values of retention are {0} to {1}. + /// + internal static string DailyRetentionPolicyValueException { + get { + return ResourceManager.GetString("DailyRetentionPolicyValueException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For Daily Schedule, AzureBackupDailyRetentionPolicy in RetentionPolicies param is mandatory. + /// + internal static string DailyScheduleException { + get { + return ResourceManager.GetString("DailyScheduleException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Days of the month in Monthly/Yearly retention is not allowed for weekly backup Schedules. + /// + internal static string DaysOfMonthsNotAllowedinMonthlyYearlyFormat { + get { + return ResourceManager.GetString("DaysOfMonthsNotAllowedinMonthlyYearlyFormat", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to DaysofTheWeek list in Weekly retention schedule must be same of backup schedule DaysOfTheWeek. + /// + internal static string DaysofTheWeekInWeeklyRetentionException { + get { + return ResourceManager.GetString("DaysofTheWeekInWeeklyRetentionException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to DaysOfTheWeek of retention schedule must be same of backup schedule DaysOfTheWeek. + /// + internal static string DaysOfTheWeekOfRetentionScheduleException { + get { + return ResourceManager.GetString("DaysOfTheWeekOfRetentionScheduleException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Desired Container is not found. Returning with isDiscoveryNeed = true. + /// + internal static string DesiredContainerNotFound { + get { + return ResourceManager.GetString("DesiredContainerNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received disable azure backup protection response. + /// + internal static string DisableAzureBackupProtection { + get { + return ResourceManager.GetString("DisableAzureBackupProtection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to discover VM {0} under {1} {2}. Please make sure names are correct and VM is not deleted". + /// + internal static string DiscoveryFailure { + get { + return ResourceManager.GetString("DiscoveryFailure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Discovery operation failed with ErrorCode: {0}. + /// + internal static string DiscoveryFailureErrorCode { + get { + return ResourceManager.GetString("DiscoveryFailureErrorCode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received enable azure backup protection response. + /// + internal static string EnableAzureBackupProtection { + get { + return ResourceManager.GetString("EnableAzureBackupProtection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to EndTime filter is: {0}. + /// + internal static string EndTimeFilter { + get { + return ResourceManager.GetString("EndTimeFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to End time not set. Setting it to current time. + /// + internal static string EndTimeNotSet { + get { + return ResourceManager.GetString("EndTimeNotSet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Caught exception, type: {0}. + /// + internal static string ExceptionInExecution { + get { + return ResourceManager.GetString("ExceptionInExecution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Executing cmdlet with SubscriptionId = {0}, ResourceGroupName = {1}, ResourceName = {2}, TargetLocation = {3}. + /// + internal static string ExecutingGetVaultCredCmdlet { + get { + return ResourceManager.GetString("ExecutingGetVaultCredCmdlet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fetched {0} containers. + /// + internal static string FetchedContainer { + get { + return ResourceManager.GetString("FetchedContainer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Initialized AzureBackup Cmdlet, ClientRequestId: {0}, ResourceGroupName: {1}, ResourceName : {2}. + /// + internal static string InitializingClient { + get { + return ResourceManager.GetString("InitializingClient", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to JobID is: {0}. + /// + internal static string JobId { + get { + return ResourceManager.GetString("JobId", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to JobID filter is: {0}. + /// + internal static string JobIdFilter { + get { + return ResourceManager.GetString("JobIdFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Successfully retrieved job. + /// + internal static string JobResponse { + get { + return ResourceManager.GetString("JobResponse", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Successfully retrieved all jobs. Number of jobs retrieved: {0}. + /// + internal static string JobRetrieved { + get { + return ResourceManager.GetString("JobRetrieved", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Making client call. + /// + internal static string MakingClientCall { + get { + return ResourceManager.GetString("MakingClientCall", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Days, DaysOfMonth param is mandatory and can not be empty. + /// + internal static string MonthlyRetentionPolicyDaysOfMonthParamException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyDaysOfMonthParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, DaysOfMonth param is not allowed.. + /// + internal static string MonthlyRetentionPolicyDaysOfMonthsException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyDaysOfMonthsException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, DaysOfWeek param is mandatory and can not be empty. + /// + internal static string MonthlyRetentionPolicyDaysOfWeekException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyDaysOfWeekException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Days, DaysOfWeek or WeekNumber params are not allowed. + /// + internal static string MonthlyRetentionPolicyDaysOfWeekParamException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyDaysOfWeekParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Only one AzureBackupMonthlyRetentionPolicy in RetentionPolicies is allowed. + /// + internal static string MonthlyRetentionPolicyException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupMonthlyRetentionPolicy , valid values of retention are {0} to {1}. + /// + internal static string MonthlyRetentionPolicyValueException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyValueException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, WeekNumber param is mandatory and can not be empty. + /// + internal static string MonthlyRetentionPolicyWeekNumException { + get { + return ResourceManager.GetString("MonthlyRetentionPolicyWeekNumException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Days of the week list in Monthly/Yearly retention schedule should be subset of Day of week list in Backup Schedule. + /// + internal static string MonthlyYearlyRetentionArgumentException { + get { + return ResourceManager.GetString("MonthlyYearlyRetentionArgumentException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No recovery point exist with Id := {0}. + /// + internal static string NoRpExist { + get { + return ResourceManager.GetString("NoRpExist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No recovery point found. + /// + internal static string NoRpFound { + get { + return ResourceManager.GetString("NoRpFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Number of jobs to wait on: {0}. + /// + internal static string NumberOfJobsForWaiting { + get { + return ResourceManager.GetString("NumberOfJobsForWaiting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Operation filter is: {0}. + /// + internal static string OperationFilter { + get { + return ResourceManager.GetString("OperationFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OperationStatus : {0}. + /// + internal static string OperationStatus { + get { + return ResourceManager.GetString("OperationStatus", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A protection policy with the specified name already exists.. + /// + internal static string PolicyAlreadyExist { + get { + return ResourceManager.GetString("PolicyAlreadyExist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For DaysOfWeek, weekly switch param is required. + /// + internal static string PolicyArgumentException { + get { + return ResourceManager.GetString("PolicyArgumentException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protection Policy {0} not found. + /// + internal static string PolicyNotFound { + get { + return ResourceManager.GetString("PolicyNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ParameterSetName = {0}. + /// + internal static string PolicyParameterSet { + get { + return ResourceManager.GetString("PolicyParameterSet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protection Policy successfully updated. + /// + internal static string PolicyUpdated { + get { + return ResourceManager.GetString("PolicyUpdated", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protection Policy successfully updated and created job(s) to re-configure protection on associated items. + /// + internal static string PolicyUpdatedReconfigureProtectionDone { + get { + return ResourceManager.GetString("PolicyUpdatedReconfigureProtectionDone", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protection policy created successfully. + /// + internal static string ProtectionPolicyCreated { + get { + return ResourceManager.GetString("ProtectionPolicyCreated", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Successfully deleted policy. + /// + internal static string ProtectionPolicyDeleted { + get { + return ResourceManager.GetString("ProtectionPolicyDeleted", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The protection policy name should contain alphanumeric characters and cannot start with a number. + /// + internal static string ProtectionPolicyNameException { + get { + return ResourceManager.GetString("ProtectionPolicyNameException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The protection policy name must contain between 3 and 150 characters. + /// + internal static string ProtectionPolicyNameLengthException { get { - return ResourceManager.GetString("AzureVMNotFound", resourceCulture); + return ResourceManager.GetString("ProtectionPolicyNameLengthException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Please make sure you have pass right set of parameters. + /// + internal static string PSArgumentException { + get { + return ResourceManager.GetString("PSArgumentException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to In loop querying jobs. + /// + internal static string QueryingJobs { + get { + return ResourceManager.GetString("QueryingJobs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No jobs to wait on. Quitting.. + /// + internal static string QuittingWaitJob { + get { + return ResourceManager.GetString("QuittingWaitJob", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Registering ARM-V1 VM, VMName: {0}, CloudServiceName: {1}. + /// + internal static string RegisteringARMVM1 { + get { + return ResourceManager.GetString("RegisteringARMVM1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Registering ARM-V2 VM, VMName: {0}, ResourceGroupName: {1}. + /// + internal static string RegisteringARMVM2 { + get { + return ResourceManager.GetString("RegisteringARMVM2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Going to register VM {0}. + /// + internal static string RegisteringVM { + get { + return ResourceManager.GetString("RegisteringVM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Going to retry Discovery if retry count is not exceeded. + /// + internal static string RertyDiscovery { + get { + return ResourceManager.GetString("RertyDiscovery", resourceCulture); } } @@ -83,6 +740,141 @@ internal static string ResourceNotFoundMessage { } } + /// + /// Looks up a localized string similar to Atleast one retention policy in RetentionPolicies param is mandatory. + /// + internal static string RetentionPolicyCountException { + get { + return ResourceManager.GetString("RetentionPolicyCountException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Saving Vault Credentials to file : {0}. + /// + internal static string SavingVaultCred { + get { + return ResourceManager.GetString("SavingVaultCred", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Setting end time to min value. + /// + internal static string SettingEndTime { + get { + return ResourceManager.GetString("SettingEndTime", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Setting StartTime to min value. + /// + internal static string SettingStartTime { + get { + return ResourceManager.GetString("SettingStartTime", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Setting storage type for the resource, Type: {0}. + /// + internal static string SettingStorageType { + get { + return ResourceManager.GetString("SettingStorageType", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to StartTime filter is: {0}. + /// + internal static string StartTimeFilter { + get { + return ResourceManager.GetString("StartTimeFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Status filter is: {0}. + /// + internal static string StatusFilter { + get { + return ResourceManager.GetString("StatusFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stop Job failed with ErrorCode: {0}. + /// + internal static string StopJobFailed { + get { + return ResourceManager.GetString("StopJobFailed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to From should be lesser than To. + /// + internal static string TimeFilterNotCorrect { + get { + return ResourceManager.GetString("TimeFilterNotCorrect", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exiting due to timeout.. + /// + internal static string TimeOutWaitInJob { + get { + return ResourceManager.GetString("TimeOutWaitInJob", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Triggered cancellation of job with JobID: {0}. + /// + internal static string TriggeredCancellationJob { + get { + return ResourceManager.GetString("TriggeredCancellationJob", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Triggered backup. Converting response {0}. + /// + internal static string TriggeringBackup { + get { + return ResourceManager.GetString("TriggeringBackup", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Triggered Restore. Converting response {0}. + /// + internal static string TriggeringRestore { + get { + return ResourceManager.GetString("TriggeringRestore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type filter is: {0}. + /// + internal static string TypeFilter { + get { + return ResourceManager.GetString("TypeFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unknown item type. + /// + internal static string UnknownItemType { + get { + return ResourceManager.GetString("UnknownItemType", resourceCulture); + } + } + /// /// Looks up a localized string similar to Unregister Server. /// @@ -100,5 +892,185 @@ internal static string UnregisterServerMessage { return ResourceManager.GetString("UnregisterServerMessage", resourceCulture); } } + + /// + /// Looks up a localized string similar to Unsupported WorkloadType. + /// + internal static string UnsupportedWorkloadTypeException { + get { + return ResourceManager.GetString("UnsupportedWorkloadTypeException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to RecoveryService - Successfully uploaded the certificate. + /// + internal static string UploadedCertToIdmgmt { + get { + return ResourceManager.GetString("UploadedCertToIdmgmt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to RecoveryService - Going to upload the certificate. + /// + internal static string UploadingCertToIdmgmt { + get { + return ResourceManager.GetString("UploadingCertToIdmgmt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The target location provided is not a directory. Please provide a directory.. + /// + internal static string VaultCredPathException { + get { + return ResourceManager.GetString("VaultCredPathException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to VM {0} is not yet discovered. Triggering Discovery. + /// + internal static string VMNotDiscovered { + get { + return ResourceManager.GetString("VMNotDiscovered", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Received WebException, Response: {0}, Status: {1}. + /// + internal static string WebException { + get { + return ResourceManager.GetString("WebException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupWeeklyRetentionPolicy , DaysOfWeek param is mandatory and can not be empty. + /// + internal static string WeeklyRetentionPolicyDaysOfWeekException { + get { + return ResourceManager.GetString("WeeklyRetentionPolicyDaysOfWeekException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Only one AzureBackupWeeklyRetentionPolicy in RetentionPolicies is allowed. + /// + internal static string WeeklyRetentionPolicyException { + get { + return ResourceManager.GetString("WeeklyRetentionPolicyException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupWeeklyRetentionPolicy , valid values of retention are {0} to {1}. + /// + internal static string WeeklyRetentionPolicyValueException { + get { + return ResourceManager.GetString("WeeklyRetentionPolicyValueException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For Weekly Schedule, AzureBackupWeeklyRetentionPolicy in RetentionPolicies param is mandatory. + /// + internal static string WeeklyScheduleException { + get { + return ResourceManager.GetString("WeeklyScheduleException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For weekly scheduletype , ScheduleRunDays param is mandatory and can not be empty.. + /// + internal static string WeeklyScheduleRunDaysException { + get { + return ResourceManager.GetString("WeeklyScheduleRunDaysException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For Weekly Schedule, AzureBackupDailyRetentionPolicy in RetentionPolicies param is not allowed. + /// + internal static string WeeklyScheduleWithDailyException { + get { + return ResourceManager.GetString("WeeklyScheduleWithDailyException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, DaysOfMonth param is not allowed. + /// + internal static string YearlyRetentionPolicyDaysOfMonthInWeekFormatException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyDaysOfMonthInWeekFormatException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy and RetentionFormat in Days, DaysOfMonth param is mandatory and can not be empty. + /// + internal static string YearlyRetentionPolicyDaysOfMonthParamException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyDaysOfMonthParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, DaysOfWeek param is mandatory and can not be empty. + /// + internal static string YearlyRetentionPolicyDaysOfWeekInWeeksFormatParamException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyDaysOfWeekInWeeksFormatParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy and RetentionFormat in Days, DaysOfWeek or WeekNumber params are not allowed. + /// + internal static string YearlyRetentionPolicyDaysOfWeekParamException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyDaysOfWeekParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Only one AzureBackupYearlyRetentionPolicy in RetentionPolicies is allowed. + /// + internal static string YearlyRetentionPolicyException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy and RetentionFormat in days, MonthsOfYear param is mandatory and can not be empty. + /// + internal static string YearlyRetentionPolicyMonthOfYearParamException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyMonthOfYearParamException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy , valid values of retention are {0} to {1}. + /// + internal static string YearlyRetentionPolicyValueException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyValueException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, WeekNumber param is mandatory and can not be empty. + /// + internal static string YearlyRetentionPolicyWeekNumParamException { + get { + return ResourceManager.GetString("YearlyRetentionPolicyWeekNumParamException", resourceCulture); + } + } } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx index 749a03eaa037..42849f23aa97 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Properties/Resources.resx @@ -117,6 +117,24 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Handling aggregate exception + + + Exiting because all jobs have finished running. + + + Received ArgumentException + + + Received Azure Backup Item response + + + Please specify both From and To. + + + Type of input paramter is List<AzureBackupJob> second case + The specified Azure Virtual Machine Not Found. Possible causes are 1. VM does not exist @@ -125,13 +143,320 @@ Please contact Microsoft for further assistant. + + Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2} + + + For daily backup schedule, protection policy cannot have DaysOfWeek param in backup schedule + + + For weekly backup schedule, DaysOfWeek in backup schedule is mandatory and cannot be empty + + + AzureBackupVault.Name + + + AzureBackupVault.ResourceGroupName + + + RecoveryService - Backup Vault - Successfully serialized the file content + + + Reregistration can be enable only for machine containers. + + + Received CloudException, ErrorCode: {0}, Message: {1} + + + Received CloudException, StatusCode: {0} + + + Cmdlet called for ResourceGroupName: {0}, ResourceName: {1}, Location: {2} + + + Count of containers after resource group filter = {0} + + + Container count returned from service: {0} + + + Container is not discovered + + + Input is container Type = {0} + + + Creating backup vault with ResourceGroupName: {0}, ResourceName: {1} + + + Only one AzureBackupDailyRetentionPolicy in RetentionPolicies is allowed + + + For AzureBackupDailyRetentionPolicy , valid values of retention are {0} to {1} + + + For Daily Schedule, AzureBackupDailyRetentionPolicy in RetentionPolicies param is mandatory + + + Days of the month in Monthly/Yearly retention is not allowed for weekly backup Schedules + + + DaysofTheWeek list in Weekly retention schedule must be same of backup schedule DaysOfTheWeek + + + DaysOfTheWeek of retention schedule must be same of backup schedule DaysOfTheWeek + + + Desired Container is not found. Returning with isDiscoveryNeed = true + + + Received disable azure backup protection response + + + Failed to discover VM {0} under {1} {2}. Please make sure names are correct and VM is not deleted" + + + Discovery operation failed with ErrorCode: {0} + + + Received enable azure backup protection response + + + EndTime filter is: {0} + + + End time not set. Setting it to current time + + + Caught exception, type: {0} + + + Executing cmdlet with SubscriptionId = {0}, ResourceGroupName = {1}, ResourceName = {2}, TargetLocation = {3} + + + Fetched {0} containers + + + Initialized AzureBackup Cmdlet, ClientRequestId: {0}, ResourceGroupName: {1}, ResourceName : {2} + + + JobID is: {0} + + + JobID filter is: {0} + + + Successfully retrieved job + + + Successfully retrieved all jobs. Number of jobs retrieved: {0} + + + Making client call + + + For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Days, DaysOfMonth param is mandatory and can not be empty + + + For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, DaysOfMonth param is not allowed. + + + For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, DaysOfWeek param is mandatory and can not be empty + + + For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Days, DaysOfWeek or WeekNumber params are not allowed + + + Only one AzureBackupMonthlyRetentionPolicy in RetentionPolicies is allowed + + + For AzureBackupMonthlyRetentionPolicy , valid values of retention are {0} to {1} + + + For AzureBackupMonthlyRetentionPolicy and RetentionFormat in Weeks, WeekNumber param is mandatory and can not be empty + + + Days of the week list in Monthly/Yearly retention schedule should be subset of Day of week list in Backup Schedule + + + No recovery point exist with Id := {0} + + + No recovery point found + + + Number of jobs to wait on: {0} + + + Operation filter is: {0} + + + OperationStatus : {0} + + + A protection policy with the specified name already exists. + + + For DaysOfWeek, weekly switch param is required + + + Protection Policy {0} not found + + + ParameterSetName = {0} + + + Protection Policy successfully updated + + + Protection Policy successfully updated and created job(s) to re-configure protection on associated items + + + Protection policy created successfully + + + Successfully deleted policy + + + The protection policy name should contain alphanumeric characters and cannot start with a number + + + The protection policy name must contain between 3 and 150 characters + + + Please make sure you have pass right set of parameters + d:\git2\azure-powershell\src\resourcemanager\azurebackup\commands.azurebackup\cmdlets\container\registerazurermbackupcontainer.cs + + + In loop querying jobs + + + No jobs to wait on. Quitting. + + + Registering ARM-V1 VM, VMName: {0}, CloudServiceName: {1} + + + Registering ARM-V2 VM, VMName: {0}, ResourceGroupName: {1} + + + Going to register VM {0} + + + Going to retry Discovery if retry count is not exceeded + The specified resource does not exist. + + Atleast one retention policy in RetentionPolicies param is mandatory + + + Saving Vault Credentials to file : {0} + + + Setting end time to min value + + + Setting StartTime to min value + + + Setting storage type for the resource, Type: {0} + + + StartTime filter is: {0} + + + Status filter is: {0} + + + Stop Job failed with ErrorCode: {0} + + + From should be lesser than To + + + Exiting due to timeout. + + + Triggered cancellation of job with JobID: {0} + + + Triggered backup. Converting response {0} + + + Triggered Restore. Converting response {0} + + + Type filter is: {0} + + + Unknown item type + Unregister Server This operation will delete all data in the backup vault that is associated with the server. Are you sure you want to unregister the server? + + Unsupported WorkloadType + + + RecoveryService - Successfully uploaded the certificate + + + RecoveryService - Going to upload the certificate + + + The target location provided is not a directory. Please provide a directory. + + + VM {0} is not yet discovered. Triggering Discovery + + + Received WebException, Response: {0}, Status: {1} + + + For AzureBackupWeeklyRetentionPolicy , DaysOfWeek param is mandatory and can not be empty + + + Only one AzureBackupWeeklyRetentionPolicy in RetentionPolicies is allowed + + + For AzureBackupWeeklyRetentionPolicy , valid values of retention are {0} to {1} + + + For Weekly Schedule, AzureBackupWeeklyRetentionPolicy in RetentionPolicies param is mandatory + + + For weekly scheduletype , ScheduleRunDays param is mandatory and can not be empty. + + + For Weekly Schedule, AzureBackupDailyRetentionPolicy in RetentionPolicies param is not allowed + + + For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, DaysOfMonth param is not allowed + + + For AzureBackupYearlyRetentionPolicy and RetentionFormat in Days, DaysOfMonth param is mandatory and can not be empty + + + For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, DaysOfWeek param is mandatory and can not be empty + + + For AzureBackupYearlyRetentionPolicy and RetentionFormat in Days, DaysOfWeek or WeekNumber params are not allowed + + + Only one AzureBackupYearlyRetentionPolicy in RetentionPolicies is allowed + + + For AzureBackupYearlyRetentionPolicy and RetentionFormat in days, MonthsOfYear param is mandatory and can not be empty + + + For AzureBackupYearlyRetentionPolicy , valid values of retention are {0} to {1} + + + For AzureBackupYearlyRetentionPolicy and RetentionFormat in Weeks, WeekNumber param is mandatory and can not be empty + \ No newline at end of file diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/Microsoft.Azure.Management.BackupServicesManagement.dll b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/Microsoft.Azure.Management.BackupServicesManagement.dll index ebfb976c73658c331f5c781a9536b9c3155f4e04..53f4d4f17d8b5ce71c05c4d863395fbe8e5868f0 100644 GIT binary patch literal 236544 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 From f32544eb5b7f885f496bfba7f54337896f8e5767 Mon Sep 17 00:00:00 2001 From: dragonfly91 Date: Tue, 18 Aug 2015 21:14:18 +0530 Subject: [PATCH 3/3] Rerecording registration test case due to MKherani's changes. --- .../AzureBackupContainerTests.ps1 | 3 +- ...eBackupRegisterContainerScenarioTests.json | 128 +++++++++--------- 2 files changed, 66 insertions(+), 65 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupContainerTests.ps1 b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupContainerTests.ps1 index b8cc114d0723..75e3b265546e 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupContainerTests.ps1 +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupContainerTests.ps1 @@ -54,12 +54,13 @@ $IaasVMManagedResourceName = "hydrarecordvm" $IaasVMManagedResourceGroupName = "hydrarecordvm" $VaultResourceName = "backuprn" $VaultResourceRGName = "backuprg" +$RegisterTestVM = "powershellbvt" function Test-RegisterAzureBackupContainer { $vault = Get-AzureRMBackupVault -Name $VaultResourceName - $jobId = Register-AzureRMBackupContainer -vault $vault -Name $IaasVMManagedResourceName -ServiceName $IaasVMManagedResourceGroupName + $jobId = Register-AzureRMBackupContainer -vault $vault -Name $RegisterTestVM -ServiceName $RegisterTestVM Assert-NotNull $jobId 'Job should not be null'; } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/SessionRecords/Microsoft.Azure.Commands.AzureBackup.Test.ScenarioTests.AzureBackupContainerTests/AzureBackupRegisterContainerScenarioTests.json b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/SessionRecords/Microsoft.Azure.Commands.AzureBackup.Test.ScenarioTests.AzureBackupContainerTests/AzureBackupRegisterContainerScenarioTests.json index 293c581248bb..9c39d281a968 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/SessionRecords/Microsoft.Azure.Commands.AzureBackup.Test.ScenarioTests.AzureBackupContainerTests/AzureBackupRegisterContainerScenarioTests.json +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/SessionRecords/Microsoft.Azure.Commands.AzureBackup.Test.ScenarioTests.AzureBackupContainerTests/AzureBackupRegisterContainerScenarioTests.json @@ -10,16 +10,16 @@ "en-us" ], "x-ms-client-request-id": [ - "933ef6d6-7d9a-4bd3-87eb-b0b8527e5cf5-2015-08-14 08:53:41Z-PS" + "6e091fde-9338-4f63-b81c-12565d6486f4-2015-08-18 15:40:22Z-PS" ], "User-Agent": [ "Microsoft.Azure.Management.BackupServices.BackupVaultServicesManagementClient/0.0.0.0" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn\",\r\n \"name\": \"backuprn\",\r\n \"type\": \"Microsoft.Backup/BackupVault\",\r\n \"location\": \"southeastasia\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/hydrarecording/providers/Microsoft.Backup/BackupVault/hydrarecordingrn\",\r\n \"name\": \"hydrarecordingrn\",\r\n \"type\": \"Microsoft.Backup/BackupVault\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/pragrawa-rg/providers/Microsoft.Backup/BackupVault/pragrawa-rg01\",\r\n \"name\": \"pragrawa-rg01\",\r\n \"type\": \"Microsoft.Backup/BackupVault\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn\",\r\n \"name\": \"backuprn\",\r\n \"type\": \"Microsoft.Backup/BackupVault\",\r\n \"location\": \"southeastasia\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn1\",\r\n \"name\": \"backuprn1\",\r\n \"type\": \"Microsoft.Backup/BackupVault\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", "ResponseHeaders": { "Content-Length": [ - "710" + "458" ], "Content-Type": [ "application/json; charset=utf-8" @@ -31,16 +31,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "14992" + "14997" ], "x-ms-request-id": [ - "2bcef852-09a9-4ef0-b55b-e8c9baa35de4" + "82213eae-32b6-407e-98f1-1907fc2f47a0" ], "x-ms-correlation-request-id": [ - "2bcef852-09a9-4ef0-b55b-e8c9baa35de4" + "82213eae-32b6-407e-98f1-1907fc2f47a0" ], "x-ms-routing-request-id": [ - "CENTRALUS:20150814T085342Z:2bcef852-09a9-4ef0-b55b-e8c9baa35de4" + "CENTRALUS:20150818T154023Z:82213eae-32b6-407e-98f1-1907fc2f47a0" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -49,7 +49,7 @@ "no-cache" ], "Date": [ - "Fri, 14 Aug 2015 08:53:42 GMT" + "Tue, 18 Aug 2015 15:40:23 GMT" ] }, "StatusCode": 200 @@ -64,16 +64,16 @@ "en-us" ], "x-ms-client-request-id": [ - "933ef6d6-7d9a-4bd3-87eb-b0b8527e5cf5-2015-08-14 08:53:41Z-PS" + "6e091fde-9338-4f63-b81c-12565d6486f4-2015-08-18 15:40:22Z-PS" ], "User-Agent": [ "Microsoft.Azure.Management.BackupServices.BackupVaultServicesManagementClient/0.0.0.0" ] }, - "ResponseBody": "{\r\n \"resourceId\": 1774108198771083879,\r\n \"properties\": {\r\n \"storageType\": \"LocallyRedundant\",\r\n \"storageTypeState\": \"Locked\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"resourceId\": 3420983535961922368,\r\n \"properties\": {\r\n \"storageType\": \"GeoRedundant\",\r\n \"storageTypeState\": \"Locked\"\r\n }\r\n}", "ResponseHeaders": { "Content-Length": [ - "110" + "106" ], "Content-Type": [ "application/json" @@ -85,29 +85,29 @@ "no-cache" ], "x-ms-request-id": [ - "5818cd6f-f201-41bf-baef-aa46bba6a713" + "de793bd2-316c-41e1-8c4c-9c279ed82e85" ], "x-ms-client-request-id": [ - "933ef6d6-7d9a-4bd3-87eb-b0b8527e5cf5-2015-08-14 08:53:41Z-PS", - "933ef6d6-7d9a-4bd3-87eb-b0b8527e5cf5-2015-08-14 08:53:41Z-PS" + "6e091fde-9338-4f63-b81c-12565d6486f4-2015-08-18 15:40:22Z-PS", + "6e091fde-9338-4f63-b81c-12565d6486f4-2015-08-18 15:40:22Z-PS" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "14991" + "14996" ], "x-ms-correlation-request-id": [ - "5818cd6f-f201-41bf-baef-aa46bba6a713" + "de793bd2-316c-41e1-8c4c-9c279ed82e85" ], "x-ms-routing-request-id": [ - "CENTRALUS:20150814T085343Z:5818cd6f-f201-41bf-baef-aa46bba6a713" + "CENTRALUS:20150818T154033Z:de793bd2-316c-41e1-8c4c-9c279ed82e85" ], "Cache-Control": [ "no-cache" ], "Date": [ - "Fri, 14 Aug 2015 08:53:42 GMT" + "Tue, 18 Aug 2015 15:40:33 GMT" ], "Server": [ "Microsoft-IIS/8.0" @@ -116,8 +116,8 @@ "StatusCode": 200 }, { - "RequestUri": "/Subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/containers?api-version=2014-09-01&$filter=containerType%20eq%20'IaasVM'%20and%20friendlyName%20eq%20'hydrarecordvm'", - "EncodedRequestUri": "L1N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL2NvbnRhaW5lcnM/YXBpLXZlcnNpb249MjAxNC0wOS0wMSYkZmlsdGVyPWNvbnRhaW5lclR5cGUlMjBlcSUyMCdJYWFzVk0nJTIwYW5kJTIwZnJpZW5kbHlOYW1lJTIwZXElMjAnaHlkcmFyZWNvcmR2bSc=", + "RequestUri": "/Subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/containers?api-version=2014-09-01&$filter=containerType%20eq%20'IaasVM'%20and%20friendlyName%20eq%20'powershellbvt'%20and%20status%20eq%20'NotRegistered'", + "EncodedRequestUri": "L1N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL2NvbnRhaW5lcnM/YXBpLXZlcnNpb249MjAxNC0wOS0wMSYkZmlsdGVyPWNvbnRhaW5lclR5cGUlMjBlcSUyMCdJYWFzVk0nJTIwYW5kJTIwZnJpZW5kbHlOYW1lJTIwZXElMjAncG93ZXJzaGVsbGJ2dCclMjBhbmQlMjBzdGF0dXMlMjBlcSUyMCdOb3RSZWdpc3RlcmVkJw==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { @@ -125,16 +125,16 @@ "en-us" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "User-Agent": [ "Microsoft.Azure.Management.BackupServices.BackupServicesManagementClient/0.0.0.0" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"properties\": {\r\n \"friendlyName\": \"hydrarecordvm\",\r\n \"status\": \"Registered\",\r\n \"healthStatus\": \"Healthy\",\r\n \"containerType\": \"IaasVM\",\r\n \"parentContainerId\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/containers/hydrarecordvm\"\r\n },\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/containers/iaasvmcontainer;hydrarecordvm;hydrarecordvm\",\r\n \"name\": \"iaasvmcontainer;hydrarecordvm;hydrarecordvm\",\r\n \"type\": \"Microsoft.Backup/BackupVault/containers\"\r\n }\r\n ],\r\n \"nextLink\": null\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"properties\": {\r\n \"friendlyName\": \"powershellbvt\",\r\n \"status\": \"NotRegistered\",\r\n \"healthStatus\": \"Healthy\",\r\n \"containerType\": \"IaasVM\",\r\n \"parentContainerId\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/containers/powershellbvt\"\r\n },\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/containers/iaasvmcontainer;powershellbvt;powershellbvt\",\r\n \"name\": \"iaasvmcontainer;powershellbvt;powershellbvt\",\r\n \"type\": \"Microsoft.Backup/BackupVault/containers\"\r\n }\r\n ],\r\n \"nextLink\": null\r\n}", "ResponseHeaders": { "Content-Length": [ - "606" + "609" ], "Content-Type": [ "application/json" @@ -146,29 +146,29 @@ "no-cache" ], "x-ms-request-id": [ - "45bf65ec-53cf-4383-a67f-908572a0e99a" + "5c0187c9-f3d8-4a00-9cc2-fb2c2092753b" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS", - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS", + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "14992" + "14997" ], "x-ms-correlation-request-id": [ - "45bf65ec-53cf-4383-a67f-908572a0e99a" + "5c0187c9-f3d8-4a00-9cc2-fb2c2092753b" ], "x-ms-routing-request-id": [ - "CENTRALUS:20150814T085345Z:45bf65ec-53cf-4383-a67f-908572a0e99a" + "CENTRALUS:20150818T154036Z:5c0187c9-f3d8-4a00-9cc2-fb2c2092753b" ], "Cache-Control": [ "no-cache" ], "Date": [ - "Fri, 14 Aug 2015 08:53:45 GMT" + "Tue, 18 Aug 2015 15:40:36 GMT" ], "Server": [ "Microsoft-IIS/8.0" @@ -180,8 +180,8 @@ "StatusCode": 200 }, { - "RequestUri": "/Subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/registeredContainers/iaasvmcontainer%3Bhydrarecordvm%3Bhydrarecordvm?api-version=2014-09-01", - "EncodedRequestUri": "L1N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL3JlZ2lzdGVyZWRDb250YWluZXJzL2lhYXN2bWNvbnRhaW5lciUzQmh5ZHJhcmVjb3Jkdm0lM0JoeWRyYXJlY29yZHZtP2FwaS12ZXJzaW9uPTIwMTQtMDktMDE=", + "RequestUri": "/Subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/registeredContainers/iaasvmcontainer%3Bpowershellbvt%3Bpowershellbvt?api-version=2014-09-01", + "EncodedRequestUri": "L1N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL3JlZ2lzdGVyZWRDb250YWluZXJzL2lhYXN2bWNvbnRhaW5lciUzQnBvd2Vyc2hlbGxidnQlM0Jwb3dlcnNoZWxsYnZ0P2FwaS12ZXJzaW9uPTIwMTQtMDktMDE=", "RequestMethod": "PUT", "RequestBody": "", "RequestHeaders": { @@ -189,7 +189,7 @@ "en-us" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "x-ms-version": [ "2013-03-01" @@ -198,7 +198,7 @@ "Microsoft.Azure.Management.BackupServices.BackupServicesManagementClient/0.0.0.0" ] }, - "ResponseBody": "\"95764bf7-97d3-4bb7-9711-aa5919ad0abc\"", + "ResponseBody": "\"8fe78e98-472c-4f34-889f-504c16c7c6a9\"", "ResponseHeaders": { "Content-Length": [ "38" @@ -213,29 +213,29 @@ "no-cache" ], "x-ms-request-id": [ - "1887183e-9adb-41dd-99e9-20c10eeca8dc" + "ddf87ac3-99d2-4ab1-af09-20a581bfb084" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS", - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS", + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "999997" + "1199" ], "x-ms-correlation-request-id": [ - "1887183e-9adb-41dd-99e9-20c10eeca8dc" + "ddf87ac3-99d2-4ab1-af09-20a581bfb084" ], "x-ms-routing-request-id": [ - "CENTRALUS:20150814T085346Z:1887183e-9adb-41dd-99e9-20c10eeca8dc" + "CENTRALUS:20150818T154038Z:ddf87ac3-99d2-4ab1-af09-20a581bfb084" ], "Cache-Control": [ "no-cache" ], "Date": [ - "Fri, 14 Aug 2015 08:53:46 GMT" + "Tue, 18 Aug 2015 15:40:38 GMT" ], "Server": [ "Microsoft-IIS/8.0" @@ -247,8 +247,8 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/operationResults/95764bf7-97d3-4bb7-9711-aa5919ad0abc?api-version=2014-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL29wZXJhdGlvblJlc3VsdHMvOTU3NjRiZjctOTdkMy00YmI3LTk3MTEtYWE1OTE5YWQwYWJjP2FwaS12ZXJzaW9uPTIwMTQtMDktMDE=", + "RequestUri": "/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/operationResults/8fe78e98-472c-4f34-889f-504c16c7c6a9?api-version=2014-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL29wZXJhdGlvblJlc3VsdHMvOGZlNzhlOTgtNDcyYy00ZjM0LTg4OWYtNTA0YzE2YzdjNmE5P2FwaS12ZXJzaW9uPTIwMTQtMDktMDE=", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { @@ -256,13 +256,13 @@ "en-us" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "User-Agent": [ "Microsoft.Azure.Management.BackupServices.BackupServicesManagementClient/0.0.0.0" ] }, - "ResponseBody": "{\r\n \"status\": \"InProgress\",\r\n \"error\": {\r\n \"code\": \"\",\r\n \"message\": \"\"\r\n },\r\n \"jobList\": [\r\n \"93927662-217a-4124-a0f5-35d28cbaf141\"\r\n ]\r\n}", + "ResponseBody": "{\r\n \"status\": \"InProgress\",\r\n \"error\": {\r\n \"code\": \"\",\r\n \"message\": \"\"\r\n },\r\n \"jobList\": [\r\n \"2df287f4-5ba0-4530-b7bd-f78c34bace8a\"\r\n ]\r\n}", "ResponseHeaders": { "Content-Length": [ "107" @@ -277,29 +277,29 @@ "no-cache" ], "x-ms-request-id": [ - "f3fa85e9-bbb6-42b2-b250-465f28500e39" + "6f678bec-a5b8-49c0-885d-a820d913b40e" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS", - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS", + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "14991" + "14996" ], "x-ms-correlation-request-id": [ - "f3fa85e9-bbb6-42b2-b250-465f28500e39" + "6f678bec-a5b8-49c0-885d-a820d913b40e" ], "x-ms-routing-request-id": [ - "CENTRALUS:20150814T085347Z:f3fa85e9-bbb6-42b2-b250-465f28500e39" + "CENTRALUS:20150818T154039Z:6f678bec-a5b8-49c0-885d-a820d913b40e" ], "Cache-Control": [ "no-cache" ], "Date": [ - "Fri, 14 Aug 2015 08:53:47 GMT" + "Tue, 18 Aug 2015 15:40:39 GMT" ], "Server": [ "Microsoft-IIS/8.0" @@ -311,8 +311,8 @@ "StatusCode": 200 }, { - "RequestUri": "/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/jobs/93927662-217a-4124-a0f5-35d28cbaf141?api-version=2014-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL2pvYnMvOTM5Mjc2NjItMjE3YS00MTI0LWEwZjUtMzVkMjhjYmFmMTQxP2FwaS12ZXJzaW9uPTIwMTQtMDktMDE=", + "RequestUri": "/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/jobs/2df287f4-5ba0-4530-b7bd-f78c34bace8a?api-version=2014-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvZjUzMDNhMGItZmFlNC00Y2RiLWI0NGQtMGU0YzAzMmRkZTI2L3Jlc291cmNlR3JvdXBzL2JhY2t1cHJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuQmFja3VwL0JhY2t1cFZhdWx0L2JhY2t1cHJuL2pvYnMvMmRmMjg3ZjQtNWJhMC00NTMwLWI3YmQtZjc4YzM0YmFjZThhP2FwaS12ZXJzaW9uPTIwMTQtMDktMDE=", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { @@ -320,16 +320,16 @@ "en-us" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "User-Agent": [ "Microsoft.Azure.Management.BackupServices.BackupServicesManagementClient/0.0.0.0" ] }, - "ResponseBody": "{\r\n \"properties\": {\r\n \"tasksList\": [],\r\n \"propertyBag\": {\r\n \"VM Name\": \"hydrarecordvm\",\r\n \"Cloud Service\": \"hydrarecordvm\"\r\n },\r\n \"progressPercentage\": null,\r\n \"dynamicErrorMessage\": null,\r\n \"workloadType\": \"VM\",\r\n \"operation\": \"Register\",\r\n \"status\": \"Failed\",\r\n \"startTimestamp\": \"2015-08-14T08:53:46.8680494Z\",\r\n \"endTimestamp\": \"2015-08-14T08:53:47.4570988Z\",\r\n \"duration\": \"00:00:00.5890494\",\r\n \"entityFriendlyName\": \"hydrarecordvm\",\r\n \"actionsInfo\": null,\r\n \"errorDetails\": [\r\n {\r\n \"errorCode\": 134607754,\r\n \"errorTitle\": \"\",\r\n \"errorString\": \"Another operation is in progress on the selected item.\",\r\n \"recommendations\": [\r\n \"If there is a current, in-progress operation, please retry after it has finished.\"\r\n ]\r\n }\r\n ]\r\n },\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/jobs/93927662-217a-4124-a0f5-35d28cbaf141\",\r\n \"name\": \"93927662-217a-4124-a0f5-35d28cbaf141\",\r\n \"type\": \"Microsoft.Backup/BackupVault/jobs\"\r\n}", + "ResponseBody": "{\r\n \"properties\": {\r\n \"tasksList\": [],\r\n \"propertyBag\": {\r\n \"VM Name\": \"powershellbvt\",\r\n \"Cloud Service\": \"powershellbvt\"\r\n },\r\n \"progressPercentage\": null,\r\n \"dynamicErrorMessage\": null,\r\n \"workloadType\": \"VM\",\r\n \"operation\": \"Register\",\r\n \"status\": \"InProgress\",\r\n \"startTimestamp\": \"2015-08-18T15:40:36.3766125Z\",\r\n \"endTimestamp\": \"2001-01-01T00:00:00Z\",\r\n \"duration\": \"00:00:02.8034889\",\r\n \"entityFriendlyName\": \"powershellbvt\",\r\n \"actionsInfo\": null,\r\n \"errorDetails\": null\r\n },\r\n \"id\": \"/subscriptions/f5303a0b-fae4-4cdb-b44d-0e4c032dde26/resourceGroups/backuprg/providers/Microsoft.Backup/BackupVault/backuprn/jobs/2df287f4-5ba0-4530-b7bd-f78c34bace8a\",\r\n \"name\": \"2df287f4-5ba0-4530-b7bd-f78c34bace8a\",\r\n \"type\": \"Microsoft.Backup/BackupVault/jobs\"\r\n}", "ResponseHeaders": { "Content-Length": [ - "893" + "677" ], "Content-Type": [ "application/json" @@ -341,29 +341,29 @@ "no-cache" ], "x-ms-request-id": [ - "64a57270-ff84-495c-9d2f-5074d6e9b14c" + "5569d853-28fe-4006-8a64-8880c5005433" ], "x-ms-client-request-id": [ - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS", - "dbb82a7a-538d-47c6-bde5-9d5e6ac0ccc3-2015-08-14 08:53:43Z-PS" + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS", + "ebc2e8e9-92ea-4c9e-8bd9-c1f2eee14183-2015-08-18 15:40:33Z-PS" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "14990" + "14995" ], "x-ms-correlation-request-id": [ - "64a57270-ff84-495c-9d2f-5074d6e9b14c" + "5569d853-28fe-4006-8a64-8880c5005433" ], "x-ms-routing-request-id": [ - "CENTRALUS:20150814T085348Z:64a57270-ff84-495c-9d2f-5074d6e9b14c" + "CENTRALUS:20150818T154040Z:5569d853-28fe-4006-8a64-8880c5005433" ], "Cache-Control": [ "no-cache" ], "Date": [ - "Fri, 14 Aug 2015 08:53:47 GMT" + "Tue, 18 Aug 2015 15:40:39 GMT" ], "Server": [ "Microsoft-IIS/8.0"