Skip to content

Commit efb9c5c

Browse files
committed
encryptionscope and object replication
1 parent fb94030 commit efb9c5c

10 files changed

+201
-164
lines changed

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
using Microsoft.Azure.Commands.ResourceManager.Common;
1717
using Microsoft.Azure.Management.Storage;
1818
using Microsoft.Azure.Management.Storage.Models;
19+
using Microsoft.Azure.Management.WebSites.Version2016_09_01.Models;
1920
using Microsoft.WindowsAzure.Commands.Utilities.Common;
2021
using System;
2122
using System.Collections;
2223
using System.Collections.Generic;
23-
using StorageModels = Microsoft.Azure.Management.Storage.Models;
2424

2525
namespace Microsoft.Azure.Commands.Management.Storage
2626
{
@@ -85,6 +85,33 @@ protected struct ShareCreateExpand
8585
internal const string Snapshots = "snapshots";
8686
}
8787

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

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

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

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,34 @@
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;
24+
2525

2626
namespace Microsoft.Azure.Commands.Management.Storage.Models
2727
{
2828
// wrapper of EncryptionScope
2929
public class PSEncryptionScope
3030
{
31-
public PSEncryptionScope(StorageModels.EncryptionScope scope)
31+
public PSEncryptionScope(Track2.EncryptionScopeResource scope)
3232
{
3333
this.ResourceGroupName = ParseResourceGroupFromId(scope.Id);
3434
this.StorageAccountName = ParseStorageAccountNameFromId(scope.Id);
3535
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;
36+
this.Name = scope.Data.Name;
37+
this.Type = scope.Data.ResourceType;
38+
this.LastModifiedTime = scope.Data.LastModifiedOn;
39+
this.CreationTime = scope.Data.CreationOn;
40+
this.Source = scope.Data.Source.ToString();
41+
this.State = scope.Data.State.ToString();
42+
this.KeyVaultProperties = scope.Data.KeyVaultProperties is null ? null : new PSEncryptionScopeKeyVaultProperties(scope.Data.KeyVaultProperties);
43+
this.RequireInfrastructureEncryption = scope.Data.RequireInfrastructureEncryption;
4444
}
4545

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

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

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

7272
public static string ParseResourceGroupFromId(string idFromServer)
7373
{
@@ -98,11 +98,14 @@ public static string ParseStorageAccountNameFromId(string idFromServer)
9898
//wrapper of EncryptionScopeKeyVaultProperties
9999
public class PSEncryptionScopeKeyVaultProperties
100100
{
101-
public PSEncryptionScopeKeyVaultProperties(StorageModels.EncryptionScopeKeyVaultProperties keyVaultProperties)
101+
public PSEncryptionScopeKeyVaultProperties(Track2Models.EncryptionScopeKeyVaultProperties keyVaultProperties)
102102
{
103103
if (keyVaultProperties != null)
104104
{
105-
this.keyUri = keyVaultProperties.KeyUri;
105+
if (keyVaultProperties.KeyUri != null)
106+
{
107+
this.keyUri = keyVaultProperties.KeyUri.OriginalString;
108+
}
106109
}
107110
}
108111

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

Lines changed: 47 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,32 @@ 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+
76+
return data;
8677
}
8778
}
8879

@@ -104,51 +95,35 @@ public PSObjectReplicationPolicyRule()
10495
{
10596
}
10697

107-
public PSObjectReplicationPolicyRule(ObjectReplicationPolicyRule rule)
98+
public PSObjectReplicationPolicyRule(Track2Models.ObjectReplicationPolicyRule rule)
10899
{
109100
this.RuleId = rule.RuleId;
110101
this.SourceContainer = rule.SourceContainer;
111102
this.DestinationContainer = rule.DestinationContainer;
112103
this.Filters = rule.Filters is null ? null : new PSObjectReplicationPolicyFilter(rule.Filters);
113104
}
114105

115-
public ObjectReplicationPolicyRule ParseObjectReplicationPolicyRule()
106+
public Track2Models.ObjectReplicationPolicyRule ParseObjectReplicationPolicyRule()
116107
{
117-
ObjectReplicationPolicyRule rule = new ObjectReplicationPolicyRule();
108+
Track2Models.ObjectReplicationPolicyRule rule = new Track2Models.ObjectReplicationPolicyRule(this.SourceContainer, this.DestinationContainer);
118109
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();
110+
rule.Filters = this.Filters?.ParseObjectReplicationPolicyFilter();
122111
return rule;
123112
}
124113

125-
public static PSObjectReplicationPolicyRule[] GetPSObjectReplicationPolicyRules(IList<ObjectReplicationPolicyRule> rules)
114+
public static PSObjectReplicationPolicyRule[] GetPSObjectReplicationPolicyRules(IList<Track2Models.ObjectReplicationPolicyRule> rules)
126115
{
127116
if (rules == null)
128117
{
129118
return null;
130119
}
131120
List<PSObjectReplicationPolicyRule> psrules = new List<PSObjectReplicationPolicyRule>();
132-
foreach (ObjectReplicationPolicyRule rule in rules)
121+
foreach (Track2Models.ObjectReplicationPolicyRule rule in rules)
133122
{
134123
psrules.Add(new PSObjectReplicationPolicyRule(rule));
135124
}
136125
return psrules.ToArray();
137126
}
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-
}
152127
}
153128

154129
/// <summary>
@@ -157,39 +132,46 @@ public static List<ObjectReplicationPolicyRule> ParseObjectReplicationPolicyRule
157132
public class PSObjectReplicationPolicyFilter
158133
{
159134
public string[] PrefixMatch { get; set; }
160-
public DateTime? MinCreationTime;
135+
public DateTimeOffset? MinCreationTime;
161136

162137
public PSObjectReplicationPolicyFilter()
163138
{
164139
}
165140

166-
public PSObjectReplicationPolicyFilter(ObjectReplicationPolicyFilter filter)
141+
public PSObjectReplicationPolicyFilter(Track2Models.ObjectReplicationPolicyFilter filter)
167142
{
168143
if (filter != null)
169144
{
170145
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
146+
147+
if (filter.MinCreationTime != null)
176148
{
177149
if (filter.MinCreationTime.ToUpper()[filter.MinCreationTime.Length - 1] != 'Z')
178150
{
179-
filter.MinCreationTime = filter.MinCreationTime + "Z";
151+
filter.MinCreationTime += "Z";
180152
}
181153
this.MinCreationTime = Convert.ToDateTime(filter.MinCreationTime);
182154
}
183155
}
184156
}
185-
public ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter()
157+
158+
159+
public Track2Models.ObjectReplicationPolicyFilter ParseObjectReplicationPolicyFilter()
186160
{
187-
return new ObjectReplicationPolicyFilter()
161+
Track2Models.ObjectReplicationPolicyFilter filter = new Track2Models.ObjectReplicationPolicyFilter();
162+
163+
if (this.PrefixMatch != null)
164+
{
165+
foreach (string itm in this.PrefixMatch)
166+
{
167+
filter.PrefixMatch.Add(itm);
168+
}
169+
}
170+
if (this.MinCreationTime != null)
188171
{
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-
};
172+
filter.MinCreationTime = this.MinCreationTime.Value.ToUniversalTime().ToString("s") + "Z";
173+
}
174+
return filter;
193175
}
194176
}
195177
}

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

Lines changed: 19 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,28 @@ 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+
86+
Track2.ObjectReplicationPolicyResource policy = this.StorageClientTrack2
87+
.GetObjectReplicationPolicyResource(this.ResourceGroupName, this.StorageAccountName, this.PolicyId)
88+
.Get();
8989

9090
WriteObject(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName));
9191
}
9292
else
9393
{
94-
IEnumerable<ObjectReplicationPolicy> policies = this.StorageClient.ObjectReplicationPolicies.List(
95-
this.ResourceGroupName,
96-
this.StorageAccountName);
97-
WriteObject(PSObjectReplicationPolicy.GetPSObjectReplicationPolicies(policies, this.ResourceGroupName, this.StorageAccountName), true);
94+
Pageable<Track2.ObjectReplicationPolicyResource> policies = this.StorageClientTrack2
95+
.GetStorageAccount(this.ResourceGroupName, this.StorageAccountName)
96+
.GetObjectReplicationPolicies()
97+
.GetAll();
98+
99+
List<PSObjectReplicationPolicy> pspolicies = new List<PSObjectReplicationPolicy>();
100+
101+
foreach (Track2.ObjectReplicationPolicyResource policy in policies)
102+
{
103+
pspolicies.Add(new PSObjectReplicationPolicy(policy, this.ResourceGroupName, this.StorageAccountName));
104+
}
105+
106+
WriteObject(pspolicies.ToArray(), true);
98107
}
99108
}
100109
}

0 commit comments

Comments
 (0)