From e3e7ecb40b4a055ddba25768681974b837b1e513 Mon Sep 17 00:00:00 2001 From: pikumarmsft Date: Mon, 24 Aug 2015 16:56:10 +0530 Subject: [PATCH 1/6] Removing unused parameter in disableProtection. --- .../Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs | 2 ++ .../Cmdlets/Item/Disable-AzureRMBackupProtection .cs | 6 ------ .../Cmdlets/Item/Enable-AzureRMBackupProtection .cs | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs index 46d975b9255b..ac217acd4b19 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs @@ -93,5 +93,7 @@ internal static class AzureBackupCmdletHelpMessage public const string WeekNumber = "List of Week Numbers of the month"; public const string MonthsOfYear = "List of Months of the year"; public const string Retention = "Retention duration value"; + + public const string PolicyObject = "Policy object for enabling protection"; } } 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 ef40407e65df..af9f3f04e048 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureRMBackupProtection .cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureRMBackupProtection .cs @@ -40,12 +40,6 @@ public SwitchParameter RemoveRecoveryPoints } private bool DeleteBackupData; - [Parameter(Position = 2, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.Reason)] - public string Reason { get; set; } - - [Parameter(Position = 3, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.Comments)] - public string Comments { get; set; } - public override void ExecuteCmdlet() { ExecutionBlock(() => 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 1c7a6f518c05..1f52a7b7e487 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureRMBackupProtection .cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureRMBackupProtection .cs @@ -32,7 +32,7 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets [Cmdlet(VerbsLifecycle.Enable, "AzureRMBackupProtection"), OutputType(typeof(AzureRMBackupJob))] public class EnableAzureRMBackupProtection : AzureRMBackupItemCmdletBase { - [Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.PolicyName)] + [Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.PolicyObject)] [ValidateNotNullOrEmpty] public AzureRMBackupProtectionPolicy Policy { get; set; } From bd4939ed84aec96ded47ef098f62cdf4fdc67618 Mon Sep 17 00:00:00 2001 From: dragonfly91 Date: Tue, 25 Aug 2015 10:38:34 +0530 Subject: [PATCH 2/6] Taking dependency on the latest nuget and deleting the DLL. --- .../Commands.AzureBackup.Test.csproj | 3 +-- .../Commands.AzureBackup.Test/packages.config | 2 +- .../Commands.AzureBackup.csproj | 3 +-- ...ure.Management.BackupServicesManagement.dll | Bin 237568 -> 0 bytes .../Commands.AzureBackup/packages.config | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/Microsoft.Azure.Management.BackupServicesManagement.dll diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/Commands.AzureBackup.Test.csproj b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/Commands.AzureBackup.Test.csproj index 569187754c5a..f99f5cc0a02b 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/Commands.AzureBackup.Test.csproj +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/Commands.AzureBackup.Test.csproj @@ -40,8 +40,7 @@ ..\..\..\packages\Microsoft.Azure.Common.Authentication.1.1.3-preview\lib\net45\Microsoft.Azure.Common.Authentication.dll - False - ..\Commands.AzureBackup\Resources\Microsoft.Azure.Management.BackupServicesManagement.dll + ..\..\..\packages\Microsoft.Azure.Management.BackupServices.1.0.4-preview\lib\net40\Microsoft.Azure.Management.BackupServicesManagement.dll False diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/packages.config b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/packages.config index 3692e89e3c49..d41075f32d33 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/packages.config +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/packages.config @@ -4,7 +4,7 @@ - + diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Commands.AzureBackup.csproj b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Commands.AzureBackup.csproj index 9562723b6b0a..71c94def5725 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Commands.AzureBackup.csproj +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Commands.AzureBackup.csproj @@ -57,8 +57,7 @@ ..\..\..\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.NetFramework.dll - False - Resources\Microsoft.Azure.Management.BackupServicesManagement.dll + ..\..\..\packages\Microsoft.Azure.Management.BackupServices.1.0.4-preview\lib\net40\Microsoft.Azure.Management.BackupServicesManagement.dll False 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 deleted file mode 100644 index dbee840b00a565f994214904eaaec53fc98424a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237568 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 - + From 271e5a741430522e22734b0d8d1603c0ea492994 Mon Sep 17 00:00:00 2001 From: dragonfly91 Date: Tue, 25 Aug 2015 12:19:46 +0530 Subject: [PATCH 3/6] Fix for Bug 4308340:[SDKBash2][Powershell] Add tags in Vault object --- .../AzureBackupClientAdapter/VaultAdapter.cs | 6 +- .../Cmdlets/Vault/NewAzureRMBackupVault.cs | 10 +-- .../Cmdlets/Vault/SetAzureRMBackupVault.cs | 12 ++- .../Helpers/VaultHelpers.cs | 75 +++++++++++++++++++ .../Models/AzurePSBackupVault.cs | 3 +- 5 files changed, 96 insertions(+), 10 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs index 7867512414d2..ebed5ab73e6f 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs @@ -12,9 +12,12 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Management.BackupServices.Models; using System; +using System.Collections; using System.Collections.Generic; +using System.Linq; namespace Microsoft.Azure.Commands.AzureBackup.ClientAdapter { @@ -29,7 +32,7 @@ public partial class AzureBackupClientAdapter /// /// /// - public AzureBackupVault CreateOrUpdateAzureBackupVault(string resourceGroupName, string vaultName, string location) + public AzureBackupVault CreateOrUpdateAzureBackupVault(string resourceGroupName, string vaultName, string location, Hashtable[] Tag) { var createResourceParameters = new AzureBackupVaultCreateOrUpdateParameters() { @@ -41,6 +44,7 @@ public AzureBackupVault CreateOrUpdateAzureBackupVault(string resourceGroupName, Name = defaultSKU, }, }, + Tags = Tag.ConvertToDictionary(), }; var response = AzureBackupVaultClient.Vault.CreateOrUpdateAsync(resourceGroupName, vaultName, createResourceParameters, GetCustomRequestHeaders(), CmdletCancellationToken).Result; diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs index aca22a655f21..c57637623b17 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs @@ -16,6 +16,7 @@ using Microsoft.Azure.Commands.AzureBackup.Models; using Microsoft.Azure.Commands.AzureBackup.Properties; using System; +using System.Collections; using System.Management.Automation; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets @@ -41,10 +42,9 @@ public class NewAzureRMBackupVault : AzureBackupCmdletBase [Parameter(Position = 3, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.StorageType)] public AzureBackupVaultStorageType Storage { get; set; } - // TODO: Add support for tags - //[Alias("Tags")] - //[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] - //public Hashtable[] Tag { get; set; } + [Alias("Tags")] + [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] + public Hashtable[] Tag { get; set; } public override void ExecuteCmdlet() { @@ -55,7 +55,7 @@ public override void ExecuteCmdlet() WriteDebug(String.Format(Resources.CreatingBackupVault, ResourceGroupName, Name)); - var createdVault = AzureBackupClient.CreateOrUpdateAzureBackupVault(ResourceGroupName, Name, Region); + var createdVault = AzureBackupClient.CreateOrUpdateAzureBackupVault(ResourceGroupName, Name, Region, Tag); if (Storage != 0) { diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs index 53419e94d4ae..e7f6377646d9 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs @@ -16,6 +16,7 @@ using Microsoft.Azure.Commands.AzureBackup.Models; using Microsoft.Azure.Commands.AzureBackup.Properties; using System; +using System.Collections; using System.Management.Automation; using CmdletModel = Microsoft.Azure.Commands.AzureBackup.Models; @@ -31,9 +32,9 @@ public class SetAzureRMBackupVault : AzureBackupVaultCmdletBase public AzureBackupVaultStorageType Storage { get; set; } // TODO: Add support for tags - //[Alias("Tags")] - //[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] - //public Hashtable[] Tag { get; set; } + [Alias("Tags")] + [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] + public Hashtable[] Tag { get; set; } public override void ExecuteCmdlet() { @@ -48,6 +49,11 @@ public override void ExecuteCmdlet() AzureBackupClient.UpdateStorageType(Vault.ResourceGroupName, Vault.Name, Storage.ToString()); } + if (Tag != null) + { + AzureBackupClient.CreateOrUpdateAzureBackupVault(Vault.ResourceGroupName, Vault.Name, Vault.Region, Tag); + } + var backupVault = AzureBackupClient.GetVault(Vault.ResourceGroupName, Vault.Name); WriteObject(VaultHelpers.GetCmdletVault(backupVault, AzureBackupClient.GetStorageTypeDetails(Vault.ResourceGroupName, Vault.Name))); }); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs index 2bb8d3805a01..c469988ec10f 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs @@ -13,6 +13,9 @@ // ---------------------------------------------------------------------------------- using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; using ClientModel = Microsoft.Azure.Management.BackupServices.Models; using CmdletModel = Microsoft.Azure.Commands.AzureBackup.Models; @@ -35,6 +38,7 @@ public static CmdletModel.AzureRMBackupVault GetCmdletVault(ClientModel.AzureBac Region = vault.Location, ResourceGroupName = GetResourceGroup(vault.Id), Storage = storageType, + Tags = vault.Tags.GetTagsHashtables(), }; return response; @@ -50,5 +54,76 @@ public static string GetResourceGroup(string vaultId) string[] tokens = vaultId.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); return tokens[3]; } + + /// + /// Extension to convert enumerable Hashtable into a dictionary + /// + /// + /// + public static Dictionary ConvertToDictionary(this Hashtable[] tags) + { + return tags == null + ? null + : tags + .CoalesceEnumerable() + .Select(hashTable => hashTable.OfType() + .ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value)) + .Where(tagDictionary => tagDictionary.ContainsKey("Name")) + .Select(tagDictionary => Tuple + .Create( + tagDictionary["Name"].ToString(), + tagDictionary.ContainsKey("Value") ? tagDictionary["Value"].ToString() : string.Empty)) + .Distinct(kvp => kvp.Item1) + .ToDictionary(kvp => kvp.Item1, kvp => kvp.Item2); + } + + /// + /// Extension to coalesce enumerable + /// + /// Enumerable type + /// Enumerable + /// + public static IEnumerable CoalesceEnumerable(this IEnumerable source) + { + return source ?? Enumerable.Empty(); + } + + /// + /// Extension to remove duplicates from enumerable based on a provided key selector + /// + /// Enumerable type + /// Type of key + /// Input enumerable to remove duplicates from + /// Lambda to select key + /// + public static IEnumerable Distinct(this IEnumerable source, Func keySelector) + { + var set = new Dictionary(EqualityComparer.Default); + foreach (TSource element in source) + { + TSource value; + var key = keySelector(element); + if (!set.TryGetValue(key, out value)) + { + yield return element; + } + else + { + set[key] = value; + } + } + } + + /// + /// Extension to convert dictionary to hashtable enumerable + /// + /// + /// + public static Hashtable[] GetTagsHashtables(this IDictionary tags) + { + return tags == null + ? null + : tags.Select(kvp => new Hashtable { { "Name", kvp.Key }, { "Value", kvp.Value } }).ToArray(); + } } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs index a86ec7bc4aeb..39c7502b4a73 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs @@ -14,6 +14,7 @@ using Microsoft.Azure.Commands.AzureBackup.Properties; using System; +using System.Collections; namespace Microsoft.Azure.Commands.AzureBackup.Models { @@ -30,7 +31,7 @@ public class AzureRMBackupVault public string Region { get; set; } - // public Hashtable[] Tags { get; protected set; } + public Hashtable[] Tags { get; set; } public string Storage { get; set; } From c2b9577800ab3fd9e368ddd0cc7edf43e11fabba Mon Sep 17 00:00:00 2001 From: dragonfly91 Date: Tue, 25 Aug 2015 15:42:55 +0530 Subject: [PATCH 4/6] Disabling tags --- .../AzureBackupClientAdapter/VaultAdapter.cs | 3 +-- .../Cmdlets/Vault/NewAzureRMBackupVault.cs | 9 +++++---- .../Cmdlets/Vault/SetAzureRMBackupVault.cs | 11 +++-------- .../Commands.AzureBackup/Helpers/VaultHelpers.cs | 1 - .../Commands.AzureBackup/Models/AzurePSBackupVault.cs | 3 ++- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs index ebed5ab73e6f..b028cba7a36f 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs @@ -32,7 +32,7 @@ public partial class AzureBackupClientAdapter /// /// /// - public AzureBackupVault CreateOrUpdateAzureBackupVault(string resourceGroupName, string vaultName, string location, Hashtable[] Tag) + public AzureBackupVault CreateOrUpdateAzureBackupVault(string resourceGroupName, string vaultName, string location) { var createResourceParameters = new AzureBackupVaultCreateOrUpdateParameters() { @@ -44,7 +44,6 @@ public AzureBackupVault CreateOrUpdateAzureBackupVault(string resourceGroupName, Name = defaultSKU, }, }, - Tags = Tag.ConvertToDictionary(), }; var response = AzureBackupVaultClient.Vault.CreateOrUpdateAsync(resourceGroupName, vaultName, createResourceParameters, GetCustomRequestHeaders(), CmdletCancellationToken).Result; diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs index c57637623b17..7cf2bf566903 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs @@ -42,9 +42,10 @@ public class NewAzureRMBackupVault : AzureBackupCmdletBase [Parameter(Position = 3, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.StorageType)] public AzureBackupVaultStorageType Storage { get; set; } - [Alias("Tags")] - [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] - public Hashtable[] Tag { get; set; } + // TODO: Add support for tags + //[Alias("Tags")] + //[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] + //public Hashtable[] Tag { get; set; } public override void ExecuteCmdlet() { @@ -55,7 +56,7 @@ public override void ExecuteCmdlet() WriteDebug(String.Format(Resources.CreatingBackupVault, ResourceGroupName, Name)); - var createdVault = AzureBackupClient.CreateOrUpdateAzureBackupVault(ResourceGroupName, Name, Region, Tag); + var createdVault = AzureBackupClient.CreateOrUpdateAzureBackupVault(ResourceGroupName, Name, Region); if (Storage != 0) { diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs index e7f6377646d9..1b447931f0f7 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs @@ -32,9 +32,9 @@ public class SetAzureRMBackupVault : AzureBackupVaultCmdletBase public AzureBackupVaultStorageType Storage { get; set; } // TODO: Add support for tags - [Alias("Tags")] - [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] - public Hashtable[] Tag { get; set; } + //[Alias("Tags")] + //[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ResourceTags)] + //public Hashtable[] Tag { get; set; } public override void ExecuteCmdlet() { @@ -49,11 +49,6 @@ public override void ExecuteCmdlet() AzureBackupClient.UpdateStorageType(Vault.ResourceGroupName, Vault.Name, Storage.ToString()); } - if (Tag != null) - { - AzureBackupClient.CreateOrUpdateAzureBackupVault(Vault.ResourceGroupName, Vault.Name, Vault.Region, Tag); - } - var backupVault = AzureBackupClient.GetVault(Vault.ResourceGroupName, Vault.Name); WriteObject(VaultHelpers.GetCmdletVault(backupVault, AzureBackupClient.GetStorageTypeDetails(Vault.ResourceGroupName, Vault.Name))); }); diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs index c469988ec10f..818c318ef558 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs @@ -38,7 +38,6 @@ public static CmdletModel.AzureRMBackupVault GetCmdletVault(ClientModel.AzureBac Region = vault.Location, ResourceGroupName = GetResourceGroup(vault.Id), Storage = storageType, - Tags = vault.Tags.GetTagsHashtables(), }; return response; diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs index 39c7502b4a73..b54918d3efe5 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs @@ -31,7 +31,8 @@ public class AzureRMBackupVault public string Region { get; set; } - public Hashtable[] Tags { get; set; } + // TODO: Add support for tags + //public Hashtable[] Tags { get; set; } public string Storage { get; set; } From 4ab2c88c19d6da36e7fcedf762c89c23b374a6a9 Mon Sep 17 00:00:00 2001 From: dragonfly91 Date: Tue, 25 Aug 2015 19:37:56 +0530 Subject: [PATCH 5/6] Removing unused usings --- .../AzureBackupClientAdapter/VaultAdapter.cs | 3 --- .../Cmdlets/Vault/NewAzureRMBackupVault.cs | 1 - .../Cmdlets/Vault/SetAzureRMBackupVault.cs | 1 - .../Commands.AzureBackup/Models/AzurePSBackupVault.cs | 1 - 4 files changed, 6 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs index b028cba7a36f..7867512414d2 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/VaultAdapter.cs @@ -12,12 +12,9 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.Commands.AzureBackup.Helpers; using Microsoft.Azure.Management.BackupServices.Models; using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; namespace Microsoft.Azure.Commands.AzureBackup.ClientAdapter { diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs index 7cf2bf566903..aca22a655f21 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/NewAzureRMBackupVault.cs @@ -16,7 +16,6 @@ using Microsoft.Azure.Commands.AzureBackup.Models; using Microsoft.Azure.Commands.AzureBackup.Properties; using System; -using System.Collections; using System.Management.Automation; namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs index 1b447931f0f7..53419e94d4ae 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Vault/SetAzureRMBackupVault.cs @@ -16,7 +16,6 @@ using Microsoft.Azure.Commands.AzureBackup.Models; using Microsoft.Azure.Commands.AzureBackup.Properties; using System; -using System.Collections; using System.Management.Automation; using CmdletModel = Microsoft.Azure.Commands.AzureBackup.Models; diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs index b54918d3efe5..d57047ba15ee 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzurePSBackupVault.cs @@ -14,7 +14,6 @@ using Microsoft.Azure.Commands.AzureBackup.Properties; using System; -using System.Collections; namespace Microsoft.Azure.Commands.AzureBackup.Models { From 79b49afb9804ee3c6e02e3260f7eb168ebcb668e Mon Sep 17 00:00:00 2001 From: Samuel Anudeep Date: Tue, 25 Aug 2015 21:33:44 +0530 Subject: [PATCH 6/6] Incorporating PR comments Commented unused code. --- .../Helpers/VaultHelpers.cs | 88 ++++++++++--------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs index 818c318ef558..4d51fb5458ad 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Helpers/VaultHelpers.cs @@ -54,27 +54,29 @@ public static string GetResourceGroup(string vaultId) return tokens[3]; } + // NOTE: Commenting code which will be used in a later sprint, but not right now. + /// /// Extension to convert enumerable Hashtable into a dictionary /// /// /// - public static Dictionary ConvertToDictionary(this Hashtable[] tags) - { - return tags == null - ? null - : tags - .CoalesceEnumerable() - .Select(hashTable => hashTable.OfType() - .ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value)) - .Where(tagDictionary => tagDictionary.ContainsKey("Name")) - .Select(tagDictionary => Tuple - .Create( - tagDictionary["Name"].ToString(), - tagDictionary.ContainsKey("Value") ? tagDictionary["Value"].ToString() : string.Empty)) - .Distinct(kvp => kvp.Item1) - .ToDictionary(kvp => kvp.Item1, kvp => kvp.Item2); - } + // public static Dictionary ConvertToDictionary(this Hashtable[] tags) + // { + // return tags == null + // ? null + // : tags + // .CoalesceEnumerable() + // .Select(hashTable => hashTable.OfType() + // .ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value)) + // .Where(tagDictionary => tagDictionary.ContainsKey("Name")) + // .Select(tagDictionary => Tuple + // .Create( + // tagDictionary["Name"].ToString(), + // tagDictionary.ContainsKey("Value") ? tagDictionary["Value"].ToString() : string.Empty)) + // .Distinct(kvp => kvp.Item1) + // .ToDictionary(kvp => kvp.Item1, kvp => kvp.Item2); + // } /// /// Extension to coalesce enumerable @@ -82,10 +84,10 @@ public static Dictionary ConvertToDictionary(this Hashtable[] ta /// Enumerable type /// Enumerable /// - public static IEnumerable CoalesceEnumerable(this IEnumerable source) - { - return source ?? Enumerable.Empty(); - } + // public static IEnumerable CoalesceEnumerable(this IEnumerable source) + // { + // return source ?? Enumerable.Empty(); + // } /// /// Extension to remove duplicates from enumerable based on a provided key selector @@ -95,34 +97,34 @@ public static IEnumerable CoalesceEnumerable(this IEnumerable< /// Input enumerable to remove duplicates from /// Lambda to select key /// - public static IEnumerable Distinct(this IEnumerable source, Func keySelector) - { - var set = new Dictionary(EqualityComparer.Default); - foreach (TSource element in source) - { - TSource value; - var key = keySelector(element); - if (!set.TryGetValue(key, out value)) - { - yield return element; - } - else - { - set[key] = value; - } - } - } + // public static IEnumerable Distinct(this IEnumerable source, Func keySelector) + // { + // var set = new Dictionary(EqualityComparer.Default); + // foreach (TSource element in source) + // { + // TSource value; + // var key = keySelector(element); + // if (!set.TryGetValue(key, out value)) + // { + // yield return element; + // } + // else + // { + // set[key] = value; + // } + // } + // } /// /// Extension to convert dictionary to hashtable enumerable /// /// /// - public static Hashtable[] GetTagsHashtables(this IDictionary tags) - { - return tags == null - ? null - : tags.Select(kvp => new Hashtable { { "Name", kvp.Key }, { "Value", kvp.Value } }).ToArray(); - } + // public static Hashtable[] GetTagsHashtables(this IDictionary tags) + // { + // return tags == null + // ? null + // : tags.Select(kvp => new Hashtable { { "Name", kvp.Key }, { "Value", kvp.Value } }).ToArray(); + // } } }