Skip to content

Commit dc22eb7

Browse files
authored
Merge pull request #19 from yifanz0/yifan/track2.1
Migrate EncryptionScope and ObjectReplication cmdlets to Track2 SDK
2 parents ff62adb + f9362d5 commit dc22eb7

10 files changed

+191
-165
lines changed

src/Storage/Storage.Management/File/StorageFileBaseCmdlet.cs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
using System;
2121
using System.Collections;
2222
using System.Collections.Generic;
23-
using StorageModels = Microsoft.Azure.Management.Storage.Models;
2423

2524
namespace Microsoft.Azure.Commands.Management.Storage
2625
{
@@ -85,6 +84,33 @@ protected struct ShareCreateExpand
8584
internal const string Snapshots = "snapshots";
8685
}
8786

87+
protected struct RootSquashType
88+
{
89+
internal const string NoRootSquash = "NoRootSquash";
90+
internal const string RootSquash = "RootSquash";
91+
internal const string AllSquash = "AllSquash";
92+
}
93+
94+
protected struct ShareAccessTier
95+
{
96+
internal const string TransactionOptimized = "TransactionOptimized";
97+
internal const string Hot = "Hot";
98+
internal const string Cool = "Cool";
99+
internal const string Premium = "Premium";
100+
}
101+
102+
protected struct EncryptionScopeState
103+
{
104+
internal const string Enabled = "Enabled";
105+
internal const string Disabled = "Disabled";
106+
}
107+
108+
protected struct EnabledProtocols
109+
{
110+
internal const string SMB = "SMB";
111+
internal const string NFS = "NFS";
112+
}
113+
88114
public string ConnectStringArray(string[] stringArray, string seperator = ";")
89115
{
90116
if (stringArray == null)
@@ -123,6 +149,19 @@ public IStorageManagementClient StorageClient
123149
set { storageClientWrapper = new StorageManagementClientWrapper(value); }
124150
}
125151

152+
private Track2StorageManagementClient _track2StorageManagementClient;
153+
public Track2StorageManagementClient StorageClientTrack2
154+
{
155+
get
156+
{
157+
return _track2StorageManagementClient ?? (_track2StorageManagementClient = new Track2StorageManagementClient(
158+
Microsoft.Azure.Commands.Common.Authentication.AzureSession.Instance.ClientFactory,
159+
DefaultContext));
160+
}
161+
162+
set { _track2StorageManagementClient = value; }
163+
}
164+
126165
public string SubscriptionId
127166
{
128167
get

src/Storage/Storage.Management/Models/PSEncryptionScope.cs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,33 @@
1313
// ----------------------------------------------------------------------------------
1414

1515
using Microsoft.Azure.Commands.Common.Authentication.Abstractions;
16-
using Microsoft.Azure.Management.Storage;
17-
using Microsoft.Azure.Management.Storage.Models;
1816
using Microsoft.WindowsAzure.Commands.Common.Attributes;
1917
using Microsoft.WindowsAzure.Commands.Common.Storage;
2018
using Microsoft.WindowsAzure.Commands.Storage.Adapters;
2119
using Microsoft.Azure.Storage;
2220
using System;
2321
using System.Collections.Generic;
24-
using StorageModels = Microsoft.Azure.Management.Storage.Models;
22+
using Track2 = Azure.ResourceManager.Storage;
23+
using Track2Models = Azure.ResourceManager.Storage.Models;
2524

2625
namespace Microsoft.Azure.Commands.Management.Storage.Models
2726
{
2827
// wrapper of EncryptionScope
2928
public class PSEncryptionScope
3029
{
31-
public PSEncryptionScope(StorageModels.EncryptionScope scope)
30+
public PSEncryptionScope(Track2.EncryptionScopeResource scope)
3231
{
3332
this.ResourceGroupName = ParseResourceGroupFromId(scope.Id);
3433
this.StorageAccountName = ParseStorageAccountNameFromId(scope.Id);
3534
this.Id = scope.Id;
36-
this.Name = scope.Name;
37-
this.Type = scope.Type;
38-
this.LastModifiedTime = scope.LastModifiedTime;
39-
this.CreationTime = scope.CreationTime;
40-
this.Source = scope.Source;
41-
this.State = scope.State;
42-
this.KeyVaultProperties = scope.KeyVaultProperties is null ? null : new PSEncryptionScopeKeyVaultProperties(scope.KeyVaultProperties);
43-
this.RequireInfrastructureEncryption = scope.RequireInfrastructureEncryption;
35+
this.Name = scope.Data.Name;
36+
this.Type = scope.Data.ResourceType;
37+
this.LastModifiedTime = scope.Data.LastModifiedOn;
38+
this.CreationTime = scope.Data.CreationOn;
39+
this.Source = scope.Data.Source.ToString();
40+
this.State = scope.Data.State.ToString();
41+
this.KeyVaultProperties = scope.Data.KeyVaultProperties is null ? null : new PSEncryptionScopeKeyVaultProperties(scope.Data.KeyVaultProperties);
42+
this.RequireInfrastructureEncryption = scope.Data.RequireInfrastructureEncryption;
4443
}
4544

4645
[Ps1Xml(Label = "ResourceGroupName", Target = ViewControl.List, Position = 0)]
@@ -65,9 +64,9 @@ public PSEncryptionScope(StorageModels.EncryptionScope scope)
6564
public bool? RequireInfrastructureEncryption { get; set; }
6665

6766
[Ps1Xml(Label = "LastModifiedTime", Target = ViewControl.List, Position = 4)]
68-
public DateTime? LastModifiedTime { get; set; }
67+
public DateTimeOffset? LastModifiedTime { get; set; }
6968

70-
public DateTime? CreationTime { get; set; }
69+
public DateTimeOffset? CreationTime { get; set; }
7170

7271
public static string ParseResourceGroupFromId(string idFromServer)
7372
{
@@ -98,11 +97,14 @@ public static string ParseStorageAccountNameFromId(string idFromServer)
9897
//wrapper of EncryptionScopeKeyVaultProperties
9998
public class PSEncryptionScopeKeyVaultProperties
10099
{
101-
public PSEncryptionScopeKeyVaultProperties(StorageModels.EncryptionScopeKeyVaultProperties keyVaultProperties)
100+
public PSEncryptionScopeKeyVaultProperties(Track2Models.EncryptionScopeKeyVaultProperties keyVaultProperties)
102101
{
103102
if (keyVaultProperties != null)
104103
{
105-
this.keyUri = keyVaultProperties.KeyUri;
104+
if (keyVaultProperties.KeyUri != null)
105+
{
106+
this.keyUri = keyVaultProperties.KeyUri.OriginalString;
107+
}
106108
}
107109
}
108110

src/Storage/Storage.Management/Models/PSObjectReplicationPolicy.cs

Lines changed: 44 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15-
using Microsoft.Azure.Management.Storage.Models;
1615
using Microsoft.WindowsAzure.Commands.Common.Attributes;
1716
using System;
1817
using System.Collections.Generic;
18+
using System.Runtime.Serialization;
19+
using Track2 = Azure.ResourceManager.Storage;
20+
using Track2Models = Azure.ResourceManager.Storage.Models;
1921

2022
namespace Microsoft.Azure.Commands.Management.Storage.Models
2123
{
@@ -35,7 +37,7 @@ public class PSObjectReplicationPolicy
3537
[Ps1Xml(Label = "PolicyId", Target = ViewControl.Table, Position = 2)]
3638
public string PolicyId { get; set; }
3739
[Ps1Xml(Label = "EnabledTime", Target = ViewControl.Table, Position = 3)]
38-
public DateTime? EnabledTime { get; }
40+
public DateTimeOffset? EnabledTime { get; }
3941
[Ps1Xml(Label = "SourceAccount", Target = ViewControl.Table, Position = 4)]
4042
public string SourceAccount { get; set; }
4143
[Ps1Xml(Label = "DestinationAccount", Target = ViewControl.Table, Position = 5)]
@@ -46,43 +48,31 @@ public class PSObjectReplicationPolicy
4648
public PSObjectReplicationPolicy()
4749
{ }
4850

49-
public PSObjectReplicationPolicy(ObjectReplicationPolicy policy, string ResourceGroupName, string StorageAccountName)
51+
public PSObjectReplicationPolicy(Track2.ObjectReplicationPolicyResource policy, string ResourceGroupName, string StorageAccountName)
5052
{
5153
this.ResourceGroupName = ResourceGroupName;
5254
this.StorageAccountName = StorageAccountName;
5355
this.ResourceId = policy.Id;
54-
this.Name = policy.Name;
55-
this.Type = policy.Type;
56-
this.PolicyId = policy.PolicyId;
57-
this.EnabledTime = policy.EnabledTime;
58-
this.SourceAccount = policy.SourceAccount;
59-
this.DestinationAccount = policy.DestinationAccount;
60-
this.Rules = PSObjectReplicationPolicyRule.GetPSObjectReplicationPolicyRules(policy.Rules);
56+
this.Name = policy.Data.Name;
57+
this.Type = policy.Data.ResourceType;
58+
this.PolicyId = policy.Data.PolicyId;
59+
this.EnabledTime = policy.Data.EnabledOn;
60+
this.SourceAccount = policy.Data.SourceAccount;
61+
this.DestinationAccount = policy.Data.DestinationAccount;
62+
this.Rules = PSObjectReplicationPolicyRule.GetPSObjectReplicationPolicyRules(policy.Data.Rules);
6163
}
6264

63-
public ObjectReplicationPolicy ParseObjectReplicationPolicy()
65+
public Track2.ObjectReplicationPolicyData ParseObjectReplicationPolicy()
6466
{
65-
ObjectReplicationPolicy policy = new ObjectReplicationPolicy()
66-
{
67-
SourceAccount = this.SourceAccount,
68-
DestinationAccount = this.DestinationAccount,
69-
Rules = PSObjectReplicationPolicyRule.ParseObjectReplicationPolicyRules(this.Rules)
70-
};
71-
return policy;
72-
}
67+
Track2.ObjectReplicationPolicyData data = new Track2.ObjectReplicationPolicyData();
68+
data.SourceAccount = this.SourceAccount;
69+
data.DestinationAccount = this.DestinationAccount;
7370

74-
public static PSObjectReplicationPolicy[] GetPSObjectReplicationPolicies(IEnumerable<ObjectReplicationPolicy> policies, string ResourceGroupName, string StorageAccountName)
75-
{
76-
if (policies == null)
77-
{
78-
return null;
79-
}
80-
List<PSObjectReplicationPolicy> pspolicies = new List<PSObjectReplicationPolicy>();
81-
foreach (ObjectReplicationPolicy policy in policies)
71+
foreach(PSObjectReplicationPolicyRule rule in this.Rules)
8272
{
83-
pspolicies.Add(new PSObjectReplicationPolicy(policy, ResourceGroupName, StorageAccountName));
73+
data.Rules.Add(rule.ParseObjectReplicationPolicyRule());
8474
}
85-
return pspolicies.ToArray();
75+
return data;
8676
}
8777
}
8878

@@ -104,51 +94,35 @@ public PSObjectReplicationPolicyRule()
10494
{
10595
}
10696

107-
public PSObjectReplicationPolicyRule(ObjectReplicationPolicyRule rule)
97+
public PSObjectReplicationPolicyRule(Track2Models.ObjectReplicationPolicyRule rule)
10898
{
10999
this.RuleId = rule.RuleId;
110100
this.SourceContainer = rule.SourceContainer;
111101
this.DestinationContainer = rule.DestinationContainer;
112102
this.Filters = rule.Filters is null ? null : new PSObjectReplicationPolicyFilter(rule.Filters);
113103
}
114104

115-
public ObjectReplicationPolicyRule ParseObjectReplicationPolicyRule()
105+
public Track2Models.ObjectReplicationPolicyRule ParseObjectReplicationPolicyRule()
116106
{
117-
ObjectReplicationPolicyRule rule = new ObjectReplicationPolicyRule();
107+
Track2Models.ObjectReplicationPolicyRule rule = new Track2Models.ObjectReplicationPolicyRule(this.SourceContainer, this.DestinationContainer);
118108
rule.RuleId = this.RuleId;
119-
rule.SourceContainer = this.SourceContainer;
120-
rule.DestinationContainer = this.DestinationContainer;
121-
rule.Filters = this.Filters is null ? null : this.Filters.ParseObjectReplicationPolicyFilter();
109+
rule.Filters = this.Filters?.ParseObjectReplicationPolicyFilter();
122110
return rule;
123111
}
124112

125-
public static PSObjectReplicationPolicyRule[] GetPSObjectReplicationPolicyRules(IList<ObjectReplicationPolicyRule> rules)
113+
public static PSObjectReplicationPolicyRule[] GetPSObjectReplicationPolicyRules(IList<Track2Models.ObjectReplicationPolicyRule> rules)
126114
{
127115
if (rules == null)
128116
{
129117
return null;
130118
}
131119
List<PSObjectReplicationPolicyRule> psrules = new List<PSObjectReplicationPolicyRule>();
132-
foreach (ObjectReplicationPolicyRule rule in rules)
120+
foreach (Track2Models.ObjectReplicationPolicyRule rule in rules)
133121
{
134122
psrules.Add(new PSObjectReplicationPolicyRule(rule));
135123
}
136124
return psrules.ToArray();
137125
}
138-
139-
public static List<ObjectReplicationPolicyRule> ParseObjectReplicationPolicyRules(PSObjectReplicationPolicyRule[] psrules)
140-
{
141-
if (psrules == null)
142-
{
143-
return null;
144-
}
145-
List<ObjectReplicationPolicyRule> rules = new List<ObjectReplicationPolicyRule>();
146-
foreach (PSObjectReplicationPolicyRule psrule in psrules)
147-
{
148-
rules.Add(psrule.ParseObjectReplicationPolicyRule());
149-
}
150-
return rules;
151-
}
152126
}
153127

154128
/// <summary>
@@ -157,39 +131,44 @@ public static List<ObjectReplicationPolicyRule> ParseObjectReplicationPolicyRule
157131
public class PSObjectReplicationPolicyFilter
158132
{
159133
public string[] PrefixMatch { get; set; }
160-
public DateTime? MinCreationTime;
134+
public DateTimeOffset? MinCreationTime;
161135

162136
public PSObjectReplicationPolicyFilter()
163137
{
164138
}
165139

166-
public PSObjectReplicationPolicyFilter(ObjectReplicationPolicyFilter filter)
140+
public PSObjectReplicationPolicyFilter(Track2Models.ObjectReplicationPolicyFilter filter)
167141
{
168142
if (filter != null)
169143
{
170144
this.PrefixMatch = filter.PrefixMatch is null ? null : new List<string>(filter.PrefixMatch).ToArray();
171-
if (string.IsNullOrEmpty(filter.MinCreationTime))
172-
{
173-
this.MinCreationTime = null;
174-
}
175-
else
145+
if (filter.MinCreationTime != null)
176146
{
177147
if (filter.MinCreationTime.ToUpper()[filter.MinCreationTime.Length - 1] != 'Z')
178148
{
179-
filter.MinCreationTime = filter.MinCreationTime + "Z";
149+
filter.MinCreationTime += "Z";
180150
}
181151
this.MinCreationTime = Convert.ToDateTime(filter.MinCreationTime);
182152
}
183153
}
184154
}
185-
public ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter()
155+
156+
public Track2Models.ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter()
186157
{
187-
return new ObjectReplicationPolicyFilter()
158+
Track2Models.ObjectReplicationPolicyFilter filter = new Track2Models.ObjectReplicationPolicyFilter();
159+
160+
if (this.PrefixMatch != null)
188161
{
189-
PrefixMatch = this.PrefixMatch is null ? null : new List<string>(this.PrefixMatch),
190-
//must be in format: 2020-02-19T16:05:00Z
191-
MinCreationTime = this.MinCreationTime is null ? null : this.MinCreationTime.Value.ToUniversalTime().ToString("s") + "Z"
192-
};
162+
foreach (string itm in this.PrefixMatch)
163+
{
164+
filter.PrefixMatch.Add(itm);
165+
}
166+
}
167+
if (this.MinCreationTime != null)
168+
{
169+
filter.MinCreationTime = this.MinCreationTime.Value.ToUniversalTime().ToString("s") + "Z";
170+
}
171+
return filter;
193172
}
194173
}
195174
}

src/Storage/Storage.Management/StorageAccount/GetAzStorageObjectReplicationPolicy.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using Azure;
1516
using Microsoft.Azure.Commands.Management.Storage.Models;
1617
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
17-
using Microsoft.Azure.Management.Storage;
18-
using Microsoft.Azure.Management.Storage.Models;
1918
using System.Collections.Generic;
2019
using System.Management.Automation;
20+
using Track2 = Azure.ResourceManager.Storage;
2121

2222
namespace Microsoft.Azure.Commands.Management.Storage
2323
{
@@ -82,19 +82,26 @@ public override void ExecuteCmdlet()
8282
}
8383
if (!string.IsNullOrEmpty(PolicyId))
8484
{
85-
ObjectReplicationPolicy policy = this.StorageClient.ObjectReplicationPolicies.Get(
86-
this.ResourceGroupName,
87-
this.StorageAccountName,
88-
PolicyId);
85+
Track2.ObjectReplicationPolicyResource policy = this.StorageClientTrack2
86+
.GetObjectReplicationPolicyResource(this.ResourceGroupName, this.StorageAccountName, this.PolicyId)
87+
.Get();
8988

9089
WriteObject(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName));
9190
}
9291
else
9392
{
94-
IEnumerable<ObjectReplicationPolicy> policies = this.StorageClient.ObjectReplicationPolicies.List(
95-
this.ResourceGroupName,
96-
this.StorageAccountName);
97-
WriteObject(PSObjectReplicationPolicy.GetPSObjectReplicationPolicies(policies, this.ResourceGroupName, this.StorageAccountName), true);
93+
Pageable<Track2.ObjectReplicationPolicyResource> policies = this.StorageClientTrack2
94+
.GetStorageAccount(this.ResourceGroupName, this.StorageAccountName)
95+
.GetObjectReplicationPolicies()
96+
.GetAll();
97+
98+
List<PSObjectReplicationPolicy> pspolicies = new List<PSObjectReplicationPolicy>();
99+
100+
foreach (Track2.ObjectReplicationPolicyResource policy in policies)
101+
{
102+
pspolicies.Add(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName));
103+
}
104+
WriteObject(pspolicies.ToArray(), true);
98105
}
99106
}
100107
}

0 commit comments

Comments
 (0)