Skip to content

Commit 52ef681

Browse files
authored
[Storage] Supported BaseBlob DaysAfterCreationGreaterThan in Management Policy (Azure#18561)
1 parent 5fe28a3 commit 52ef681

File tree

8 files changed

+325
-231
lines changed

8 files changed

+325
-231
lines changed

src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,7 +1057,7 @@ function Test-StorageAccountManagementPolicy
10571057
Assert-AreEqual $kind $sto.Kind;
10581058

10591059
# create Rule1
1060-
$action1 = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -daysAfterModificationGreaterThan 100
1060+
$action1 = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -DaysAfterCreationGreaterThan 100
10611061
$action1 = Add-AzStorageAccountManagementPolicyAction -InputObject $action1 -BaseBlobAction TierToArchive -daysAfterModificationGreaterThan 50 -DaysAfterLastTierChangeGreaterThan 40
10621062
$action1 = Add-AzStorageAccountManagementPolicyAction -InputObject $action1 -BaseBlobAction TierToCool -daysAfterModificationGreaterThan 30
10631063
$action1 = Add-AzStorageAccountManagementPolicyAction -InputObject $action1 -SnapshotAction Delete -daysAfterCreationGreaterThan 100
@@ -1084,7 +1084,7 @@ function Test-StorageAccountManagementPolicy
10841084
Assert-AreEqual 3 $policy.Rules.Count
10851085
Assert-AreEqual $rule1.Enabled $policy.Rules[0].Enabled
10861086
Assert-AreEqual $rule1.Name $policy.Rules[0].Name
1087-
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan
1087+
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.Delete.DaysAfterCreationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.Delete.DaysAfterCreationGreaterThan
10881088
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToArchive.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToArchive.DaysAfterModificationGreaterThan
10891089
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan
10901090
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan
@@ -1120,7 +1120,7 @@ function Test-StorageAccountManagementPolicy
11201120
Assert-AreEqual 3 $policy.Rules.Count
11211121
Assert-AreEqual $rule1.Enabled $policy.Rules[0].Enabled
11221122
Assert-AreEqual $rule1.Name $policy.Rules[0].Name
1123-
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan
1123+
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.Delete.DaysAfterCreationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.Delete.DaysAfterCreationGreaterThan
11241124
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToArchive.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToArchive.DaysAfterModificationGreaterThan
11251125
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan
11261126
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan
@@ -1160,7 +1160,7 @@ function Test-StorageAccountManagementPolicy
11601160
Assert-AreEqual 3 $policy.Rules.Count
11611161
Assert-AreEqual $rule1.Enabled $policy.Rules[0].Enabled
11621162
Assert-AreEqual $rule1.Name $policy.Rules[0].Name
1163-
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan
1163+
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.Delete.DaysAfterCreationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.Delete.DaysAfterCreationGreaterThan
11641164
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToArchive.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToArchive.DaysAfterModificationGreaterThan
11651165
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan
11661166
Assert-AreEqual $rule1.Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan $policy.Rules[0].Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan

src/Storage/Storage.Management.Test/SessionRecords/Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests/TestStorageAccountManagementPolicy.json

Lines changed: 192 additions & 192 deletions
Large diffs are not rendered by default.

src/Storage/Storage.Management/ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Supported BaseBlob DaysAfterCreationGreaterThan in Management Policy
22+
- `Add-AzStorageAccountManagementPolicyAction`
2123

2224
## Version 4.6.0
2325
* Supported generate Sas token for DataLakeGen2

src/Storage/Storage.Management/Models/PSDataPolicy.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ public class PSDateAfterModification
304304
{
305305
public int? DaysAfterModificationGreaterThan { get; set; }
306306
public int? DaysAfterLastAccessTimeGreaterThan { get; set; }
307+
public int? DaysAfterCreationGreaterThan { get; set; }
307308
public int? DaysAfterLastTierChangeGreaterThan { get; set; }
308309

309310
public PSDateAfterModification()
@@ -331,6 +332,14 @@ public PSDateAfterModification(int? daysAfterModificationGreaterThan, int? daysA
331332
this.DaysAfterLastTierChangeGreaterThan = DaysAfterLastTierChangeGreaterThan;
332333
}
333334

335+
public PSDateAfterModification(int? daysAfterModificationGreaterThan, int? daysAfterLastAccessTimeGreaterThan, int? DaysAfterLastTierChangeGreaterThan, int? DaysAfterCreationGreaterThan)
336+
{
337+
this.DaysAfterModificationGreaterThan = daysAfterModificationGreaterThan;
338+
this.DaysAfterLastAccessTimeGreaterThan = daysAfterLastAccessTimeGreaterThan;
339+
this.DaysAfterLastTierChangeGreaterThan = DaysAfterLastTierChangeGreaterThan;
340+
this.DaysAfterCreationGreaterThan = DaysAfterCreationGreaterThan;
341+
}
342+
334343
public PSDateAfterModification(DateAfterModification data)
335344
{
336345
if (data.DaysAfterModificationGreaterThan is null)
@@ -357,10 +366,21 @@ public PSDateAfterModification(DateAfterModification data)
357366
{
358367
this.DaysAfterLastTierChangeGreaterThan = Convert.ToInt32(data.DaysAfterLastTierChangeGreaterThan);
359368
}
369+
if (data.DaysAfterCreationGreaterThan is null)
370+
{
371+
this.DaysAfterCreationGreaterThan = null;
372+
}
373+
else
374+
{
375+
this.DaysAfterCreationGreaterThan = Convert.ToInt32(data.DaysAfterCreationGreaterThan);
376+
}
360377
}
361378
public DateAfterModification ParseDateAfterModification()
362379
{
363-
return new DateAfterModification(this.DaysAfterModificationGreaterThan, this.DaysAfterLastAccessTimeGreaterThan, this.DaysAfterLastTierChangeGreaterThan);
380+
return new DateAfterModification(this.DaysAfterModificationGreaterThan,
381+
this.DaysAfterLastAccessTimeGreaterThan,
382+
this.DaysAfterLastTierChangeGreaterThan,
383+
this.DaysAfterCreationGreaterThan);
364384
}
365385
}
366386

src/Storage/Storage.Management/Storage.Management.format.ps1xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@
263263
<ScriptBlock>$_.BaseBlob.TierToCool.DaysAfterLastAccessTimeGreaterThan</ScriptBlock>
264264
<Label>BaseBlob.TierToCool.DaysAfterLastAccessTimeGreaterThan</Label>
265265
</ListItem>
266+
<ListItem>
267+
<ScriptBlock>$_.BaseBlob.TierToCool.DaysAfterCreationGreaterThan</ScriptBlock>
268+
<Label>BaseBlob.TierToCool.DaysAfterCreationGreaterThan</Label>
269+
</ListItem>
266270
<ListItem>
267271
<ScriptBlock>$_.BaseBlob.EnableAutoTierToHotFromCool</ScriptBlock>
268272
<Label>BaseBlob.EnableAutoTierToHotFromCool</Label>
@@ -275,6 +279,10 @@
275279
<ScriptBlock>$_.BaseBlob.TierToArchive.DaysAfterLastAccessTimeGreaterThan</ScriptBlock>
276280
<Label>BaseBlob.TierToArchive.DaysAfterLastAccessTimeGreaterThan</Label>
277281
</ListItem>
282+
<ListItem>
283+
<ScriptBlock>$_.BaseBlob.TierToArchive.DaysAfterCreationGreaterThan</ScriptBlock>
284+
<Label>BaseBlob.TierToArchive.DaysAfterCreationGreaterThan</Label>
285+
</ListItem>
278286
<ListItem>
279287
<ScriptBlock>$_.BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan</ScriptBlock>
280288
<Label>BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan</Label>
@@ -287,6 +295,10 @@
287295
<ScriptBlock>$_.BaseBlob.Delete.DaysAfterLastAccessTimeGreaterThan</ScriptBlock>
288296
<Label>BaseBlob.Delete.DaysAfterLastAccessTimeGreaterThan</Label>
289297
</ListItem>
298+
<ListItem>
299+
<ScriptBlock>$_.BaseBlob.Delete.DaysAfterCreationGreaterThan</ScriptBlock>
300+
<Label>BaseBlob.Delete.DaysAfterCreationGreaterThan</Label>
301+
</ListItem>
290302
<ListItem>
291303
<ScriptBlock>$_.Snapshot.TierToCool.DaysAfterCreationGreaterThan</ScriptBlock>
292304
<Label>Snapshot.TierToCool.DaysAfterCreationGreaterThan</Label>

src/Storage/Storage.Management/StorageAccount/AddAzureStorageAccountManagementPolicyAction.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class AddAzureStorageAccountManagementPolicyActionCommand : StorageAccoun
2727
{
2828
protected const string BaseBlobParameterSet = "BaseBlob";
2929
protected const string BaseBlobLastAccessTimeParameterSet = "BaseBlobLastAccessTime";
30+
protected const string BaseBlobCreationTimeParameterSet = "BaseBlobCreationTime";
3031
protected const string SnapshotParameterSet = "Snapshot";
3132
protected const string BlobVersionParameterSet = "BlobVersion";
3233
[Parameter(Mandatory = true,
@@ -35,6 +36,9 @@ public class AddAzureStorageAccountManagementPolicyActionCommand : StorageAccoun
3536
[Parameter(Mandatory = true,
3637
HelpMessage = "The management policy action for baseblob.",
3738
ParameterSetName = BaseBlobLastAccessTimeParameterSet)]
39+
[Parameter(Mandatory = true,
40+
HelpMessage = "The management policy action for baseblob.",
41+
ParameterSetName = BaseBlobCreationTimeParameterSet)]
3842
[ValidateSet(ManagementPolicyAction.Delete,
3943
ManagementPolicyAction.TierToArchive,
4044
ManagementPolicyAction.TierToCool,
@@ -65,8 +69,22 @@ public class AddAzureStorageAccountManagementPolicyActionCommand : StorageAccoun
6569
[Parameter(Mandatory = true,
6670
HelpMessage = "Integer value indicating the age in days after creation.",
6771
ParameterSetName = BlobVersionParameterSet)]
72+
[Parameter(Mandatory = true,
73+
HelpMessage = "Integer value indicating the age in days after creation.",
74+
ParameterSetName = BaseBlobCreationTimeParameterSet)]
6875
[ValidateNotNullOrEmpty]
69-
public int DaysAfterCreationGreaterThan { get; set; }
76+
public int DaysAfterCreationGreaterThan
77+
{
78+
get
79+
{
80+
return daysAfterCreationGreaterThan is null ? 0 : daysAfterCreationGreaterThan.Value;
81+
}
82+
set
83+
{
84+
daysAfterCreationGreaterThan = value;
85+
}
86+
}
87+
public int? daysAfterCreationGreaterThan;
7088

7189
[Parameter(Mandatory = true,
7290
HelpMessage = "Integer value indicating the age in days after last modification.",
@@ -149,6 +167,7 @@ public override void ExecuteCmdlet()
149167
{
150168
case BaseBlobParameterSet:
151169
case BaseBlobLastAccessTimeParameterSet:
170+
case BaseBlobCreationTimeParameterSet:
152171
if (action.BaseBlob is null)
153172
{
154173
action.BaseBlob = new PSManagementPolicyBaseBlob();
@@ -172,17 +191,20 @@ public override void ExecuteCmdlet()
172191
case ManagementPolicyAction.Delete:
173192
action.BaseBlob.Delete = new PSDateAfterModification(this.daysAfterModificationGreaterThan,
174193
this.daysAfterLastAccessTimeGreaterThan,
175-
this.daysAfterLastTierChangeGreaterThan);
194+
this.daysAfterLastTierChangeGreaterThan,
195+
this.daysAfterCreationGreaterThan);
176196
break;
177197
case ManagementPolicyAction.TierToCool:
178198
action.BaseBlob.TierToCool = new PSDateAfterModification(this.daysAfterModificationGreaterThan,
179199
this.daysAfterLastAccessTimeGreaterThan,
180-
this.daysAfterLastTierChangeGreaterThan);
200+
this.daysAfterLastTierChangeGreaterThan,
201+
this.daysAfterCreationGreaterThan);
181202
break;
182203
case ManagementPolicyAction.TierToArchive:
183204
action.BaseBlob.TierToArchive = new PSDateAfterModification(this.daysAfterModificationGreaterThan,
184205
this.daysAfterLastAccessTimeGreaterThan,
185-
this.daysAfterLastTierChangeGreaterThan);
206+
this.daysAfterLastTierChangeGreaterThan,
207+
this.daysAfterCreationGreaterThan);
186208
break;
187209
default:
188210
throw new PSArgumentException(string.Format(CultureInfo.InvariantCulture, "Invalid BaseBlobAction: {0}", this.BaseBlobAction));

src/Storage/Storage.Management/help/Add-AzStorageAccountManagementPolicyAction.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,23 @@ The **Add-AzStorageAccountManagementPolicyAction** cmdlet adds an action to the
5353

5454
### Example 1: Creates a ManagementPolicy Action Group object with 4 actions, then add it to a management policy rule and set to a Storage account
5555
```
56-
PS C:\>$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -daysAfterModificationGreaterThan 100
56+
PS C:\>$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -DaysAfterCreationGreaterThan 100
5757
PS C:\>$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction TierToArchive -daysAfterModificationGreaterThan 50 -DaysAfterLastTierChangeGreaterThan 40 -InputObject $action
5858
PS C:\>$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction TierToCool -DaysAfterLastAccessTimeGreaterThan 30 -EnableAutoTierToHotFromCool -InputObject $action
5959
PS C:\>$action = Add-AzStorageAccountManagementPolicyAction -SnapshotAction Delete -daysAfterCreationGreaterThan 100 -InputObject $action
6060
PS C:\>$action
6161
6262
BaseBlob.TierToCool.DaysAfterModificationGreaterThan :
6363
BaseBlob.TierToCool.DaysAfterLastAccessTimeGreaterThan : 30
64+
BaseBlob.TierToCool.DaysAfterCreationGreaterThan :
6465
BaseBlob.EnableAutoTierToHotFromCool : True
6566
BaseBlob.TierToArchive.DaysAfterModificationGreaterThan : 50
6667
BaseBlob.TierToArchive.DaysAfterLastAccessTimeGreaterThan :
68+
BaseBlob.TierToArchive.DaysAfterCreationGreaterThan :
6769
BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan : 40
68-
BaseBlob.Delete.DaysAfterModificationGreaterThan : 100
70+
BaseBlob.Delete.DaysAfterModificationGreaterThan :
6971
BaseBlob.Delete.DaysAfterLastAccessTimeGreaterThan :
72+
BaseBlob.Delete.DaysAfterCreationGreaterThan : 100
7073
Snapshot.TierToCool.DaysAfterCreationGreaterThan :
7174
Snapshot.TierToArchive.DaysAfterCreationGreaterThan :
7275
Snapshot.TierToArchive.DaysAfterLastTierChangeGreaterThan :
@@ -95,10 +98,15 @@ PS C:\> $action
9598
9699
BaseBlob.TierToCool.DaysAfterModificationGreaterThan :
97100
BaseBlob.TierToCool.DaysAfterLastAccessTimeGreaterThan :
101+
BaseBlob.TierToCool.DaysAfterCreationGreaterThan :
102+
BaseBlob.EnableAutoTierToHotFromCool :
98103
BaseBlob.TierToArchive.DaysAfterModificationGreaterThan :
99104
BaseBlob.TierToArchive.DaysAfterLastAccessTimeGreaterThan :
105+
BaseBlob.TierToArchive.DaysAfterCreationGreaterThan :
106+
BaseBlob.TierToArchive.DaysAfterLastTierChangeGreaterThan :
100107
BaseBlob.Delete.DaysAfterModificationGreaterThan :
101108
BaseBlob.Delete.DaysAfterLastAccessTimeGreaterThan :
109+
BaseBlob.Delete.DaysAfterCreationGreaterThan :
102110
Snapshot.TierToCool.DaysAfterCreationGreaterThan : 60
103111
Snapshot.TierToArchive.DaysAfterCreationGreaterThan : 50
104112
Snapshot.TierToArchive.DaysAfterLastTierChangeGreaterThan :

0 commit comments

Comments
 (0)