Skip to content

Commit 4be746e

Browse files
authored
Merge pull request #6188 from Azure/task-adls-fix-setaclentry
Fix null parameter for recurse in set-azurermstoreitemaclentry
2 parents 17b6a03 + 6d12377 commit 4be746e

File tree

10 files changed

+115
-15
lines changed

10 files changed

+115
-15
lines changed

src/ResourceManager/DataLakeStore/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
## Current Release
21+
* Fix null parameter exception for Recurse case in Set-AzureRmDataLakeStoreItemAclEntry
22+
* Fix the help files for Set-AzureRmDataLakeStoreItemAclEntry, Set-AzureRmDataLakeStoreItemAcl, Remove-AzureRmDataLakeStoreItemAclEntry
2123

2224
## Version 6.0.0
2325
* Add new feature of recursive Acl Change to Remove-AzureRmDataLakeStoreItemAclEntry, Set-AzureRmDataLakeStoreItemAclEntry, Set-AzureRmDataLakeStoreItemAcl

src/ResourceManager/DataLakeStore/Commands.DataLakeStore.Test/ScenarioTests/AdlsAliasTests.ps1

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,10 @@ function Test-DataLakeStoreFileSystem
416416
$movefolder = "/adlspstestmovefolder"
417417
$importFile = "$folderToCreate/importfile.txt"
418418
$content = "Test file content! @ Azure PsTest01?"
419-
419+
$summaryFolder="/adlspstestsummaryfolder"
420+
$subFolderToCreate = "$summaryFolder/Folder0"
421+
$subSubFolderToCreate = "$summaryFolder/Folder0/SubFolder0"
422+
$subFileToCreate = "$summaryFolder/File0"
420423

421424
# Create and get Empty folder
422425
$result = New-AdlStoreItem -Account $accountName -path $folderToCreate -Folder
@@ -546,14 +549,37 @@ function Test-DataLakeStoreFileSystem
546549
Assert-AreEqual 0 $result.Length
547550
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $folderToCreate}
548551

552+
# getcontentsummary
553+
$result = New-AdlStoreItem -Account $accountName -path $summaryFolder -Folder
554+
Assert-NotNull $result "No value was returned on folder creation"
555+
$result = New-AdlStoreItem -Account $accountName -path $subFolderToCreate -Folder
556+
Assert-NotNull $result "No value was returned on folder creation"
557+
$result = New-AdlStoreItem -Account $accountName -path $subSubFolderToCreate -Folder
558+
Assert-NotNull $result "No value was returned on folder creation"
559+
New-AdlStoreItem -Account $accountName -Path $subFileToCreate -Force -Value $content
560+
$result = Get-AdlStoreChildItemSummary -Account $accountName -Path $summaryFolder
561+
Assert-AreEqual $result.Length $content.Length
562+
# Files will be the test file and the above moved file
563+
Assert-AreEqual $result.FileCount 1
564+
565+
# Export DiskUsage
566+
$targetFile = "/DuOutputFile"
567+
Export-AdlStoreChildItemProperties -Account $accountName -Path $summaryFolder -OutputPath $targetFile -GetDiskUsage -IncludeFile -SaveToAdl
568+
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
569+
Assert-NotNull $result "No file was created on export properties"
570+
549571
# delete a file
550572
Assert-True {Remove-AdlStoreItem -Account $accountName -paths "$moveFolder/movefile.txt" -force -passthru } "Remove File Failed"
551573
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $moveFile}
574+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $targetFile -force -passthru } "Remove File Failed"
575+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $targetFile}
552576

553577
# delete a folder
554578
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $moveFolder -force -recurse -passthru} "Remove folder failed"
555579
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $moveFolder}
556-
580+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $summaryFolder -force -recurse -passthru} "Remove folder failed"
581+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $summaryFolder}
582+
557583
# Delete Data Lake account
558584
Assert-True {Remove-AdlStore -ResourceGroupName $resourceGroupName -Name $accountName -Force -PassThru} "Remove Account failed."
559585

@@ -609,6 +635,9 @@ function Test-DataLakeStoreFileSystemPermissions
609635
[Microsoft.WindowsAzure.Commands.Utilities.Common.TestMockSupport]::Delay(30000)
610636
Assert-False {$i -eq 60} " Data Lake Store account is not in succeeded state even after 30 min."
611637
}
638+
639+
#define folder name to create for recursive Acl
640+
$folderToCreate = "/aclRecurseFolder"
612641

613642
# define the permissions to add/remove
614643
$aceUserId = "027c28d5-c91d-49f0-98c5-d10134b169b3"
@@ -674,6 +703,26 @@ function Test-DataLakeStoreFileSystemPermissions
674703
$result = Get-AdlStoreItemAclEntry -Account $accountName -path "/"
675704
Assert-AreEqual $($currentCount) $result.Count
676705

706+
# Create file/folder for recursive Acl
707+
$result = New-AdlStoreItem -Account $accountName -path $folderToCreate -Folder
708+
Assert-NotNull $result "No value was returned on folder creation"
709+
710+
#Recursive Acl Modify
711+
Set-AdlStoreItemAclEntry -Account $accountName -path "/" -AceType User -Permissions All -Id $aceUserId -Recurse
712+
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
713+
Assert-AreEqual $($currentCount+1) $result.Count
714+
715+
# Export Acl
716+
$targetFile = "/aclOutputFile"
717+
Export-AdlStoreChildItemProperties -Account $accountName -Path "/" -OutputPath $targetFile -GetAcl -IncludeFile -SaveToAdl
718+
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
719+
Assert-NotNull $result "No file was created on export properties"
720+
721+
#Recursive Acl remove
722+
Remove-AdlStoreItemAclEntry -Account $accountName -path "/" -AceType User -Id $aceUserId -Recurse
723+
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
724+
Assert-AreEqual $($currentCount) $result.Count
725+
677726
# Validate full ACL removal
678727
Remove-AdlStoreItemAcl -Account $accountName -Path "/" -Force -Default
679728
$result = Get-AdlStoreItemAclEntry -Account $accountName -path "/"

src/ResourceManager/DataLakeStore/Commands.DataLakeStore.Test/ScenarioTests/AdlsTests.ps1

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,10 @@ function Test-DataLakeStoreFileSystem
415415
$movefolder = "/adlspstestmovefolder"
416416
$importFile = "$folderToCreate/importfile.txt"
417417
$content = "Test file content! @ Azure PsTest01?"
418-
418+
$summaryFolder="/adlspstestsummaryfolder"
419+
$subFolderToCreate = "$summaryFolder/Folder0"
420+
$subSubFolderToCreate = "$summaryFolder/Folder0/SubFolder0"
421+
$subFileToCreate = "$summaryFolder/File0"
419422

420423
# Create and get Empty folder
421424
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate -Folder
@@ -525,7 +528,6 @@ function Test-DataLakeStoreFileSystem
525528
Export-AzureRMDataLakeStoreItem -Account $accountName -Path $concatFile -Destination $targetFile
526529
$downloadedFileInfo = Get-ChildItem $targetFile
527530
Assert-AreEqual $($content.length*2) $downloadedFileInfo.length
528-
Remove-Item -path $targetFile -force -confirm:$false
529531

530532
# move a file
531533
$result = Move-AzureRMDataLakeStoreItem -Account $accountName -Path $concatFile -Destination $moveFile
@@ -544,14 +546,37 @@ function Test-DataLakeStoreFileSystem
544546
Assert-AreEqual "Directory" $result.Type
545547
Assert-AreEqual 0 $result.Length
546548
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate}
547-
549+
550+
# getcontentsummary
551+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $summaryFolder -Folder
552+
Assert-NotNull $result "No value was returned on folder creation"
553+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $subFolderToCreate -Folder
554+
Assert-NotNull $result "No value was returned on folder creation"
555+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $subSubFolderToCreate -Folder
556+
Assert-NotNull $result "No value was returned on folder creation"
557+
New-AzureRMDataLakeStoreItem -Account $accountName -Path $subFileToCreate -Force -Value $content
558+
$result = Get-AzureRmDataLakeStoreChildItemSummary -Account $accountName -Path $summaryFolder
559+
Assert-AreEqual $result.Length $content.Length
560+
# Files will be the test file and the above moved file
561+
Assert-AreEqual $result.FileCount 1
562+
563+
# Export DiskUsage
564+
$targetFile = "/DuOutputFile"
565+
Export-AdlStoreChildItemProperties -Account $accountName -Path $summaryFolder -OutputPath $targetFile -GetDiskUsage -IncludeFile -SaveToAdl
566+
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
567+
Assert-NotNull $result "No file was created on export properties"
568+
548569
# delete a file
549-
Assert-True {Remove-AzureRMDataLakeStoreItem -Account $accountName -paths "$moveFolder/movefile.txt" -force -passthru } "Remove File Failed"
550-
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $moveFile}
570+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths "$moveFolder/movefile.txt" -force -passthru } "Remove File Failed"
571+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $moveFile}
572+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $targetFile -force -passthru } "Remove File Failed"
573+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $targetFile}
551574

552575
# delete a folder
553576
Assert-True {Remove-AzureRMDataLakeStoreItem -Account $accountName -paths $moveFolder -force -recurse -passthru} "Remove folder failed"
554577
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $moveFolder}
578+
Assert-True {Remove-AzureRMDataLakeStoreItem -Account $accountName -paths $summaryFolder -force -recurse -passthru} "Remove folder failed"
579+
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $summaryFolder}
555580

556581
# Delete Data Lake account
557582
Assert-True {Remove-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Force -PassThru} "Remove Account failed."
@@ -609,6 +634,9 @@ function Test-DataLakeStoreFileSystemPermissions
609634
Assert-False {$i -eq 60} " Data Lake Store account is not in succeeded state even after 30 min."
610635
}
611636

637+
#define folder name to create for recursive Acl
638+
$folderToCreate = "/aclRecurseFolder"
639+
612640
# define the permissions to add/remove
613641
$aceUserId = "027c28d5-c91d-49f0-98c5-d10134b169b3"
614642

@@ -675,6 +703,26 @@ function Test-DataLakeStoreFileSystemPermissions
675703
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
676704
Assert-AreEqual $($currentCount) $result.Count
677705

706+
# Create file/folder for recursive Acl
707+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate -Folder
708+
Assert-NotNull $result "No value was returned on folder creation"
709+
710+
#Recursive Acl Modify
711+
Set-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/" -AceType User -Permissions All -Id $aceUserId -Recurse
712+
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
713+
Assert-AreEqual $($currentCount+1) $result.Count
714+
715+
# Export Acl
716+
$targetFile = "/aclOutputFile"
717+
Export-AzureRmDataLakeStoreChildItemProperties -Account $accountName -Path "/" -OutputPath $targetFile -GetAcl -IncludeFile -SaveToAdl
718+
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
719+
Assert-NotNull $result "No file was created on export properties"
720+
721+
#Recursive Acl remove
722+
Remove-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/" -AceType User -Id $aceUserId -Recurse
723+
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
724+
Assert-AreEqual $($currentCount) $result.Count
725+
678726
# Validate full ACL removal
679727
Remove-AzureRMDataLakeStoreItemAcl -Account $accountName -Path "/" -Force -Default
680728
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"

src/ResourceManager/DataLakeStore/Commands.DataLakeStore/Commands.DataLakeStore.Netcore.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828
</PropertyGroup>
2929

3030
<ItemGroup>
31-
<PackageReference Include="Microsoft.Azure.DataLake.Store" Version="1.1.4" />
31+
<PackageReference Include="Microsoft.Azure.DataLake.Store" Version="1.1.6" />
3232
<PackageReference Include="Microsoft.Azure.Management.DataLake.Store" Version="2.3.0-preview" />
33-
<PackageReference Include="NLog" Version="5.0.0-beta09" />
33+
<PackageReference Include="NLog" Version="4.5.0" />
34+
<PackageReference Include="System.Net.Requests" Version="4.3.0" />
3435
</ItemGroup>
3536

3637
<ItemGroup>

src/ResourceManager/DataLakeStore/Commands.DataLakeStore/Commands.DataLakeStore.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<ItemGroup>
3939
<Reference Include="Microsoft.Azure.DataLake.Store, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
4040
<SpecificVersion>False</SpecificVersion>
41-
<HintPath>..\..\..\packages\Microsoft.Azure.DataLake.Store.1.1.4\lib\net452\Microsoft.Azure.DataLake.Store.dll</HintPath>
41+
<HintPath>..\..\..\packages\Microsoft.Azure.DataLake.Store.1.1.6\lib\net452\Microsoft.Azure.DataLake.Store.dll</HintPath>
4242
<Private>True</Private>
4343
</Reference>
4444
<Reference Include="Microsoft.Azure.Management.DataLake.Store, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">

src/ResourceManager/DataLakeStore/Commands.DataLakeStore/DataPlaneCommands/SetAzureRmDataLakeStoreItemAclEntry.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public override void ExecuteCmdlet()
111111
{
112112
DataLakeStoreFileSystemClient.ChangeAclRecursively(Path.TransformedPath,
113113
Account,
114-
Acl.Select(entry => entry.ParseDataLakeStoreItemAce()).ToList(), RequestedAclType.ModifyAcl, Concurrency);
114+
aclSpec, RequestedAclType.ModifyAcl, Concurrency);
115115
}
116116
else
117117
{

src/ResourceManager/DataLakeStore/Commands.DataLakeStore/help/Remove-AzureRmDataLakeStoreItemAclEntry.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ This command removes the user ACE for Patti Fuller from the ContosoADL account.
4141

4242
### Example 2: Remove a user entry recursively
4343
```
44-
PS C:\>Remove-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "[email protected]").ObjectId -Recursive -Concurrency 128
44+
PS C:\>Remove-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "[email protected]").ObjectId -Recurse -Concurrency 128
4545
```
4646

4747
This command removes the user ACE for Patti Fuller from the root and recursively from all it's subdirectories and files for account ContosoADL.

src/ResourceManager/DataLakeStore/Commands.DataLakeStore/help/Set-AzureRmDataLakeStoreItemAcl.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ The second command sets the ACL for the file Test.txt to the one in $ACL.
3737
### Example 2: Set the ACL for folder recursively
3838
```
3939
PS C:\>$ACL = Get-AzureRmDataLakeStoreItemAcl -AccountName "ContosoADL" -Path /Folder1
40-
PS C:\> Set-AzureRmDataLakeStoreItemAcl -AccountName "ContosoADL" -Path "/Folder2" -Acl $ACL -Recursive -Concurrency 128
40+
PS C:\> Set-AzureRmDataLakeStoreItemAcl -AccountName "ContosoADL" -Path "/Folder2" -Acl $ACL -Recurse -Concurrency 128
4141
```
4242

4343
The first command gets the ACL for the directory Folder1 of the ContosoADL account, and then stores it in the $ACL variable.

src/ResourceManager/DataLakeStore/Commands.DataLakeStore/help/Set-AzureRmDataLakeStoreItemAclEntry.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ This command modifies the ACE for Patti Fuller to have all permissions.
4141

4242
### Example 2: Modify permissions for an ACE recursively
4343
```
44-
PS C:\>Set-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "[email protected]").ObjectId -Permissions All -Recursive -Concurrency 128
44+
PS C:\>Set-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "[email protected]").ObjectId -Permissions All -Recurse -Concurrency 128
4545
```
4646

4747
This command recursively modifies the ACE for Patti Fuller to have all permissions to root and all its subdirectories and files.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.Azure.DataLake.Store" version="1.1.4" targetFramework="net452" />
3+
<package id="Microsoft.Azure.DataLake.Store" version="1.1.6" targetFramework="net452" />
44
<package id="Microsoft.Azure.Management.DataLake.Store" version="2.3.0-preview" targetFramework="net452" />
55
<package id="NLog" version="4.4.12" targetFramework="net452" />
66
</packages>

0 commit comments

Comments
 (0)