Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/ResourceManager/DataLakeStore/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
- Additional information about change #1
-->
## Current Release
* Fix null parameter exception for Recurse case in Set-AzureRmDataLakeStoreItemAclEntry
* Fix the help files for Set-AzureRmDataLakeStoreItemAclEntry, Set-AzureRmDataLakeStoreItemAcl, Remove-AzureRmDataLakeStoreItemAclEntry

## Version 6.0.0
* Add new feature of recursive Acl Change to Remove-AzureRmDataLakeStoreItemAclEntry, Set-AzureRmDataLakeStoreItemAclEntry, Set-AzureRmDataLakeStoreItemAcl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,10 @@ function Test-DataLakeStoreFileSystem
$movefolder = "/adlspstestmovefolder"
$importFile = "$folderToCreate/importfile.txt"
$content = "Test file content! @ Azure PsTest01?"

$summaryFolder="/adlspstestsummaryfolder"
$subFolderToCreate = "$summaryFolder/Folder0"
$subSubFolderToCreate = "$summaryFolder/Folder0/SubFolder0"
$subFileToCreate = "$summaryFolder/File0"

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

# getcontentsummary
$result = New-AdlStoreItem -Account $accountName -path $summaryFolder -Folder
Assert-NotNull $result "No value was returned on folder creation"
$result = New-AdlStoreItem -Account $accountName -path $subFolderToCreate -Folder
Assert-NotNull $result "No value was returned on folder creation"
$result = New-AdlStoreItem -Account $accountName -path $subSubFolderToCreate -Folder
Assert-NotNull $result "No value was returned on folder creation"
New-AdlStoreItem -Account $accountName -Path $subFileToCreate -Force -Value $content
$result = Get-AdlStoreChildItemSummary -Account $accountName -Path $summaryFolder
Assert-AreEqual $result.Length $content.Length
# Files will be the test file and the above moved file
Assert-AreEqual $result.FileCount 1

# Export DiskUsage
$targetFile = "/DuOutputFile"
Export-AdlStoreChildItemProperties -Account $accountName -Path $summaryFolder -OutputPath $targetFile -GetDiskUsage -IncludeFile -SaveToAdl
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
Assert-NotNull $result "No file was created on export properties"

# delete a file
Assert-True {Remove-AdlStoreItem -Account $accountName -paths "$moveFolder/movefile.txt" -force -passthru } "Remove File Failed"
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $moveFile}
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $targetFile -force -passthru } "Remove File Failed"
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $targetFile}

# delete a folder
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $moveFolder -force -recurse -passthru} "Remove folder failed"
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $moveFolder}

Assert-True {Remove-AdlStoreItem -Account $accountName -paths $summaryFolder -force -recurse -passthru} "Remove folder failed"
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $summaryFolder}

# Delete Data Lake account
Assert-True {Remove-AdlStore -ResourceGroupName $resourceGroupName -Name $accountName -Force -PassThru} "Remove Account failed."

Expand Down Expand Up @@ -609,6 +635,9 @@ function Test-DataLakeStoreFileSystemPermissions
[Microsoft.WindowsAzure.Commands.Utilities.Common.TestMockSupport]::Delay(30000)
Assert-False {$i -eq 60} " Data Lake Store account is not in succeeded state even after 30 min."
}

#define folder name to create for recursive Acl
$folderToCreate = "/aclRecurseFolder"

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

# Create file/folder for recursive Acl
$result = New-AdlStoreItem -Account $accountName -path $folderToCreate -Folder
Assert-NotNull $result "No value was returned on folder creation"

#Recursive Acl Modify
Set-AdlStoreItemAclEntry -Account $accountName -path "/" -AceType User -Permissions All -Id $aceUserId -Recurse
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
Assert-AreEqual $($currentCount+1) $result.Count

# Export Acl
$targetFile = "/aclOutputFile"
Export-AdlStoreChildItemProperties -Account $accountName -Path "/" -OutputPath $targetFile -GetAcl -IncludeFile -SaveToAdl
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
Assert-NotNull $result "No file was created on export properties"

#Recursive Acl remove
Remove-AdlStoreItemAclEntry -Account $accountName -path "/" -AceType User -Id $aceUserId -Recurse
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
Assert-AreEqual $($currentCount) $result.Count

# Validate full ACL removal
Remove-AdlStoreItemAcl -Account $accountName -Path "/" -Force -Default
$result = Get-AdlStoreItemAclEntry -Account $accountName -path "/"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,10 @@ function Test-DataLakeStoreFileSystem
$movefolder = "/adlspstestmovefolder"
$importFile = "$folderToCreate/importfile.txt"
$content = "Test file content! @ Azure PsTest01?"

$summaryFolder="/adlspstestsummaryfolder"
$subFolderToCreate = "$summaryFolder/Folder0"
$subSubFolderToCreate = "$summaryFolder/Folder0/SubFolder0"
$subFileToCreate = "$summaryFolder/File0"

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

# move a file
$result = Move-AzureRMDataLakeStoreItem -Account $accountName -Path $concatFile -Destination $moveFile
Expand All @@ -544,14 +546,37 @@ function Test-DataLakeStoreFileSystem
Assert-AreEqual "Directory" $result.Type
Assert-AreEqual 0 $result.Length
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate}


# getcontentsummary
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $summaryFolder -Folder
Assert-NotNull $result "No value was returned on folder creation"
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $subFolderToCreate -Folder
Assert-NotNull $result "No value was returned on folder creation"
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $subSubFolderToCreate -Folder
Assert-NotNull $result "No value was returned on folder creation"
New-AzureRMDataLakeStoreItem -Account $accountName -Path $subFileToCreate -Force -Value $content
$result = Get-AzureRmDataLakeStoreChildItemSummary -Account $accountName -Path $summaryFolder
Assert-AreEqual $result.Length $content.Length
# Files will be the test file and the above moved file
Assert-AreEqual $result.FileCount 1

# Export DiskUsage
$targetFile = "/DuOutputFile"
Export-AdlStoreChildItemProperties -Account $accountName -Path $summaryFolder -OutputPath $targetFile -GetDiskUsage -IncludeFile -SaveToAdl
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
Assert-NotNull $result "No file was created on export properties"

# delete a file
Assert-True {Remove-AzureRMDataLakeStoreItem -Account $accountName -paths "$moveFolder/movefile.txt" -force -passthru } "Remove File Failed"
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $moveFile}
Assert-True {Remove-AdlStoreItem -Account $accountName -paths "$moveFolder/movefile.txt" -force -passthru } "Remove File Failed"
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $moveFile}
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $targetFile -force -passthru } "Remove File Failed"
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $targetFile}

# delete a folder
Assert-True {Remove-AzureRMDataLakeStoreItem -Account $accountName -paths $moveFolder -force -recurse -passthru} "Remove folder failed"
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $moveFolder}
Assert-True {Remove-AzureRMDataLakeStoreItem -Account $accountName -paths $summaryFolder -force -recurse -passthru} "Remove folder failed"
Assert-Throws {Get-AzureRMDataLakeStoreItem -Account $accountName -path $summaryFolder}

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

#define folder name to create for recursive Acl
$folderToCreate = "/aclRecurseFolder"

# define the permissions to add/remove
$aceUserId = "027c28d5-c91d-49f0-98c5-d10134b169b3"

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

# Create file/folder for recursive Acl
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate -Folder
Assert-NotNull $result "No value was returned on folder creation"

#Recursive Acl Modify
Set-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/" -AceType User -Permissions All -Id $aceUserId -Recurse
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
Assert-AreEqual $($currentCount+1) $result.Count

# Export Acl
$targetFile = "/aclOutputFile"
Export-AzureRmDataLakeStoreChildItemProperties -Account $accountName -Path "/" -OutputPath $targetFile -GetAcl -IncludeFile -SaveToAdl
$result = Get-AzureRMDataLakeStoreItem -Account $accountName -path $targetFile
Assert-NotNull $result "No file was created on export properties"

#Recursive Acl remove
Remove-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/" -AceType User -Id $aceUserId -Recurse
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
Assert-AreEqual $($currentCount) $result.Count

# Validate full ACL removal
Remove-AzureRMDataLakeStoreItemAcl -Account $accountName -Path "/" -Force -Default
$result = Get-AzureRMDataLakeStoreItemAclEntry -Account $accountName -path "/"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Azure.DataLake.Store" Version="1.1.4" />
<PackageReference Include="Microsoft.Azure.DataLake.Store" Version="1.1.6" />
<PackageReference Include="Microsoft.Azure.Management.DataLake.Store" Version="2.3.0-preview" />
<PackageReference Include="NLog" Version="5.0.0-beta09" />
<PackageReference Include="NLog" Version="4.5.0" />
<PackageReference Include="System.Net.Requests" Version="4.3.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<ItemGroup>
<Reference Include="Microsoft.Azure.DataLake.Store, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\packages\Microsoft.Azure.DataLake.Store.1.1.4\lib\net452\Microsoft.Azure.DataLake.Store.dll</HintPath>
<HintPath>..\..\..\packages\Microsoft.Azure.DataLake.Store.1.1.6\lib\net452\Microsoft.Azure.DataLake.Store.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Azure.Management.DataLake.Store, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ public override void ExecuteCmdlet()
{
DataLakeStoreFileSystemClient.ChangeAclRecursively(Path.TransformedPath,
Account,
Acl.Select(entry => entry.ParseDataLakeStoreItemAce()).ToList(), RequestedAclType.ModifyAcl, Concurrency);
aclSpec, RequestedAclType.ModifyAcl, Concurrency);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rahuldutta90 Please add a test to cover this change.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ This command removes the user ACE for Patti Fuller from the ContosoADL account.

### Example 2: Remove a user entry recursively
```
PS C:\>Remove-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "PattiFuller@contoso.com").ObjectId -Recursive -Concurrency 128
PS C:\>Remove-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "PattiFuller@contoso.com").ObjectId -Recurse -Concurrency 128
```

This command removes the user ACE for Patti Fuller from the root and recursively from all it's subdirectories and files for account ContosoADL.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ The second command sets the ACL for the file Test.txt to the one in $ACL.
### Example 2: Set the ACL for folder recursively
```
PS C:\>$ACL = Get-AzureRmDataLakeStoreItemAcl -AccountName "ContosoADL" -Path /Folder1
PS C:\> Set-AzureRmDataLakeStoreItemAcl -AccountName "ContosoADL" -Path "/Folder2" -Acl $ACL -Recursive -Concurrency 128
PS C:\> Set-AzureRmDataLakeStoreItemAcl -AccountName "ContosoADL" -Path "/Folder2" -Acl $ACL -Recurse -Concurrency 128
```

The first command gets the ACL for the directory Folder1 of the ContosoADL account, and then stores it in the $ACL variable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ This command modifies the ACE for Patti Fuller to have all permissions.

### Example 2: Modify permissions for an ACE recursively
```
PS C:\>Set-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "PattiFuller@contoso.com").ObjectId -Permissions All -Recursive -Concurrency 128
PS C:\>Set-AzureRmDataLakeStoreItemAclEntry -AccountName "ContosoADL" -Path / -AceType User -Id (Get-AzureRmADUser -Mail "PattiFuller@contoso.com").ObjectId -Permissions All -Recurse -Concurrency 128
```

This command recursively modifies the ACE for Patti Fuller to have all permissions to root and all its subdirectories and files.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.DataLake.Store" version="1.1.4" targetFramework="net452" />
<package id="Microsoft.Azure.DataLake.Store" version="1.1.6" targetFramework="net452" />
<package id="Microsoft.Azure.Management.DataLake.Store" version="2.3.0-preview" targetFramework="net452" />
<package id="NLog" version="4.4.12" targetFramework="net452" />
</packages>