From efb9c5c3e689611d2d05e975edd72aff48d0947d Mon Sep 17 00:00:00 2001 From: Yifan Zhang Date: Fri, 8 Jul 2022 15:29:58 +0800 Subject: [PATCH 1/2] encryptionscope and object replication --- .../File/StorageFileBaseCmdlet.cs | 42 ++++++- .../Models/PSEncryptionScope.cs | 35 +++--- .../Models/PSObjectReplicationPolicy.cs | 112 ++++++++---------- .../GetAzStorageObjectReplicationPolicy.cs | 29 +++-- .../GetAzureStorageEncryptionScope.cs | 39 +++--- ...NewAzStorageObjectReplicationPolicyRule.cs | 6 +- .../NewAzureStorageEncryptionScope.cs | 27 +++-- .../RemoveAzStorageObjectReplicationPolicy.cs | 7 +- .../SetAzStorageObjectReplicationPolicy.cs | 40 ++++--- .../UpdateAzureStorageEncryptionScope.cs | 28 +++-- 10 files changed, 201 insertions(+), 164 deletions(-) diff --git a/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs b/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs index 46dc01b85dbc..fbdda8dc3dc2 100644 --- a/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs +++ b/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs @@ -16,11 +16,11 @@ using Microsoft.Azure.Commands.ResourceManager.Common; using Microsoft.Azure.Management.Storage; using Microsoft.Azure.Management.Storage.Models; +using Microsoft.Azure.Management.WebSites.Version2016_09_01.Models; using Microsoft.WindowsAzure.Commands.Utilities.Common; using System; using System.Collections; using System.Collections.Generic; -using StorageModels = Microsoft.Azure.Management.Storage.Models; namespace Microsoft.Azure.Commands.Management.Storage { @@ -85,6 +85,33 @@ protected struct ShareCreateExpand internal const string Snapshots = "snapshots"; } + protected struct RootSquashType + { + internal const string NoRootSquash = "NoRootSquash"; + internal const string RootSquash = "RootSquash"; + internal const string AllSquash = "AllSquash"; + } + + protected struct ShareAccessTier + { + internal const string TransactionOptimized = "TransactionOptimized"; + internal const string Hot = "Hot"; + internal const string Cool = "Cool"; + internal const string Premium = "Premium"; + } + + protected struct EncryptionScopeState + { + internal const string Enabled = "Enabled"; + internal const string Disabled = "Disabled"; + } + + protected struct EnabledProtocols + { + internal const string SMB = "SMB"; + internal const string NFS = "NFS"; + } + public string ConnectStringArray(string[] stringArray, string seperator = ";") { if (stringArray == null) @@ -123,6 +150,19 @@ public IStorageManagementClient StorageClient set { storageClientWrapper = new StorageManagementClientWrapper(value); } } + private Track2StorageManagementClient _track2StorageManagementClient; + public Track2StorageManagementClient StorageClientTrack2 + { + get + { + return _track2StorageManagementClient ?? (_track2StorageManagementClient = new Track2StorageManagementClient( + Microsoft.Azure.Commands.Common.Authentication.AzureSession.Instance.ClientFactory, + DefaultContext)); + } + + set { _track2StorageManagementClient = value; } + } + public string SubscriptionId { get diff --git a/src/Storage/Storage.Management/Models/PSEncryptionScope.cs b/src/Storage/Storage.Management/Models/PSEncryptionScope.cs index 4aa52d3b8cea..db83ea87f1a5 100644 --- a/src/Storage/Storage.Management/Models/PSEncryptionScope.cs +++ b/src/Storage/Storage.Management/Models/PSEncryptionScope.cs @@ -13,34 +13,34 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Commands.Common.Authentication.Abstractions; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Management.Storage.Models; using Microsoft.WindowsAzure.Commands.Common.Attributes; using Microsoft.WindowsAzure.Commands.Common.Storage; using Microsoft.WindowsAzure.Commands.Storage.Adapters; using Microsoft.Azure.Storage; using System; using System.Collections.Generic; -using StorageModels = Microsoft.Azure.Management.Storage.Models; +using Track2 = Azure.ResourceManager.Storage; +using Track2Models = Azure.ResourceManager.Storage.Models; + namespace Microsoft.Azure.Commands.Management.Storage.Models { // wrapper of EncryptionScope public class PSEncryptionScope { - public PSEncryptionScope(StorageModels.EncryptionScope scope) + public PSEncryptionScope(Track2.EncryptionScopeResource scope) { this.ResourceGroupName = ParseResourceGroupFromId(scope.Id); this.StorageAccountName = ParseStorageAccountNameFromId(scope.Id); this.Id = scope.Id; - this.Name = scope.Name; - this.Type = scope.Type; - this.LastModifiedTime = scope.LastModifiedTime; - this.CreationTime = scope.CreationTime; - this.Source = scope.Source; - this.State = scope.State; - this.KeyVaultProperties = scope.KeyVaultProperties is null ? null : new PSEncryptionScopeKeyVaultProperties(scope.KeyVaultProperties); - this.RequireInfrastructureEncryption = scope.RequireInfrastructureEncryption; + this.Name = scope.Data.Name; + this.Type = scope.Data.ResourceType; + this.LastModifiedTime = scope.Data.LastModifiedOn; + this.CreationTime = scope.Data.CreationOn; + this.Source = scope.Data.Source.ToString(); + this.State = scope.Data.State.ToString(); + this.KeyVaultProperties = scope.Data.KeyVaultProperties is null ? null : new PSEncryptionScopeKeyVaultProperties(scope.Data.KeyVaultProperties); + this.RequireInfrastructureEncryption = scope.Data.RequireInfrastructureEncryption; } [Ps1Xml(Label = "ResourceGroupName", Target = ViewControl.List, Position = 0)] @@ -65,9 +65,9 @@ public PSEncryptionScope(StorageModels.EncryptionScope scope) public bool? RequireInfrastructureEncryption { get; set; } [Ps1Xml(Label = "LastModifiedTime", Target = ViewControl.List, Position = 4)] - public DateTime? LastModifiedTime { get; set; } + public DateTimeOffset? LastModifiedTime { get; set; } - public DateTime? CreationTime { get; set; } + public DateTimeOffset? CreationTime { get; set; } public static string ParseResourceGroupFromId(string idFromServer) { @@ -98,11 +98,14 @@ public static string ParseStorageAccountNameFromId(string idFromServer) //wrapper of EncryptionScopeKeyVaultProperties public class PSEncryptionScopeKeyVaultProperties { - public PSEncryptionScopeKeyVaultProperties(StorageModels.EncryptionScopeKeyVaultProperties keyVaultProperties) + public PSEncryptionScopeKeyVaultProperties(Track2Models.EncryptionScopeKeyVaultProperties keyVaultProperties) { if (keyVaultProperties != null) { - this.keyUri = keyVaultProperties.KeyUri; + if (keyVaultProperties.KeyUri != null) + { + this.keyUri = keyVaultProperties.KeyUri.OriginalString; + } } } diff --git a/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs b/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs index 36596fb5aa35..fe6696eaf997 100644 --- a/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs @@ -12,10 +12,12 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.Management.Storage.Models; using Microsoft.WindowsAzure.Commands.Common.Attributes; using System; using System.Collections.Generic; +using System.Runtime.Serialization; +using Track2 = Azure.ResourceManager.Storage; +using Track2Models = Azure.ResourceManager.Storage.Models; namespace Microsoft.Azure.Commands.Management.Storage.Models { @@ -35,7 +37,7 @@ public class PSObjectReplicationPolicy [Ps1Xml(Label = "PolicyId", Target = ViewControl.Table, Position = 2)] public string PolicyId { get; set; } [Ps1Xml(Label = "EnabledTime", Target = ViewControl.Table, Position = 3)] - public DateTime? EnabledTime { get; } + public DateTimeOffset? EnabledTime { get; } [Ps1Xml(Label = "SourceAccount", Target = ViewControl.Table, Position = 4)] public string SourceAccount { get; set; } [Ps1Xml(Label = "DestinationAccount", Target = ViewControl.Table, Position = 5)] @@ -46,43 +48,32 @@ public class PSObjectReplicationPolicy public PSObjectReplicationPolicy() { } - public PSObjectReplicationPolicy(ObjectReplicationPolicy policy, string ResourceGroupName, string StorageAccountName) + public PSObjectReplicationPolicy(Track2.ObjectReplicationPolicyResource policy, string ResourceGroupName, string StorageAccountName) { this.ResourceGroupName = ResourceGroupName; this.StorageAccountName = StorageAccountName; this.ResourceId = policy.Id; - this.Name = policy.Name; - this.Type = policy.Type; - this.PolicyId = policy.PolicyId; - this.EnabledTime = policy.EnabledTime; - this.SourceAccount = policy.SourceAccount; - this.DestinationAccount = policy.DestinationAccount; - this.Rules = PSObjectReplicationPolicyRule.GetPSObjectReplicationPolicyRules(policy.Rules); + this.Name = policy.Data.Name; + this.Type = policy.Data.ResourceType; + this.PolicyId = policy.Data.PolicyId; + this.EnabledTime = policy.Data.EnabledOn; + this.SourceAccount = policy.Data.SourceAccount; + this.DestinationAccount = policy.Data.DestinationAccount; + this.Rules = PSObjectReplicationPolicyRule.GetPSObjectReplicationPolicyRules(policy.Data.Rules); } - public ObjectReplicationPolicy ParseObjectReplicationPolicy() + public Track2.ObjectReplicationPolicyData ParseObjectReplicationPolicy() { - ObjectReplicationPolicy policy = new ObjectReplicationPolicy() - { - SourceAccount = this.SourceAccount, - DestinationAccount = this.DestinationAccount, - Rules = PSObjectReplicationPolicyRule.ParseObjectReplicationPolicyRules(this.Rules) - }; - return policy; - } + Track2.ObjectReplicationPolicyData data = new Track2.ObjectReplicationPolicyData(); + data.SourceAccount = this.SourceAccount; + data.DestinationAccount = this.DestinationAccount; - public static PSObjectReplicationPolicy[] GetPSObjectReplicationPolicies(IEnumerable policies, string ResourceGroupName, string StorageAccountName) - { - if (policies == null) - { - return null; - } - List pspolicies = new List(); - foreach (ObjectReplicationPolicy policy in policies) + foreach(PSObjectReplicationPolicyRule rule in this.Rules) { - pspolicies.Add(new PSObjectReplicationPolicy(policy, ResourceGroupName, StorageAccountName)); + data.Rules.Add(rule.ParseObjectReplicationPolicyRule()); } - return pspolicies.ToArray(); + + return data; } } @@ -104,7 +95,7 @@ public PSObjectReplicationPolicyRule() { } - public PSObjectReplicationPolicyRule(ObjectReplicationPolicyRule rule) + public PSObjectReplicationPolicyRule(Track2Models.ObjectReplicationPolicyRule rule) { this.RuleId = rule.RuleId; this.SourceContainer = rule.SourceContainer; @@ -112,43 +103,27 @@ public PSObjectReplicationPolicyRule(ObjectReplicationPolicyRule rule) this.Filters = rule.Filters is null ? null : new PSObjectReplicationPolicyFilter(rule.Filters); } - public ObjectReplicationPolicyRule ParseObjectReplicationPolicyRule() + public Track2Models.ObjectReplicationPolicyRule ParseObjectReplicationPolicyRule() { - ObjectReplicationPolicyRule rule = new ObjectReplicationPolicyRule(); + Track2Models.ObjectReplicationPolicyRule rule = new Track2Models.ObjectReplicationPolicyRule(this.SourceContainer, this.DestinationContainer); rule.RuleId = this.RuleId; - rule.SourceContainer = this.SourceContainer; - rule.DestinationContainer = this.DestinationContainer; - rule.Filters = this.Filters is null ? null : this.Filters.ParseObjectReplicationPolicyFilter(); + rule.Filters = this.Filters?.ParseObjectReplicationPolicyFilter(); return rule; } - public static PSObjectReplicationPolicyRule[] GetPSObjectReplicationPolicyRules(IList rules) + public static PSObjectReplicationPolicyRule[] GetPSObjectReplicationPolicyRules(IList rules) { if (rules == null) { return null; } List psrules = new List(); - foreach (ObjectReplicationPolicyRule rule in rules) + foreach (Track2Models.ObjectReplicationPolicyRule rule in rules) { psrules.Add(new PSObjectReplicationPolicyRule(rule)); } return psrules.ToArray(); } - - public static List ParseObjectReplicationPolicyRules(PSObjectReplicationPolicyRule[] psrules) - { - if (psrules == null) - { - return null; - } - List rules = new List(); - foreach (PSObjectReplicationPolicyRule psrule in psrules) - { - rules.Add(psrule.ParseObjectReplicationPolicyRule()); - } - return rules; - } } /// @@ -157,39 +132,46 @@ public static List ParseObjectReplicationPolicyRule public class PSObjectReplicationPolicyFilter { public string[] PrefixMatch { get; set; } - public DateTime? MinCreationTime; + public DateTimeOffset? MinCreationTime; public PSObjectReplicationPolicyFilter() { } - public PSObjectReplicationPolicyFilter(ObjectReplicationPolicyFilter filter) + public PSObjectReplicationPolicyFilter(Track2Models.ObjectReplicationPolicyFilter filter) { if (filter != null) { this.PrefixMatch = filter.PrefixMatch is null ? null : new List(filter.PrefixMatch).ToArray(); - if (string.IsNullOrEmpty(filter.MinCreationTime)) - { - this.MinCreationTime = null; - } - else + + if (filter.MinCreationTime != null) { if (filter.MinCreationTime.ToUpper()[filter.MinCreationTime.Length - 1] != 'Z') { - filter.MinCreationTime = filter.MinCreationTime + "Z"; + filter.MinCreationTime += "Z"; } this.MinCreationTime = Convert.ToDateTime(filter.MinCreationTime); } } } - public ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter() + + + public Track2Models.ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter() { - return new ObjectReplicationPolicyFilter() + Track2Models.ObjectReplicationPolicyFilter filter = new Track2Models.ObjectReplicationPolicyFilter(); + + if (this.PrefixMatch != null) + { + foreach (string itm in this.PrefixMatch) + { + filter.PrefixMatch.Add(itm); + } + } + if (this.MinCreationTime != null) { - PrefixMatch = this.PrefixMatch is null ? null : new List(this.PrefixMatch), - //must be in format: 2020-02-19T16:05:00Z - MinCreationTime = this.MinCreationTime is null ? null : this.MinCreationTime.Value.ToUniversalTime().ToString("s") + "Z" - }; + filter.MinCreationTime = this.MinCreationTime.Value.ToUniversalTime().ToString("s") + "Z"; + } + return filter; } } } diff --git a/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs b/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs index a1fc4963b498..3c3f5590291e 100644 --- a/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs @@ -12,12 +12,12 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using Azure; using Microsoft.Azure.Commands.Management.Storage.Models; using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Management.Storage.Models; using System.Collections.Generic; using System.Management.Automation; +using Track2 = Azure.ResourceManager.Storage; namespace Microsoft.Azure.Commands.Management.Storage { @@ -82,19 +82,28 @@ public override void ExecuteCmdlet() } if (!string.IsNullOrEmpty(PolicyId)) { - ObjectReplicationPolicy policy = this.StorageClient.ObjectReplicationPolicies.Get( - this.ResourceGroupName, - this.StorageAccountName, - PolicyId); + + Track2.ObjectReplicationPolicyResource policy = this.StorageClientTrack2 + .GetObjectReplicationPolicyResource(this.ResourceGroupName, this.StorageAccountName, this.PolicyId) + .Get(); WriteObject(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName)); } else { - IEnumerable policies = this.StorageClient.ObjectReplicationPolicies.List( - this.ResourceGroupName, - this.StorageAccountName); - WriteObject(PSObjectReplicationPolicy.GetPSObjectReplicationPolicies(policies, this.ResourceGroupName, this.StorageAccountName), true); + Pageable policies = this.StorageClientTrack2 + .GetStorageAccount(this.ResourceGroupName, this.StorageAccountName) + .GetObjectReplicationPolicies() + .GetAll(); + + List pspolicies = new List(); + + foreach (Track2.ObjectReplicationPolicyResource policy in policies) + { + pspolicies.Add(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName)); + } + + WriteObject(pspolicies.ToArray(), true); } } } diff --git a/src/Storage/Storage.Management/StorageAccount/GetAzureStorageEncryptionScope.cs b/src/Storage/Storage.Management/StorageAccount/GetAzureStorageEncryptionScope.cs index e73b996598d8..713442a67f8c 100644 --- a/src/Storage/Storage.Management/StorageAccount/GetAzureStorageEncryptionScope.cs +++ b/src/Storage/Storage.Management/StorageAccount/GetAzureStorageEncryptionScope.cs @@ -13,8 +13,6 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Commands.Management.Storage.Models; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Management.Storage.Models; using System; using System.Collections; using System.Collections.Generic; @@ -22,6 +20,8 @@ using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; using Microsoft.Rest.Azure; using Microsoft.WindowsAzure.Commands.Utilities.Common; +using Azure; +using Track2 = Azure.ResourceManager.Storage; namespace Microsoft.Azure.Commands.Management.Storage { @@ -85,36 +85,27 @@ public override void ExecuteCmdlet() if (this.EncryptionScopeName == null) { - IPage scopes = this.StorageClient.EncryptionScopes.List( - this.ResourceGroupName, - this.StorageAccountName); - WriteEncryptionScopeList(scopes); - while (scopes.NextPageLink != null) + Pageable scopes = this.StorageClientTrack2 + .GetStorageAccount(this.ResourceGroupName, this.StorageAccountName) + .GetEncryptionScopes() + .GetAll(); + + List output = new List(); + foreach (Track2.EncryptionScopeResource scope in scopes) { - scopes = this.StorageClient.EncryptionScopes.ListNext(scopes.NextPageLink); - WriteEncryptionScopeList(scopes); + output.Add(new PSEncryptionScope(scope)); } + WriteObject(output, true); } else { - var scope = this.StorageClient.EncryptionScopes.Get( - this.ResourceGroupName, - this.StorageAccountName, - this.EncryptionScopeName); - + Track2.EncryptionScopeResource scope = this.StorageClientTrack2 + .GetEncryptionScopeResource(this.ResourceGroupName, this.StorageAccountName, this.EncryptionScopeName) + .Get(); + WriteObject(new PSEncryptionScope(scope)); } } - - protected void WriteEncryptionScopeList(IEnumerable scopes) - { - if (scopes != null) - { - List output = new List(); - scopes.ForEach(s => output.Add(new PSEncryptionScope(s))); - WriteObject(output, true); - } - } } } diff --git a/src/Storage/Storage.Management/StorageAccount/NewAzStorageObjectReplicationPolicyRule.cs b/src/Storage/Storage.Management/StorageAccount/NewAzStorageObjectReplicationPolicyRule.cs index eb0772399840..c5f75579b3b8 100644 --- a/src/Storage/Storage.Management/StorageAccount/NewAzStorageObjectReplicationPolicyRule.cs +++ b/src/Storage/Storage.Management/StorageAccount/NewAzStorageObjectReplicationPolicyRule.cs @@ -40,18 +40,18 @@ public class NewAzureStorageAccountObjectReplicationPolicyRuleCommand : StorageA [Parameter(Mandatory = false, HelpMessage = "Blobs created after the time will be replicated to the destination..")] [ValidateNotNull] - public DateTime MinCreationTime + public DateTimeOffset MinCreationTime { get { - return minCreationTime is null ? DateTime.MinValue : minCreationTime.Value; + return minCreationTime is null ? DateTimeOffset.MinValue : minCreationTime.Value; } set { minCreationTime = value; } } - private DateTime? minCreationTime; + private DateTimeOffset? minCreationTime; [Parameter(Mandatory = false, HelpMessage = "Object Replication Rule Id.")] diff --git a/src/Storage/Storage.Management/StorageAccount/NewAzureStorageEncryptionScope.cs b/src/Storage/Storage.Management/StorageAccount/NewAzureStorageEncryptionScope.cs index 197ad4c87c27..070f5b943376 100644 --- a/src/Storage/Storage.Management/StorageAccount/NewAzureStorageEncryptionScope.cs +++ b/src/Storage/Storage.Management/StorageAccount/NewAzureStorageEncryptionScope.cs @@ -13,13 +13,13 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Commands.Management.Storage.Models; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Management.Storage.Models; using System; using System.Collections; using System.Collections.Generic; using System.Management.Automation; using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using Track2 = Azure.ResourceManager.Storage; +using Track2Models = Azure.ResourceManager.Storage.Models; namespace Microsoft.Azure.Commands.Management.Storage { @@ -138,26 +138,29 @@ public override void ExecuteCmdlet() break; } - EncryptionScope scope = new EncryptionScope(); + Track2.EncryptionScopeData data = new Track2.EncryptionScopeData(); if (this.KeyvaultEncryption.IsPresent) { - scope.Source = EncryptionScopeSource.MicrosoftKeyVault; - scope.KeyVaultProperties = new EncryptionScopeKeyVaultProperties(this.KeyUri); + data.Source = Track2Models.EncryptionScopeSource.MicrosoftKeyVault; + data.KeyVaultProperties = new Track2Models.EncryptionScopeKeyVaultProperties + { + KeyUri = new Uri(this.KeyUri) + }; + } else { - scope.Source = EncryptionScopeSource.MicrosoftStorage; + data.Source = Track2Models.EncryptionScopeSource.MicrosoftStorage; } if (this.RequireInfrastructureEncryption.IsPresent) { - scope.RequireInfrastructureEncryption = true; + data.RequireInfrastructureEncryption = true; } - scope = this.StorageClient.EncryptionScopes.Put( - this.ResourceGroupName, - this.StorageAccountName, - this.EncryptionScopeName, - scope); + Track2.EncryptionScopeResource scope = this.StorageClientTrack2 + .GetStorageAccount(this.ResourceGroupName, this.StorageAccountName) + .GetEncryptionScopes() + .CreateOrUpdate(global::Azure.WaitUntil.Completed, this.EncryptionScopeName, data).Value ; WriteObject(new PSEncryptionScope(scope)); } diff --git a/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs b/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs index cbd232ca3c84..fc4dfe88506f 100644 --- a/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs @@ -14,7 +14,6 @@ using Microsoft.Azure.Commands.Management.Storage.Models; using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; -using Microsoft.Azure.Management.Storage; using System.Management.Automation; namespace Microsoft.Azure.Commands.Management.Storage @@ -106,10 +105,8 @@ public override void ExecuteCmdlet() break; } - this.StorageClient.ObjectReplicationPolicies.Delete( - this.ResourceGroupName, - this.StorageAccountName, - PolicyId); + this.StorageClientTrack2.GetObjectReplicationPolicyResource(this.ResourceGroupName, this.StorageAccountName, this.PolicyId) + .Delete(global::Azure.WaitUntil.Completed); if (PassThru.IsPresent) { diff --git a/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs b/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs index 1c087cdd0762..0aa2cdaaa038 100644 --- a/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs @@ -14,9 +14,8 @@ using Microsoft.Azure.Commands.Management.Storage.Models; using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Management.Storage.Models; using System.Management.Automation; +using Track2 = Azure.ResourceManager.Storage; namespace Microsoft.Azure.Commands.Management.Storage { @@ -142,7 +141,8 @@ public override void ExecuteCmdlet() if (ShouldProcess(this.StorageAccountName, "Set Storage Account Object Replication Policy")) { - ObjectReplicationPolicy policyToSet = null; + Track2.ObjectReplicationPolicyData data = new Track2.ObjectReplicationPolicyData(); + switch (ParameterSetName) { case AccountObjectParameterSet: @@ -151,7 +151,8 @@ public override void ExecuteCmdlet() break; case PolicyObjectParameterSet: this.PolicyId = InputObject.PolicyId; - policyToSet = InputObject.ParseObjectReplicationPolicy(); + data = InputObject.ParseObjectReplicationPolicy(); + break; default: // For AccountNameParameterSet, the ResourceGroupName and StorageAccountName can get from input directly @@ -167,7 +168,7 @@ public override void ExecuteCmdlet() // If source account is resource ID, destonation account also need be resource ID if (this.SourceAccount.Contains("/")) { - var account = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.StorageAccountName); + Track2.StorageAccountResource account = this.StorageClientTrack2.GetStorageAccount(this.ResourceGroupName, this.StorageAccountName).Get(); this.DestinationAccount = account.Id; } else // if source account is account name, destination account should also be account name @@ -176,19 +177,28 @@ public override void ExecuteCmdlet() } } - policyToSet = new ObjectReplicationPolicy() + data.SourceAccount = this.SourceAccount; + data.DestinationAccount = this.DestinationAccount; + if (this.Rule != null) { - SourceAccount = this.SourceAccount, - DestinationAccount = this.DestinationAccount, - Rules = PSObjectReplicationPolicyRule.ParseObjectReplicationPolicyRules(this.Rule) - }; + if (this.Rule.Length == 0) + { + data.Rules.Clear(); + } + else + { + foreach (PSObjectReplicationPolicyRule policyRule in this.Rule) + { + data.Rules.Add(policyRule.ParseObjectReplicationPolicyRule()); + } + } + } } - ObjectReplicationPolicy policy = this.StorageClient.ObjectReplicationPolicies.CreateOrUpdate( - this.ResourceGroupName, - this.StorageAccountName, - PolicyId, - policyToSet); + Track2.ObjectReplicationPolicyResource policy = this.StorageClientTrack2 + .GetStorageAccount(this.ResourceGroupName, this.StorageAccountName) + .GetObjectReplicationPolicies() + .CreateOrUpdate(global::Azure.WaitUntil.Completed, this.PolicyId, data).Value; WriteObject(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName)); } diff --git a/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs b/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs index cfee60b98cbf..53649402d101 100644 --- a/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs +++ b/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs @@ -13,13 +13,13 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Commands.Management.Storage.Models; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Management.Storage.Models; using System; using System.Collections; using System.Collections.Generic; using System.Management.Automation; using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using Track2 = Azure.ResourceManager.Storage; +using Track2Models = Azure.ResourceManager.Storage.Models; namespace Microsoft.Azure.Commands.Management.Storage { @@ -188,34 +188,36 @@ public override void ExecuteCmdlet() break; } - EncryptionScope scope = new EncryptionScope(); + Track2.EncryptionScopeData data = new Track2.EncryptionScopeData(); + if (this.KeyvaultEncryption.IsPresent) { - scope.Source = EncryptionScopeSource.MicrosoftKeyVault; - scope.KeyVaultProperties = new EncryptionScopeKeyVaultProperties(this.KeyUri); + data.Source = Track2Models.EncryptionScopeSource.MicrosoftKeyVault; + data.KeyVaultProperties = new Track2Models.EncryptionScopeKeyVaultProperties + { + KeyUri = new Uri(this.KeyUri) + }; } if (this.StorageEncryption.IsPresent) { - scope.Source = EncryptionScopeSource.MicrosoftStorage; + data.Source = Track2Models.EncryptionScopeSource.MicrosoftStorage; } if (this.State != null) { if (this.State.Equals(EncryptionScopeState.Enabled, StringComparison.CurrentCultureIgnoreCase)) { - scope.State = EncryptionScopeState.Enabled; + data.State = Track2Models.EncryptionScopeState.Enabled; } if (this.State.Equals(EncryptionScopeState.Disabled, StringComparison.CurrentCultureIgnoreCase)) { - scope.State = EncryptionScopeState.Disabled; + data.State = Track2Models.EncryptionScopeState.Disabled; } } - scope = this.StorageClient.EncryptionScopes.Patch( - this.ResourceGroupName, - this.StorageAccountName, - this.EncryptionScopeName, - scope); + Track2.EncryptionScopeResource scope = this.StorageClientTrack2 + .GetEncryptionScopeResource(this.ResourceGroupName, this.StorageAccountName, this.EncryptionScopeName) + .Update(data); WriteObject(new PSEncryptionScope(scope)); } From f9362d529ebffcf2657eae4888e28a396c26bfcd Mon Sep 17 00:00:00 2001 From: Yifan Zhang Date: Mon, 11 Jul 2022 11:33:22 +0800 Subject: [PATCH 2/2] clean up --- src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs | 1 - src/Storage/Storage.Management/Models/PSEncryptionScope.cs | 1 - .../Storage.Management/Models/PSObjectReplicationPolicy.cs | 3 --- .../StorageAccount/GetAzStorageObjectReplicationPolicy.cs | 2 -- .../StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs | 1 - .../StorageAccount/SetAzStorageObjectReplicationPolicy.cs | 2 -- .../StorageAccount/UpdateAzureStorageEncryptionScope.cs | 1 - 7 files changed, 11 deletions(-) diff --git a/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs b/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs index fbdda8dc3dc2..d1cb25c6e5b3 100644 --- a/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs +++ b/src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs @@ -16,7 +16,6 @@ using Microsoft.Azure.Commands.ResourceManager.Common; using Microsoft.Azure.Management.Storage; using Microsoft.Azure.Management.Storage.Models; -using Microsoft.Azure.Management.WebSites.Version2016_09_01.Models; using Microsoft.WindowsAzure.Commands.Utilities.Common; using System; using System.Collections; diff --git a/src/Storage/Storage.Management/Models/PSEncryptionScope.cs b/src/Storage/Storage.Management/Models/PSEncryptionScope.cs index db83ea87f1a5..7e1d184d30f7 100644 --- a/src/Storage/Storage.Management/Models/PSEncryptionScope.cs +++ b/src/Storage/Storage.Management/Models/PSEncryptionScope.cs @@ -22,7 +22,6 @@ using Track2 = Azure.ResourceManager.Storage; using Track2Models = Azure.ResourceManager.Storage.Models; - namespace Microsoft.Azure.Commands.Management.Storage.Models { // wrapper of EncryptionScope diff --git a/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs b/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs index fe6696eaf997..3711274cbc0e 100644 --- a/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs @@ -72,7 +72,6 @@ public Track2.ObjectReplicationPolicyData ParseObjectReplicationPolicy() { data.Rules.Add(rule.ParseObjectReplicationPolicyRule()); } - return data; } } @@ -143,7 +142,6 @@ public PSObjectReplicationPolicyFilter(Track2Models.ObjectReplicationPolicyFilte if (filter != null) { this.PrefixMatch = filter.PrefixMatch is null ? null : new List(filter.PrefixMatch).ToArray(); - if (filter.MinCreationTime != null) { if (filter.MinCreationTime.ToUpper()[filter.MinCreationTime.Length - 1] != 'Z') @@ -154,7 +152,6 @@ public PSObjectReplicationPolicyFilter(Track2Models.ObjectReplicationPolicyFilte } } } - public Track2Models.ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter() { diff --git a/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs b/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs index 3c3f5590291e..8d6771aae002 100644 --- a/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs @@ -82,7 +82,6 @@ public override void ExecuteCmdlet() } if (!string.IsNullOrEmpty(PolicyId)) { - Track2.ObjectReplicationPolicyResource policy = this.StorageClientTrack2 .GetObjectReplicationPolicyResource(this.ResourceGroupName, this.StorageAccountName, this.PolicyId) .Get(); @@ -102,7 +101,6 @@ public override void ExecuteCmdlet() { pspolicies.Add(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName)); } - WriteObject(pspolicies.ToArray(), true); } } diff --git a/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs b/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs index fc4dfe88506f..8009237a88d3 100644 --- a/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/StorageAccount/RemoveAzStorageObjectReplicationPolicy.cs @@ -104,7 +104,6 @@ public override void ExecuteCmdlet() // For AccountNameParameterSet, the ResourceGroupName and StorageAccountName can get from input directly break; } - this.StorageClientTrack2.GetObjectReplicationPolicyResource(this.ResourceGroupName, this.StorageAccountName, this.PolicyId) .Delete(global::Azure.WaitUntil.Completed); diff --git a/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs b/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs index 0aa2cdaaa038..676a707eaca5 100644 --- a/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs +++ b/src/Storage/Storage.Management/StorageAccount/SetAzStorageObjectReplicationPolicy.cs @@ -142,7 +142,6 @@ public override void ExecuteCmdlet() if (ShouldProcess(this.StorageAccountName, "Set Storage Account Object Replication Policy")) { Track2.ObjectReplicationPolicyData data = new Track2.ObjectReplicationPolicyData(); - switch (ParameterSetName) { case AccountObjectParameterSet: @@ -152,7 +151,6 @@ public override void ExecuteCmdlet() case PolicyObjectParameterSet: this.PolicyId = InputObject.PolicyId; data = InputObject.ParseObjectReplicationPolicy(); - break; default: // For AccountNameParameterSet, the ResourceGroupName and StorageAccountName can get from input directly diff --git a/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs b/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs index 53649402d101..139db6c0f2cb 100644 --- a/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs +++ b/src/Storage/Storage.Management/StorageAccount/UpdateAzureStorageEncryptionScope.cs @@ -189,7 +189,6 @@ public override void ExecuteCmdlet() } Track2.EncryptionScopeData data = new Track2.EncryptionScopeData(); - if (this.KeyvaultEncryption.IsPresent) { data.Source = Track2Models.EncryptionScopeSource.MicrosoftKeyVault;