diff --git a/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.cs b/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.cs index 373666d5b8d6..5d5f9b975de7 100644 --- a/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.cs +++ b/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.cs @@ -245,6 +245,13 @@ public void TestAzureStorageAccountKeySASPolicy() public void TestAzureStorageAccountUserAssignedIdentity() { TestRunner.RunTestScript("Test-AzureStorageAccountUserAssignedIdentity"); - } + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestStorageBlobInventory() + { + TestRunner.RunTestScript("Test-StorageBlobInventory"); + } } } diff --git a/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.ps1 b/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.ps1 index dcbb9db30214..4b8d788f2312 100644 --- a/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.ps1 +++ b/src/Storage/Storage.Management.Test/ScenarioTests/StorageAccountTests.ps1 @@ -1719,4 +1719,227 @@ function Test-AzureStorageAccountUserAssignedIdentity # Cleanup Clean-ResourceGroup $rgname } +} + +<# +.SYNOPSIS +Test Test-StorageBlobInventory +.DESCRIPTION +SmokeTest +#> +function Test-StorageBlobInventory +{ + # Setup + $rgname = Get-StorageManagementTestResourceName; + + try + { + # Test + $stoname = 'sto' + $rgname; + $stotype = 'Standard_LRS'; + $loc = Get-ProviderLocation_Canary ResourceManagement; + $kind = 'StorageV2' + $containerName = "container"+ $rgname + + New-AzResourceGroup -Name $rgname -Location $loc; + Write-Output ("Resource Group created") + + # new account and container, enable versioning + New-AzStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -SkuName $stotype + New-AzRmStorageContainer -ResourceGroupName $rgname -StorageAccountName $stoname -Name $containerName + Update-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname -IsVersioningEnabled $true + + #create rule objects + $rule1 = New-AzStorageBlobInventoryPolicyRule -Name test1 -Disabled -BlobType blockBlob,appendBlob -PrefixMatch abc,edf,eqwewqe,eqwewqreewqe,qwewqewqewqewqewadasd -IncludeSnapshot -IncludeBlobVersion ` + -Destination $containerName -Format Parquet -Schedule Weekly ` + -BlobSchemaField name,Creation-Time,Last-Modified,Content-Length,Content-MD5,BlobType,AccessTier,AccessTierChangeTime,Metadata + $rule2 = New-AzStorageBlobInventoryPolicyRule -Name test2 -Destination $containerName -Disabled -Format Csv -Schedule Daily -ContainerSchemaField Name,Metadata,PublicAccess,Last-mOdified,LeaseStatus,LeaseState,LeaseDuration,HasImmutabilityPolicy,HasLegalHold -PrefixMatch con1,con2 + $rule3 = New-AzStorageBlobInventoryPolicyRule -Name test3 -Destination $containerName -BlobType appendBlob -PrefixMatch abc1,edf1 -Format Csv -Schedule Weekly -BlobSchemaField Name + + # Set inventory policy + $policy1 = Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname -Disabled -Rule $rule1,$rule2,$rule3 + Assert-AreEqual $false $policy1.Enabled + Assert-AreEqual 3 $policy1.Rules.Count + + # get inventory policy + $policy1 = Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname + Assert-AreEqual $false $policy1.Enabled + Assert-AreEqual 3 $policy1.Rules.Count + Assert-AreEqual "test1" $policy1.Rules[0].Name + Assert-AreEqual $false $policy1.Rules[0].Enabled + Assert-AreEqual $containerName $policy1.Rules[0].Destination + Assert-AreEqual "Parquet" $policy1.Rules[0].Definition.Format + Assert-AreEqual "Weekly" $policy1.Rules[0].Definition.Schedule + Assert-AreEqual "Blob" $policy1.Rules[0].Definition.ObjectType + Assert-AreEqual 12 $policy1.Rules[0].Definition.SchemaFields.Count + Assert-AreEqual $true $policy1.Rules[0].Definition.Filters.IncludeSnapshots + Assert-AreEqual $true $policy1.Rules[0].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 2 $policy1.Rules[0].Definition.Filters.BlobTypes.Count + Assert-AreEqual 5 $policy1.Rules[0].Definition.Filters.PrefixMatch.Count + Assert-AreEqual "test2" $policy1.Rules[1].Name + Assert-AreEqual $false $policy1.Rules[1].Enabled + Assert-AreEqual $containerName $policy1.Rules[1].Destination + Assert-AreEqual "Csv" $policy1.Rules[1].Definition.Format + Assert-AreEqual "Daily" $policy1.Rules[1].Definition.Schedule + Assert-AreEqual "Container" $policy1.Rules[1].Definition.ObjectType + Assert-AreEqual 9 $policy1.Rules[1].Definition.SchemaFields.Count + Assert-Null $policy1.Rules[1].Definition.Filters.IncludeSnapshots + Assert-Null $policy1.Rules[1].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 2 $policy1.Rules[1].Definition.Filters.PrefixMatch.Count + Assert-AreEqual "test3" $policy1.Rules[2].Name + Assert-AreEqual $true $policy1.Rules[2].Enabled + Assert-AreEqual $containerName $policy1.Rules[2].Destination + Assert-AreEqual "Csv" $policy1.Rules[2].Definition.Format + Assert-AreEqual "Weekly" $policy1.Rules[2].Definition.Schedule + Assert-AreEqual "Blob" $policy1.Rules[2].Definition.ObjectType + Assert-AreEqual 1 $policy1.Rules[2].Definition.SchemaFields.Count + Assert-Null $policy1.Rules[2].Definition.Filters.IncludeSnapshots + Assert-Null $policy1.Rules[2].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 1 $policy1.Rules[2].Definition.Filters.BlobTypes.Count + Assert-AreEqual 2 $policy1.Rules[2].Definition.Filters.PrefixMatch.Count + + # set policy with json and account name pipeline + $policy2 = Get-AzStorageAccount -ResourceGroupName $rgname -StorageAccountName $stoname | Set-AzStorageBlobInventoryPolicy -Policy (@{ + Enabled=$true; + Rules=(@{ + Enabled=$true; + Name="Test1"; + Destination=$containerName; + Definition=(@{ + ObjectType="Blob"; + Format="Csv"; + Schedule="Weekly"; + SchemaFields=@("name","Content-Length","BlobType","Snapshot","VersionId","IsCurrentVersion"); + Filters=(@{ + BlobTypes=@("blockBlob","appendBlob"); + PrefixMatch=@("prefix1","prefix2"); + IncludeSnapshots=$true; + IncludeBlobVersions=$true; + }) + }) + }, + @{ + Enabled=$false; + Name="Test2"; + Destination=$containerName; + Definition=(@{ + ObjectType="Container"; + Format="Parquet"; + Schedule="Daily"; + SchemaFields=@("name","Metadata","PublicAccess"); + Filters=(@{ + PrefixMatch=@("conpre1","conpre2"); + }) + }) + }) + }) + Assert-AreEqual $true $policy2.Enabled + Assert-AreEqual 2 $policy2.Rules.Count + + # get inventory policy + $policy2 = Get-AzStorageAccount -ResourceGroupName $rgname -StorageAccountName $stoname | Get-AzStorageBlobInventoryPolicy + Assert-AreEqual $true $policy2.Enabled + Assert-AreEqual 2 $policy2.Rules.Count + Assert-AreEqual "Test1" $policy2.Rules[0].Name + Assert-AreEqual $true $policy2.Rules[0].Enabled + Assert-AreEqual $containerName $policy2.Rules[0].Destination + Assert-AreEqual "Csv" $policy2.Rules[0].Definition.Format + Assert-AreEqual "Weekly" $policy2.Rules[0].Definition.Schedule + Assert-AreEqual "Blob" $policy2.Rules[0].Definition.ObjectType + Assert-AreEqual 6 $policy2.Rules[0].Definition.SchemaFields.Count + Assert-AreEqual $true $policy2.Rules[0].Definition.Filters.IncludeSnapshots + Assert-AreEqual $true $policy2.Rules[0].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 2 $policy2.Rules[0].Definition.Filters.BlobTypes.Count + Assert-AreEqual 2 $policy2.Rules[0].Definition.Filters.PrefixMatch.Count + Assert-AreEqual "Test2" $policy2.Rules[1].Name + Assert-AreEqual $false $policy2.Rules[1].Enabled + Assert-AreEqual $containerName $policy2.Rules[1].Destination + Assert-AreEqual "Parquet" $policy2.Rules[1].Definition.Format + Assert-AreEqual "Daily" $policy2.Rules[1].Definition.Schedule + Assert-AreEqual "Container" $policy2.Rules[1].Definition.ObjectType + Assert-AreEqual 3 $policy2.Rules[1].Definition.SchemaFields.Count + Assert-Null $policy2.Rules[1].Definition.Filters.IncludeSnapshots + Assert-Null $policy2.Rules[1].Definition.Filters.IncludeBlobVersions + Assert-Null $policy2.Rules[1].Definition.Filters.BlobTypes + Assert-AreEqual 2 $policy2.Rules[1].Definition.Filters.PrefixMatch.Count + + # remove policy + Get-AzStorageAccount -ResourceGroupName $rgname -StorageAccountName $stoname | Remove-AzStorageBlobInventoryPolicy + + # set policy by pipeline policy then get inventory policy + $policy3 = $policy1 | Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname + $policy3 = Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname + Assert-AreEqual $false $policy3.Enabled + Assert-AreEqual 3 $policy3.Rules.Count + Assert-AreEqual "test1" $policy3.Rules[0].Name + Assert-AreEqual $false $policy3.Rules[0].Enabled + Assert-AreEqual $containerName $policy3.Rules[0].Destination + Assert-AreEqual "Parquet" $policy3.Rules[0].Definition.Format + Assert-AreEqual "Weekly" $policy3.Rules[0].Definition.Schedule + Assert-AreEqual "Blob" $policy3.Rules[0].Definition.ObjectType + Assert-AreEqual 12 $policy3.Rules[0].Definition.SchemaFields.Count + Assert-AreEqual $true $policy3.Rules[0].Definition.Filters.IncludeSnapshots + Assert-AreEqual $true $policy3.Rules[0].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 2 $policy3.Rules[0].Definition.Filters.BlobTypes.Count + Assert-AreEqual 5 $policy3.Rules[0].Definition.Filters.PrefixMatch.Count + Assert-AreEqual "test2" $policy3.Rules[1].Name + Assert-AreEqual $false $policy3.Rules[1].Enabled + Assert-AreEqual $containerName $policy3.Rules[1].Destination + Assert-AreEqual "Csv" $policy3.Rules[1].Definition.Format + Assert-AreEqual "Daily" $policy3.Rules[1].Definition.Schedule + Assert-AreEqual "Container" $policy3.Rules[1].Definition.ObjectType + Assert-AreEqual 9 $policy3.Rules[1].Definition.SchemaFields.Count + Assert-Null $policy3.Rules[1].Definition.Filters.IncludeSnapshots + Assert-Null $policy3.Rules[1].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 2 $policy3.Rules[1].Definition.Filters.PrefixMatch.Count + Assert-AreEqual "test3" $policy3.Rules[2].Name + Assert-AreEqual $true $policy3.Rules[2].Enabled + Assert-AreEqual $containerName $policy3.Rules[2].Destination + Assert-AreEqual "Csv" $policy3.Rules[2].Definition.Format + Assert-AreEqual "Weekly" $policy3.Rules[2].Definition.Schedule + Assert-AreEqual "Blob" $policy3.Rules[2].Definition.ObjectType + Assert-AreEqual 1 $policy3.Rules[2].Definition.SchemaFields.Count + Assert-Null $policy3.Rules[2].Definition.Filters.IncludeSnapshots + Assert-Null $policy3.Rules[2].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 1 $policy3.Rules[2].Definition.Filters.BlobTypes.Count + Assert-AreEqual 2 $policy3.Rules[2].Definition.Filters.PrefixMatch.Count + + # set policy by pipeline policy rules then get inventory policy + $policy4 = ,($policy2.Rules) | Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname -Disabled + $policy4 = Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname + Assert-AreEqual $false $policy4.Enabled + Assert-AreEqual 2 $policy4.Rules.Count + Assert-AreEqual "Test1" $policy4.Rules[0].Name + Assert-AreEqual $true $policy4.Rules[0].Enabled + Assert-AreEqual $containerName $policy4.Rules[0].Destination + Assert-AreEqual "Csv" $policy4.Rules[0].Definition.Format + Assert-AreEqual "Weekly" $policy4.Rules[0].Definition.Schedule + Assert-AreEqual "Blob" $policy4.Rules[0].Definition.ObjectType + Assert-AreEqual 6 $policy4.Rules[0].Definition.SchemaFields.Count + Assert-AreEqual $true $policy4.Rules[0].Definition.Filters.IncludeSnapshots + Assert-AreEqual $true $policy4.Rules[0].Definition.Filters.IncludeBlobVersions + Assert-AreEqual 2 $policy4.Rules[0].Definition.Filters.BlobTypes.Count + Assert-AreEqual 2 $policy4.Rules[0].Definition.Filters.PrefixMatch.Count + Assert-AreEqual "Test2" $policy4.Rules[1].Name + Assert-AreEqual $false $policy4.Rules[1].Enabled + Assert-AreEqual $containerName $policy4.Rules[1].Destination + Assert-AreEqual "Parquet" $policy4.Rules[1].Definition.Format + Assert-AreEqual "Daily" $policy4.Rules[1].Definition.Schedule + Assert-AreEqual "Container" $policy4.Rules[1].Definition.ObjectType + Assert-AreEqual 3 $policy4.Rules[1].Definition.SchemaFields.Count + Assert-Null $policy4.Rules[1].Definition.Filters.IncludeSnapshots + Assert-Null $policy4.Rules[1].Definition.Filters.IncludeBlobVersions + Assert-Null $policy4.Rules[1].Definition.Filters.BlobTypes + Assert-AreEqual 2 $policy4.Rules[1].Definition.Filters.PrefixMatch.Count + + # remove policy + Remove-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $stoname + + Remove-AzStorageAccount -Force -ResourceGroupName $rgname -Name $stoname; + } + finally + { + # Cleanup + Clean-ResourceGroup $rgname + } } \ No newline at end of file diff --git a/src/Storage/Storage.Management.Test/SessionRecords/Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests/TestStorageBlobInventory.json b/src/Storage/Storage.Management.Test/SessionRecords/Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests/TestStorageBlobInventory.json new file mode 100644 index 000000000000..b3dc7da01e47 --- /dev/null +++ b/src/Storage/Storage.Management.Test/SessionRecords/Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageAccountTests/TestStorageBlobInventory.json @@ -0,0 +1,1734 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourcegroups/pstestrg7815?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlZ3JvdXBzL3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"location\": \"eastus2euap\"\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "e4b062f6-6a7d-4945-90df-816837fcc532" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.32" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "33" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1199" + ], + "x-ms-request-id": [ + "72c412a4-17c6-42c7-a7d0-6fcb81eed616" + ], + "x-ms-correlation-request-id": [ + "72c412a4-17c6-42c7-a7d0-6fcb81eed616" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103001Z:72c412a4-17c6-42c7-a7d0-6fcb81eed616" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:01 GMT" + ], + "Content-Length": [ + "182" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815\",\r\n \"name\": \"pstestrg7815\",\r\n \"location\": \"eastus2euap\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/providers/Microsoft.Storage/checkNameAvailability?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Byb3ZpZGVycy9NaWNyb3NvZnQuU3RvcmFnZS9jaGVja05hbWVBdmFpbGFiaWxpdHk/YXBpLXZlcnNpb249MjAyMS0wNC0wMQ==", + "RequestMethod": "POST", + "RequestBody": "{\r\n \"name\": \"stopstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts\"\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "10a2e92d-cec5-40a5-a790-2781fe903af3" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "81" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "86f30c66-aa9b-4cfe-809b-6cf39719d59a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11996" + ], + "x-ms-correlation-request-id": [ + "e01e6908-762b-45df-98b4-a9a230f5c830" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103003Z:e01e6908-762b-45df-98b4-a9a230f5c830" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:02 GMT" + ], + "Content-Length": [ + "22" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"nameAvailable\": true\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\"\r\n },\r\n \"kind\": \"StorageV2\",\r\n \"location\": \"eastus2euap\"\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "10a2e92d-cec5-40a5-a790-2781fe903af3" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "103" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/providers/Microsoft.Storage/locations/eastus2euap/asyncoperations/15ef2226-1c0d-48fb-83b3-9ca8d6b273b9?monitor=true&api-version=2021-04-01" + ], + "Retry-After": [ + "17" + ], + "x-ms-request-id": [ + "15ef2226-1c0d-48fb-83b3-9ca8d6b273b9" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1198" + ], + "x-ms-correlation-request-id": [ + "c8cb8c8d-97ef-4d60-b2e1-17d5d989a71e" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103013Z:c8cb8c8d-97ef-4d60-b2e1-17d5d989a71e" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:12 GMT" + ], + "Content-Type": [ + "text/plain; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/providers/Microsoft.Storage/locations/eastus2euap/asyncoperations/15ef2226-1c0d-48fb-83b3-9ca8d6b273b9?monitor=true&api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Byb3ZpZGVycy9NaWNyb3NvZnQuU3RvcmFnZS9sb2NhdGlvbnMvZWFzdHVzMmV1YXAvYXN5bmNvcGVyYXRpb25zLzE1ZWYyMjI2LTFjMGQtNDhmYi04M2IzLTljYThkNmIyNzNiOT9tb25pdG9yPXRydWUmYXBpLXZlcnNpb249MjAyMS0wNC0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "10a2e92d-cec5-40a5-a790-2781fe903af3" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "d76eccf2-33c1-44af-9b94-b48ea9581cb6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11995" + ], + "x-ms-correlation-request-id": [ + "473b26e2-0fe5-4f36-90cb-1f67f25cfdcc" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103031Z:473b26e2-0fe5-4f36-90cb-1f67f25cfdcc" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:30 GMT" + ], + "Content-Length": [ + "1361" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"kind\": \"StorageV2\",\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815\",\r\n \"name\": \"stopstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts\",\r\n \"location\": \"eastus2euap\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"keyCreationTime\": {\r\n \"key1\": \"2021-05-12T10:30:11.0603638Z\",\r\n \"key2\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"privateEndpointConnections\": [],\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"virtualNetworkRules\": [],\r\n \"ipRules\": [],\r\n \"defaultAction\": \"Allow\"\r\n },\r\n \"supportsHttpsTrafficOnly\": true,\r\n \"encryption\": {\r\n \"services\": {\r\n \"file\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"blob\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n }\r\n },\r\n \"keySource\": \"Microsoft.Storage\"\r\n },\r\n \"accessTier\": \"Hot\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"2021-05-12T10:30:10.9653451Z\",\r\n \"primaryEndpoints\": {\r\n \"dfs\": \"https://stopstestrg7815.dfs.core.windows.net/\",\r\n \"web\": \"https://stopstestrg7815.z3.web.core.windows.net/\",\r\n \"blob\": \"https://stopstestrg7815.blob.core.windows.net/\",\r\n \"queue\": \"https://stopstestrg7815.queue.core.windows.net/\",\r\n \"table\": \"https://stopstestrg7815.table.core.windows.net/\",\r\n \"file\": \"https://stopstestrg7815.file.core.windows.net/\"\r\n },\r\n \"primaryLocation\": \"eastus2euap\",\r\n \"statusOfPrimary\": \"available\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "10a2e92d-cec5-40a5-a790-2781fe903af3" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "adefd8ed-ec4c-4602-9fbb-59d0f27aa463" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11994" + ], + "x-ms-correlation-request-id": [ + "59ff3b38-1b0c-4979-a7f3-384f285ba05d" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103031Z:59ff3b38-1b0c-4979-a7f3-384f285ba05d" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:31 GMT" + ], + "Content-Length": [ + "1361" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"kind\": \"StorageV2\",\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815\",\r\n \"name\": \"stopstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts\",\r\n \"location\": \"eastus2euap\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"keyCreationTime\": {\r\n \"key1\": \"2021-05-12T10:30:11.0603638Z\",\r\n \"key2\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"privateEndpointConnections\": [],\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"virtualNetworkRules\": [],\r\n \"ipRules\": [],\r\n \"defaultAction\": \"Allow\"\r\n },\r\n \"supportsHttpsTrafficOnly\": true,\r\n \"encryption\": {\r\n \"services\": {\r\n \"file\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"blob\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n }\r\n },\r\n \"keySource\": \"Microsoft.Storage\"\r\n },\r\n \"accessTier\": \"Hot\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"2021-05-12T10:30:10.9653451Z\",\r\n \"primaryEndpoints\": {\r\n \"dfs\": \"https://stopstestrg7815.dfs.core.windows.net/\",\r\n \"web\": \"https://stopstestrg7815.z3.web.core.windows.net/\",\r\n \"blob\": \"https://stopstestrg7815.blob.core.windows.net/\",\r\n \"queue\": \"https://stopstestrg7815.queue.core.windows.net/\",\r\n \"table\": \"https://stopstestrg7815.table.core.windows.net/\",\r\n \"file\": \"https://stopstestrg7815.file.core.windows.net/\"\r\n },\r\n \"primaryLocation\": \"eastus2euap\",\r\n \"statusOfPrimary\": \"available\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "8ea9e718-1946-43c1-972b-5474945a3ab8" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "6a77847a-ee19-404b-abed-5a7f809170af" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11995" + ], + "x-ms-correlation-request-id": [ + "4aa2b9ea-45d1-440f-898c-948acf400f4d" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103039Z:4aa2b9ea-45d1-440f-898c-948acf400f4d" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:39 GMT" + ], + "Content-Length": [ + "1361" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"kind\": \"StorageV2\",\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815\",\r\n \"name\": \"stopstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts\",\r\n \"location\": \"eastus2euap\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"keyCreationTime\": {\r\n \"key1\": \"2021-05-12T10:30:11.0603638Z\",\r\n \"key2\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"privateEndpointConnections\": [],\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"virtualNetworkRules\": [],\r\n \"ipRules\": [],\r\n \"defaultAction\": \"Allow\"\r\n },\r\n \"supportsHttpsTrafficOnly\": true,\r\n \"encryption\": {\r\n \"services\": {\r\n \"file\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"blob\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n }\r\n },\r\n \"keySource\": \"Microsoft.Storage\"\r\n },\r\n \"accessTier\": \"Hot\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"2021-05-12T10:30:10.9653451Z\",\r\n \"primaryEndpoints\": {\r\n \"dfs\": \"https://stopstestrg7815.dfs.core.windows.net/\",\r\n \"web\": \"https://stopstestrg7815.z3.web.core.windows.net/\",\r\n \"blob\": \"https://stopstestrg7815.blob.core.windows.net/\",\r\n \"queue\": \"https://stopstestrg7815.queue.core.windows.net/\",\r\n \"table\": \"https://stopstestrg7815.table.core.windows.net/\",\r\n \"file\": \"https://stopstestrg7815.file.core.windows.net/\"\r\n },\r\n \"primaryLocation\": \"eastus2euap\",\r\n \"statusOfPrimary\": \"available\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a80cc08c-3beb-46c9-be7e-e99da168dbcd" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "4ab4934f-9ae6-4e1e-9dae-9992d280d7ef" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11992" + ], + "x-ms-correlation-request-id": [ + "2487c01d-3df3-4b42-b843-6fb908470021" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103043Z:2487c01d-3df3-4b42-b843-6fb908470021" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:42 GMT" + ], + "Content-Length": [ + "1361" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"kind\": \"StorageV2\",\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815\",\r\n \"name\": \"stopstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts\",\r\n \"location\": \"eastus2euap\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"keyCreationTime\": {\r\n \"key1\": \"2021-05-12T10:30:11.0603638Z\",\r\n \"key2\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"privateEndpointConnections\": [],\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"virtualNetworkRules\": [],\r\n \"ipRules\": [],\r\n \"defaultAction\": \"Allow\"\r\n },\r\n \"supportsHttpsTrafficOnly\": true,\r\n \"encryption\": {\r\n \"services\": {\r\n \"file\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"blob\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n }\r\n },\r\n \"keySource\": \"Microsoft.Storage\"\r\n },\r\n \"accessTier\": \"Hot\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"2021-05-12T10:30:10.9653451Z\",\r\n \"primaryEndpoints\": {\r\n \"dfs\": \"https://stopstestrg7815.dfs.core.windows.net/\",\r\n \"web\": \"https://stopstestrg7815.z3.web.core.windows.net/\",\r\n \"blob\": \"https://stopstestrg7815.blob.core.windows.net/\",\r\n \"queue\": \"https://stopstestrg7815.queue.core.windows.net/\",\r\n \"table\": \"https://stopstestrg7815.table.core.windows.net/\",\r\n \"file\": \"https://stopstestrg7815.file.core.windows.net/\"\r\n },\r\n \"primaryLocation\": \"eastus2euap\",\r\n \"statusOfPrimary\": \"available\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "0eac802f-8bb9-410b-85c8-8af08b30d657" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "4a7f510f-a7c5-4a55-abfd-133a34c00539" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11999" + ], + "x-ms-correlation-request-id": [ + "30ae806d-eb13-47f8-81b2-bb2dd9a512d3" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103044Z:30ae806d-eb13-47f8-81b2-bb2dd9a512d3" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:44 GMT" + ], + "Content-Length": [ + "1361" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"kind\": \"StorageV2\",\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815\",\r\n \"name\": \"stopstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts\",\r\n \"location\": \"eastus2euap\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"keyCreationTime\": {\r\n \"key1\": \"2021-05-12T10:30:11.0603638Z\",\r\n \"key2\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"privateEndpointConnections\": [],\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"virtualNetworkRules\": [],\r\n \"ipRules\": [],\r\n \"defaultAction\": \"Allow\"\r\n },\r\n \"supportsHttpsTrafficOnly\": true,\r\n \"encryption\": {\r\n \"services\": {\r\n \"file\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n },\r\n \"blob\": {\r\n \"keyType\": \"Account\",\r\n \"enabled\": true,\r\n \"lastEnabledTime\": \"2021-05-12T10:30:11.0603638Z\"\r\n }\r\n },\r\n \"keySource\": \"Microsoft.Storage\"\r\n },\r\n \"accessTier\": \"Hot\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"creationTime\": \"2021-05-12T10:30:10.9653451Z\",\r\n \"primaryEndpoints\": {\r\n \"dfs\": \"https://stopstestrg7815.dfs.core.windows.net/\",\r\n \"web\": \"https://stopstestrg7815.z3.web.core.windows.net/\",\r\n \"blob\": \"https://stopstestrg7815.blob.core.windows.net/\",\r\n \"queue\": \"https://stopstestrg7815.queue.core.windows.net/\",\r\n \"table\": \"https://stopstestrg7815.table.core.windows.net/\",\r\n \"file\": \"https://stopstestrg7815.file.core.windows.net/\"\r\n },\r\n \"primaryLocation\": \"eastus2euap\",\r\n \"statusOfPrimary\": \"available\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/blobServices/default/containers/containerpstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9ibG9iU2VydmljZXMvZGVmYXVsdC9jb250YWluZXJzL2NvbnRhaW5lcnBzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "PUT", + "RequestBody": "{}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "ad8e7b17-067a-4e3a-a68e-18d6a28b24b6" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "2" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "ETag": [ + "\"0x8D91530F94506F7\"" + ], + "x-ms-request-id": [ + "878e556d-fa9e-433a-8564-895593976750" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1198" + ], + "x-ms-correlation-request-id": [ + "a21df041-8b33-4ac3-a091-643a429df4db" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103033Z:a21df041-8b33-4ac3-a091-643a429df4db" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:33 GMT" + ], + "Content-Length": [ + "300" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/blobServices/default/containers/containerpstestrg7815\",\r\n \"name\": \"containerpstestrg7815\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/blobServices/containers\"\r\n}", + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/blobServices/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9ibG9iU2VydmljZXMvZGVmYXVsdD9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"isVersioningEnabled\": true\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "c3547f75-38ca-4c7b-8fff-f18eb6d5d4c0" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "61" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "98f25d08-ae16-426b-9f7e-a5141b83f430" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1199" + ], + "x-ms-correlation-request-id": [ + "9d38f667-6cd1-454f-920c-330cd501ad06" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103035Z:9d38f667-6cd1-454f-920c-330cd501ad06" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:35 GMT" + ], + "Content-Length": [ + "284" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/blobServices/default\",\r\n \"name\": \"default\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/blobServices\",\r\n \"properties\": {\r\n \"isVersioningEnabled\": true\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/blobServices/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9ibG9iU2VydmljZXMvZGVmYXVsdD9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "c3547f75-38ca-4c7b-8fff-f18eb6d5d4c0" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "17c5147f-10ae-4a21-b71b-a066e33353d2" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11999" + ], + "x-ms-correlation-request-id": [ + "91024cee-f826-4d9e-acc2-1b9bf79a34d2" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103036Z:91024cee-f826-4d9e-acc2-1b9bf79a34d2" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:35 GMT" + ], + "Content-Length": [ + "398" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"name\": \"Standard_LRS\",\r\n \"tier\": \"Standard\"\r\n },\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/blobServices/default\",\r\n \"name\": \"default\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/blobServices\",\r\n \"properties\": {\r\n \"cors\": {\r\n \"corsRules\": []\r\n },\r\n \"deleteRetentionPolicy\": {\r\n \"enabled\": false\r\n },\r\n \"isVersioningEnabled\": true\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"rules\": [\r\n {\r\n \"enabled\": false,\r\n \"name\": \"test1\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"abc\",\r\n \"edf\",\r\n \"eqwewqe\",\r\n \"eqwewqreewqe\",\r\n \"qwewqewqewqewqewadasd\"\r\n ],\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n },\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Creation-Time\",\r\n \"Last-Modified\",\r\n \"Content-Length\",\r\n \"Content-MD5\",\r\n \"BlobType\",\r\n \"AccessTier\",\r\n \"AccessTierChangeTime\",\r\n \"Metadata\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ]\r\n }\r\n },\r\n {\r\n \"enabled\": false,\r\n \"name\": \"test2\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"con1\",\r\n \"con2\"\r\n ]\r\n },\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Metadata\",\r\n \"PublicAccess\",\r\n \"Last-Modified\",\r\n \"LeaseStatus\",\r\n \"LeaseState\",\r\n \"LeaseDuration\",\r\n \"HasImmutabilityPolicy\",\r\n \"HasLegalHold\"\r\n ]\r\n }\r\n },\r\n {\r\n \"enabled\": true,\r\n \"name\": \"test3\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"abc1\",\r\n \"edf1\"\r\n ],\r\n \"blobTypes\": [\r\n \"appendBlob\"\r\n ]\r\n },\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\"\r\n ]\r\n }\r\n }\r\n ],\r\n \"type\": \"Inventory\"\r\n }\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "bbfed877-d00e-4126-9d4e-d7c1e169389b" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "2538" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "f46c13d8-9666-4b0e-b07f-25061e8b57b7" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1199" + ], + "x-ms-correlation-request-id": [ + "85533e62-f4dc-46a2-bf5c-0e5aba0e5934" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103037Z:85533e62-f4dc-46a2-bf5c-0e5aba0e5934" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:37 GMT" + ], + "Content-Length": [ + "1467" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:37.4253689Z\",\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test1\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Creation-Time\",\r\n \"Last-Modified\",\r\n \"Content-Length\",\r\n \"Content-MD5\",\r\n \"BlobType\",\r\n \"AccessTier\",\r\n \"AccessTierChangeTime\",\r\n \"Metadata\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc\",\r\n \"edf\",\r\n \"eqwewqe\",\r\n \"eqwewqreewqe\",\r\n \"qwewqewqewqewqewadasd\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test2\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Metadata\",\r\n \"PublicAccess\",\r\n \"Last-Modified\",\r\n \"LeaseStatus\",\r\n \"LeaseState\",\r\n \"LeaseDuration\",\r\n \"HasImmutabilityPolicy\",\r\n \"HasLegalHold\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"con1\",\r\n \"con2\"\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"test3\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc1\",\r\n \"edf1\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"policy\": {\r\n \"enabled\": true,\r\n \"rules\": [\r\n {\r\n \"enabled\": true,\r\n \"name\": \"Test1\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"prefix1\",\r\n \"prefix2\"\r\n ],\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n },\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Content-Length\",\r\n \"BlobType\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ]\r\n }\r\n },\r\n {\r\n \"enabled\": false,\r\n \"name\": \"Test2\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"conpre1\",\r\n \"conpre2\"\r\n ]\r\n },\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Metadata\",\r\n \"PublicAccess\"\r\n ]\r\n }\r\n }\r\n ],\r\n \"type\": \"Inventory\"\r\n }\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "8ea9e718-1946-43c1-972b-5474945a3ab8" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "1508" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "cee81b7a-3814-49ce-9519-744a4c050dbe" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1197" + ], + "x-ms-correlation-request-id": [ + "198eeba1-7906-4ec9-8c99-61fac8ac36a2" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103041Z:198eeba1-7906-4ec9-8c99-61fac8ac36a2" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:41 GMT" + ], + "Content-Length": [ + "1006" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:41.6853831Z\",\r\n \"policy\": {\r\n \"enabled\": true,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"Test1\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Content-Length\",\r\n \"BlobType\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"prefix1\",\r\n \"prefix2\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"Test2\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Metadata\",\r\n \"PublicAccess\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"conpre1\",\r\n \"conpre2\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"rules\": [\r\n {\r\n \"enabled\": false,\r\n \"name\": \"test1\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"abc\",\r\n \"edf\",\r\n \"eqwewqe\",\r\n \"eqwewqreewqe\",\r\n \"qwewqewqewqewqewadasd\"\r\n ],\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n },\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Creation-Time\",\r\n \"Last-Modified\",\r\n \"Content-Length\",\r\n \"Content-MD5\",\r\n \"BlobType\",\r\n \"AccessTier\",\r\n \"AccessTierChangeTime\",\r\n \"Metadata\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ]\r\n }\r\n },\r\n {\r\n \"enabled\": false,\r\n \"name\": \"test2\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"con1\",\r\n \"con2\"\r\n ]\r\n },\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Metadata\",\r\n \"PublicAccess\",\r\n \"Last-Modified\",\r\n \"LeaseStatus\",\r\n \"LeaseState\",\r\n \"LeaseDuration\",\r\n \"HasImmutabilityPolicy\",\r\n \"HasLegalHold\"\r\n ]\r\n }\r\n },\r\n {\r\n \"enabled\": true,\r\n \"name\": \"test3\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"abc1\",\r\n \"edf1\"\r\n ],\r\n \"blobTypes\": [\r\n \"appendBlob\"\r\n ]\r\n },\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\"\r\n ]\r\n }\r\n }\r\n ],\r\n \"type\": \"Inventory\"\r\n }\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "52e6ab0d-ad0b-4342-853a-142be71db144" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "2538" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "2d969a69-ffea-4b4c-98de-fb92ca3ba2d6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1199" + ], + "x-ms-correlation-request-id": [ + "356ec49d-3436-4f99-a6ba-9cf8fe17f7ce" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103047Z:356ec49d-3436-4f99-a6ba-9cf8fe17f7ce" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:46 GMT" + ], + "Content-Length": [ + "1467" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:47.2103932Z\",\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test1\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Creation-Time\",\r\n \"Last-Modified\",\r\n \"Content-Length\",\r\n \"Content-MD5\",\r\n \"BlobType\",\r\n \"AccessTier\",\r\n \"AccessTierChangeTime\",\r\n \"Metadata\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc\",\r\n \"edf\",\r\n \"eqwewqe\",\r\n \"eqwewqreewqe\",\r\n \"qwewqewqewqewqewadasd\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test2\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Metadata\",\r\n \"PublicAccess\",\r\n \"Last-Modified\",\r\n \"LeaseStatus\",\r\n \"LeaseState\",\r\n \"LeaseDuration\",\r\n \"HasImmutabilityPolicy\",\r\n \"HasLegalHold\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"con1\",\r\n \"con2\"\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"test3\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc1\",\r\n \"edf1\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"rules\": [\r\n {\r\n \"enabled\": true,\r\n \"name\": \"Test1\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"prefix1\",\r\n \"prefix2\"\r\n ],\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n },\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Content-Length\",\r\n \"BlobType\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ]\r\n }\r\n },\r\n {\r\n \"enabled\": false,\r\n \"name\": \"Test2\",\r\n \"destination\": \"containerpstestrg7815\",\r\n \"definition\": {\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"conpre1\",\r\n \"conpre2\"\r\n ]\r\n },\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Metadata\",\r\n \"PublicAccess\"\r\n ]\r\n }\r\n }\r\n ],\r\n \"type\": \"Inventory\"\r\n }\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "c33c57d6-c899-4ff5-b0e1-8a40a13cb7b6" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "1509" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "53746c86-996d-4c74-9e8b-e4d1575774c5" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1199" + ], + "x-ms-correlation-request-id": [ + "169533da-6d5a-44d4-b572-05168391873e" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103051Z:169533da-6d5a-44d4-b572-05168391873e" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:51 GMT" + ], + "Content-Length": [ + "1007" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:51.0203504Z\",\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"Test1\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Content-Length\",\r\n \"BlobType\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"prefix1\",\r\n \"prefix2\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"Test2\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Metadata\",\r\n \"PublicAccess\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"conpre1\",\r\n \"conpre2\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "1860b012-be27-4bb9-8023-c5e3d3296156" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "9d414a36-13b1-4f13-ba5f-af5054e27d64" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11999" + ], + "x-ms-correlation-request-id": [ + "2baaadab-7228-463b-ab82-10f746362767" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103039Z:2baaadab-7228-463b-ab82-10f746362767" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:39 GMT" + ], + "Content-Length": [ + "1467" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:37.4253689Z\",\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test1\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Creation-Time\",\r\n \"Last-Modified\",\r\n \"Content-Length\",\r\n \"Content-MD5\",\r\n \"BlobType\",\r\n \"AccessTier\",\r\n \"AccessTierChangeTime\",\r\n \"Metadata\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc\",\r\n \"edf\",\r\n \"eqwewqe\",\r\n \"eqwewqreewqe\",\r\n \"qwewqewqewqewqewadasd\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test2\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Metadata\",\r\n \"PublicAccess\",\r\n \"Last-Modified\",\r\n \"LeaseStatus\",\r\n \"LeaseState\",\r\n \"LeaseDuration\",\r\n \"HasImmutabilityPolicy\",\r\n \"HasLegalHold\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"con1\",\r\n \"con2\"\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"test3\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc1\",\r\n \"edf1\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a80cc08c-3beb-46c9-be7e-e99da168dbcd" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "51bd1db9-a509-4be9-ae14-2816eccd959f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11991" + ], + "x-ms-correlation-request-id": [ + "7d6b0516-20ca-461c-9bae-2cb443f45383" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103043Z:7d6b0516-20ca-461c-9bae-2cb443f45383" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:43 GMT" + ], + "Content-Length": [ + "1006" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:41.6853831Z\",\r\n \"policy\": {\r\n \"enabled\": true,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"Test1\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Content-Length\",\r\n \"BlobType\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"prefix1\",\r\n \"prefix2\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"Test2\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Metadata\",\r\n \"PublicAccess\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"conpre1\",\r\n \"conpre2\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "af2008c1-1cee-4629-b1f1-d61f34fdb19d" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "d8da632a-97b1-4f4c-88b7-0a5e0a248673" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11999" + ], + "x-ms-correlation-request-id": [ + "cee87e8d-873f-4120-851f-571a6fdc04e3" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103049Z:cee87e8d-873f-4120-851f-571a6fdc04e3" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:49 GMT" + ], + "Content-Length": [ + "1467" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:47.2103932Z\",\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test1\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Creation-Time\",\r\n \"Last-Modified\",\r\n \"Content-Length\",\r\n \"Content-MD5\",\r\n \"BlobType\",\r\n \"AccessTier\",\r\n \"AccessTierChangeTime\",\r\n \"Metadata\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc\",\r\n \"edf\",\r\n \"eqwewqe\",\r\n \"eqwewqreewqe\",\r\n \"qwewqewqewqewqewadasd\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"test2\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"Name\",\r\n \"Metadata\",\r\n \"PublicAccess\",\r\n \"Last-Modified\",\r\n \"LeaseStatus\",\r\n \"LeaseState\",\r\n \"LeaseDuration\",\r\n \"HasImmutabilityPolicy\",\r\n \"HasLegalHold\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"con1\",\r\n \"con2\"\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"test3\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"Name\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"abc1\",\r\n \"edf1\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "dad3eeed-0981-4ee9-ba9c-79de642bb7c1" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "3fa39414-2fb3-409b-bce4-31c748cca7b0" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11999" + ], + "x-ms-correlation-request-id": [ + "b819df92-32d7-44ec-b7a5-6dd28dfdb607" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103052Z:b819df92-32d7-44ec-b7a5-6dd28dfdb607" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:51 GMT" + ], + "Content-Length": [ + "1007" + ], + "Content-Type": [ + "application/json" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default\",\r\n \"name\": \"DefaultInventoryPolicy\",\r\n \"type\": \"Microsoft.Storage/storageAccounts/inventoryPolicies\",\r\n \"properties\": {\r\n \"lastModifiedTime\": \"2021-05-12T10:30:51.0203504Z\",\r\n \"policy\": {\r\n \"enabled\": false,\r\n \"type\": \"Inventory\",\r\n \"rules\": [\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": true,\r\n \"name\": \"Test1\",\r\n \"definition\": {\r\n \"format\": \"Csv\",\r\n \"schedule\": \"Weekly\",\r\n \"objectType\": \"Blob\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Content-Length\",\r\n \"BlobType\",\r\n \"Snapshot\",\r\n \"VersionId\",\r\n \"IsCurrentVersion\"\r\n ],\r\n \"filters\": {\r\n \"blobTypes\": [\r\n \"blockBlob\",\r\n \"appendBlob\"\r\n ],\r\n \"prefixMatch\": [\r\n \"prefix1\",\r\n \"prefix2\"\r\n ],\r\n \"includeBlobVersions\": true,\r\n \"includeSnapshots\": true\r\n }\r\n }\r\n },\r\n {\r\n \"destination\": \"containerpstestrg7815\",\r\n \"enabled\": false,\r\n \"name\": \"Test2\",\r\n \"definition\": {\r\n \"format\": \"Parquet\",\r\n \"schedule\": \"Daily\",\r\n \"objectType\": \"Container\",\r\n \"schemaFields\": [\r\n \"name\",\r\n \"Metadata\",\r\n \"PublicAccess\"\r\n ],\r\n \"filters\": {\r\n \"prefixMatch\": [\r\n \"conpre1\",\r\n \"conpre2\"\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "0eac802f-8bb9-410b-85c8-8af08b30d657" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "f67456b4-5b49-425b-af41-bb873c2298fa" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14999" + ], + "x-ms-correlation-request-id": [ + "55dec3fa-34a7-40bb-817d-e7c8324e1255" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103046Z:55dec3fa-34a7-40bb-817d-e7c8324e1255" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:45 GMT" + ], + "Content-Type": [ + "text/plain; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815/inventoryPolicies/default?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNS9pbnZlbnRvcnlQb2xpY2llcy9kZWZhdWx0P2FwaS12ZXJzaW9uPTIwMjEtMDQtMDE=", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "85598498-0b1c-4952-a9f1-83fc63376528" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "a7df47a8-7cf5-4b70-9d26-8d9e57f60be2" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14998" + ], + "x-ms-correlation-request-id": [ + "b76239c8-92ac-45c9-ad45-732ce546a581" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103053Z:b76239c8-92ac-45c9-ad45-732ce546a581" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:30:53 GMT" + ], + "Content-Type": [ + "text/plain; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourceGroups/pstestrg7815/providers/Microsoft.Storage/storageAccounts/stopstestrg7815?api-version=2021-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlR3JvdXBzL3BzdGVzdHJnNzgxNS9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3N0b3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDIxLTA0LTAx", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "5365a372-8900-4c50-825f-f2c91a79aa7f" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Storage.StorageManagementClient/22.0.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "c2a58a82-2880-4844-bfbd-394b2844d3d8" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Server": [ + "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14997" + ], + "x-ms-correlation-request-id": [ + "3305ca47-68ac-4b99-89e4-5343337d6243" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103105Z:3305ca47-68ac-4b99-89e4-5343337d6243" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:31:04 GMT" + ], + "Content-Type": [ + "text/plain; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/resourcegroups/pstestrg7815?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL3Jlc291cmNlZ3JvdXBzL3BzdGVzdHJnNzgxNT9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "90295914-0dd6-4dc1-bfd4-9e95b7ae09af" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.32" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01" + ], + "Retry-After": [ + "15" + ], + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14999" + ], + "x-ms-request-id": [ + "68d0b926-94ea-46d4-afba-dba0bb34c705" + ], + "x-ms-correlation-request-id": [ + "68d0b926-94ea-46d4-afba-dba0bb34c705" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103110Z:68d0b926-94ea-46d4-afba-dba0bb34c705" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:31:09 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVTFSRlUxUlNSemM0TVRVdFJVRlRWRlZUTWtWVlFWQWlMQ0pxYjJKTWIyTmhkR2x2YmlJNkltVmhjM1IxY3pKbGRXRndJbjA/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.32" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01" + ], + "Retry-After": [ + "15" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11994" + ], + "x-ms-request-id": [ + "c2e18b80-45a3-4c92-9abd-5d5810a09c01" + ], + "x-ms-correlation-request-id": [ + "c2e18b80-45a3-4c92-9abd-5d5810a09c01" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103125Z:c2e18b80-45a3-4c92-9abd-5d5810a09c01" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:31:25 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVTFSRlUxUlNSemM0TVRVdFJVRlRWRlZUTWtWVlFWQWlMQ0pxYjJKTWIyTmhkR2x2YmlJNkltVmhjM1IxY3pKbGRXRndJbjA/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.32" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01" + ], + "Retry-After": [ + "15" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11993" + ], + "x-ms-request-id": [ + "3b4b0a5e-3715-4299-894c-13e70daedb85" + ], + "x-ms-correlation-request-id": [ + "3b4b0a5e-3715-4299-894c-13e70daedb85" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103141Z:3b4b0a5e-3715-4299-894c-13e70daedb85" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:31:40 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVTFSRlUxUlNSemM0TVRVdFJVRlRWRlZUTWtWVlFWQWlMQ0pxYjJKTWIyTmhkR2x2YmlJNkltVmhjM1IxY3pKbGRXRndJbjA/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.32" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11992" + ], + "x-ms-request-id": [ + "69b25f04-8312-496e-8a6c-d5e5692f14ec" + ], + "x-ms-correlation-request-id": [ + "69b25f04-8312-496e-8a6c-d5e5692f14ec" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103156Z:69b25f04-8312-496e-8a6c-d5e5692f14ec" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:31:56 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/45b60d85-fd72-427a-a708-f994d26e593e/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QU1RFU1RSRzc4MTUtRUFTVFVTMkVVQVAiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czJldWFwIn0?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvNDViNjBkODUtZmQ3Mi00MjdhLWE3MDgtZjk5NGQyNmU1OTNlL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVTFSRlUxUlNSemM0TVRVdFJVRlRWRlZUTWtWVlFWQWlMQ0pxYjJKTWIyTmhkR2x2YmlJNkltVmhjM1IxY3pKbGRXRndJbjA/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.30015.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19043.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.32" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11991" + ], + "x-ms-request-id": [ + "16e55a10-247c-4e5c-8cc0-f2eaad4cbfbf" + ], + "x-ms-correlation-request-id": [ + "16e55a10-247c-4e5c-8cc0-f2eaad4cbfbf" + ], + "x-ms-routing-request-id": [ + "SOUTHEASTASIA:20210512T103157Z:16e55a10-247c-4e5c-8cc0-f2eaad4cbfbf" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 12 May 2021 10:31:56 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + } + ], + "Names": { + "Test-StorageBlobInventory": [ + "pstestrg7815" + ] + }, + "Variables": { + "SubscriptionId": "45b60d85-fd72-427a-a708-f994d26e593e" + } +} \ No newline at end of file diff --git a/src/Storage/Storage.Management/Az.Storage.psd1 b/src/Storage/Storage.Management/Az.Storage.psd1 index 332ef0cc59c5..46dfe709801c 100644 --- a/src/Storage/Storage.Management/Az.Storage.psd1 +++ b/src/Storage/Storage.Management/Az.Storage.psd1 @@ -180,7 +180,9 @@ CmdletsToExport = 'Get-AzStorageAccount', 'Get-AzStorageAccountKey', 'Update-AzDataLakeGen2AclRecursive', 'Remove-AzDataLakeGen2AclRecursive', 'New-AzStorageEncryptionScope', 'Update-AzStorageEncryptionScope', 'Get-AzStorageEncryptionScope', - 'Copy-AzStorageBlob' + 'Copy-AzStorageBlob', + 'Set-AzStorageBlobInventoryPolicy', 'New-AzStorageBlobInventoryPolicyRule', + 'Get-AzStorageBlobInventoryPolicy', 'Remove-AzStorageBlobInventoryPolicy' # Variables to export from this module # VariablesToExport = @() diff --git a/src/Storage/Storage.Management/ChangeLog.md b/src/Storage/Storage.Management/ChangeLog.md index 6c219288597e..3c20ce757863 100644 --- a/src/Storage/Storage.Management/ChangeLog.md +++ b/src/Storage/Storage.Management/ChangeLog.md @@ -19,11 +19,16 @@ --> ## Upcoming Release * Supported file share snapshot - - `New-AzRmStorageShare` - - `Get-AzRmStorageShare` - - `Remove-AzRmStorageShare` + - `New-AzRmStorageShare` + - `Get-AzRmStorageShare` + - `Remove-AzRmStorageShare` * Supported remove file share with it's snapshot (leased and not leased), by default remove file share will fail when share has snapshot - - `Remove-AzRmStorageShare` + - `Remove-AzRmStorageShare` +* Supported Set/Get/Remove blob inventory policy + - `New-AzStorageBlobInventoryPolicyRule` + - `Set-AzStorageBlobInventoryPolicy` + - `Get-AzStorageBlobInventoryPolicy` + - `Remove-AzStorageBlobInventoryPolicy` ## Version 3.6.0 * Supported create/update storage account with KeyExpirationPeriod and SasExpirationPeriod diff --git a/src/Storage/Storage.Management/Models/PSBlobInventoryPolicy.cs b/src/Storage/Storage.Management/Models/PSBlobInventoryPolicy.cs new file mode 100644 index 000000000000..592579d1e5e5 --- /dev/null +++ b/src/Storage/Storage.Management/Models/PSBlobInventoryPolicy.cs @@ -0,0 +1,269 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Management.Storage.Models; +using Microsoft.WindowsAzure.Commands.Common.Attributes; +using System; +using System.Collections.Generic; + +namespace Microsoft.Azure.Commands.Management.Storage.Models +{ + /// + /// Wrapper of SDK type BlobInventoryPolicy + /// + public class PSBlobInventoryPolicy + { + public PSBlobInventoryPolicy() + { } + + public PSBlobInventoryPolicy(BlobInventoryPolicy policy, string ResourceGroupName, string StorageAccountName) + { + this.ResourceGroupName = ResourceGroupName; + this.StorageAccountName = StorageAccountName; + this.Id = policy.Id; + this.Name = policy.Name; + this.Type = policy.Type; + this.LastModifiedTime = policy.LastModifiedTime; + this.SystemData = policy.SystemData is null ? null : new PSSystemData(policy.SystemData); + + this.Enabled = policy.Policy.Enabled; + //this.Destination = policy.Policy.Destination; + + if (policy.Policy.Rules != null) + { + List psRules = new List(); + foreach (BlobInventoryPolicyRule rule in policy.Policy.Rules) + { + psRules.Add(new PSBlobInventoryPolicyRule(rule)); + } + this.Rules = psRules.ToArray(); + } + else + { + this.Rules = null; + } + } + + public BlobInventoryPolicy ParseBlobInventoryPolicy() + { + List invRules = ParseBlobInventoryPolicyRules(this.Rules); + + BlobInventoryPolicySchema policySchema = new BlobInventoryPolicySchema() + { + Enabled = this.Enabled, + //Destination = this.Destination, + Rules = invRules + }; + return new BlobInventoryPolicy( + policySchema, + this.Id, + this.Name, + this.Type, + this.LastModifiedTime, + this.SystemData is null ? null : this.SystemData.ParseSystemData() + ); + } + + public static List ParseBlobInventoryPolicyRules(PSBlobInventoryPolicyRule[] rules) + { + List invRules = null; + if (rules != null) + { + invRules = new List(); + foreach (PSBlobInventoryPolicyRule rule in rules) + { + invRules.Add(rule.ParseBlobInventoryPolicyRule()); + } + } + return invRules; + } + + [Ps1Xml(Label = "ResourceGroupName", Target = ViewControl.List, Position = 1)] + public string ResourceGroupName { get; set; } + [Ps1Xml(Label = "StorageAccountName", Target = ViewControl.List, Position = 0)] + public string StorageAccountName { get; set; } + [Ps1Xml(Label = "Id", Target = ViewControl.List, Position = 3)] + public string Id { get; set; } + public string Name { get; set; } + [Ps1Xml(Label = "Type", Target = ViewControl.List, Position = 2)] + public string Type { get; set; } + [Ps1Xml(Label = "LastModifiedTime", Target = ViewControl.List, Position = 4)] + public DateTime? LastModifiedTime { get; set; } + + //public PSBlobInventoryPolicySchema Policy { get; set; } + + [Ps1Xml(Label = "Enabled", Target = ViewControl.List, Position = 6)] + public bool Enabled { get; set; } + [Ps1Xml(Label = "Rules", Target = ViewControl.List, Position = 7)] + public PSBlobInventoryPolicyRule[] Rules { get; set; } + public PSSystemData SystemData { get; set; } + } + + /// + /// Wrapper of SDK type BlobInventoryPolicyRule + /// + public class PSBlobInventoryPolicyRule + { + public PSBlobInventoryPolicyRule() { } + public PSBlobInventoryPolicyRule(BlobInventoryPolicyRule rule) + { + this.Enabled = rule.Enabled; + this.Name = rule.Name; + this.Destination = rule.Destination; + this.Definition = rule.Definition is null ? null : new PSBlobInventoryPolicyDefinition(rule.Definition); + } + + public BlobInventoryPolicyRule ParseBlobInventoryPolicyRule() + { + return new BlobInventoryPolicyRule() + { + Enabled = this.Enabled, + Name = this.Name, + Destination = this.Destination, + Definition = this.Definition is null ? null : this.Definition.parseBlobInventoryPolicyDefinition() + }; + } + + public bool Enabled { get; set; } + + public string Name { get; set; } + + public string Destination { get; set; } + + public PSBlobInventoryPolicyDefinition Definition { get; set; } + } + + /// + /// Wrapper of SDK type BlobInventoryPolicyDefinition + /// + public class PSBlobInventoryPolicyDefinition + { + public PSBlobInventoryPolicyDefinition() { } + + public PSBlobInventoryPolicyDefinition(BlobInventoryPolicyDefinition Definition) + { + this.Filters = Definition.Filters is null ? null : new PSBlobInventoryPolicyFilter(Definition.Filters); + this.Format = Definition.Format; + this.Schedule = Definition.Schedule; + this.ObjectType = Definition.ObjectType; + this.SchemaFields = Definition.SchemaFields is null ? null : ((List)Definition.SchemaFields).ToArray(); + } + + public BlobInventoryPolicyDefinition parseBlobInventoryPolicyDefinition() + { + return new BlobInventoryPolicyDefinition(this.Format, this.Schedule, this.ObjectType, + this.SchemaFields is null? null: new List(this.SchemaFields), + this.Filters is null? null : this.Filters.ParseBlobInventoryPolicyFilter()); + } + + public PSBlobInventoryPolicyFilter Filters { get; set; } + + //Possible values include: 'Csv', 'Parquet' + public string Format { get; set; } + + // Possible values include: 'Daily', 'Weekly' + public string Schedule { get; set; } + + // Possible values include: 'Blob', 'Container' + public string ObjectType { get; set; } + + // Valid values for this field for the blob object type include: Name, Creation-Time, Last-Modified, Content-Length, + // Content-MD5, BlobType, AccessTier, AccessTierChangeTime, Expiry-Time, hdi_isfolder, + // Owner, Group, Permissions, Acl, Snapshot, VersionId, IsCurrentVersion, Metadata, LastAccessTime. + // Valid values for container object type include Name, Last-Modified, + // Metadata, LeaseStatus, LeaseState, LeaseDuration, PublicAccess, HasImmutabilityPolicy, HasLegalHold. + public string[] SchemaFields { get; set; } + + //private string[] BlobSchemaField = new string[] {"Name", "Creation-Time", "Last-Modified", "Content-Length", "Content-MD5", "BlobType", "AccessTier", "AccessTierChangeTime", + // "Expiry-Time", "hdi_isfolder", "Owner", "Group", "Permissions", "Acl", "Snapshot", "VersionId", "IsCurrentVersion", "Metadata", "LastAccessTime"}; + //private string[] ContainerSchemaField = new string[] { "Name", "Last-Modified", "Metadata", "LeaseStatus", "LeaseState", "LeaseDuration", "PublicAccess", "HasImmutabilityPolicy", "HasLegalHold" }; + + //public const string[] BlobInventoryPolicyRuleFormat = {"Csv", "Parquet"}; + + //public static string NormalizeString(string input, string[] validValue) + //{ + // foreach (string s in validValue) + // { + // if (input.ToLower() == s.ToLower()) + // { + // return s; + // } + // } + // return input; + //} + + } + + /// + /// Wrapper of SDK type BlobInventoryPolicyFilter + /// + public class PSBlobInventoryPolicyFilter + { + public PSBlobInventoryPolicyFilter() { } + + public PSBlobInventoryPolicyFilter(BlobInventoryPolicyFilter filters) + { + this.PrefixMatch = PSManagementPolicyRuleFilter.StringListToArray(filters.PrefixMatch); + this.BlobTypes = PSManagementPolicyRuleFilter.StringListToArray(filters.BlobTypes); + this.IncludeBlobVersions = filters.IncludeBlobVersions; + this.IncludeSnapshots = filters.IncludeSnapshots; + } + + public BlobInventoryPolicyFilter ParseBlobInventoryPolicyFilter() + { + return new BlobInventoryPolicyFilter() + { + PrefixMatch = PSManagementPolicyRuleFilter.StringArrayToList(this.PrefixMatch), + BlobTypes = PSManagementPolicyRuleFilter.StringArrayToList(this.BlobTypes), + IncludeSnapshots = this.IncludeSnapshots, + IncludeBlobVersions = this.IncludeBlobVersions + }; + } + + public string[] PrefixMatch { get; set; } + public string[] BlobTypes { get; set; } + public bool? IncludeBlobVersions { get; set; } + public bool? IncludeSnapshots { get; set; } + } + + /// + /// Wrapper of SDK type SystemData + /// + public class PSSystemData + { + public PSSystemData() { } + + public PSSystemData(SystemData SystemData) + { + this.CreatedBy = SystemData.CreatedBy; + this.CreatedByType = SystemData.CreatedByType; + this.CreatedAt = SystemData.CreatedAt; + this.LastModifiedBy = SystemData.LastModifiedBy; + this.LastModifiedByType = SystemData.LastModifiedByType; + this.LastModifiedAt = SystemData.LastModifiedAt; + } + + public SystemData ParseSystemData() + { + return new SystemData(this.CreatedBy, this.CreatedByType, this.CreatedAt, this.LastModifiedBy, this.LastModifiedByType, this.LastModifiedAt); + } + + public string CreatedBy { get; set; } + public string CreatedByType { get; set; } + public DateTime? CreatedAt { get; set; } + public string LastModifiedBy { get; set; } + public string LastModifiedByType { get; set; } + public DateTime? LastModifiedAt { get; set; } + } +} diff --git a/src/Storage/Storage.Management/Storage.Management.format.ps1xml b/src/Storage/Storage.Management/Storage.Management.format.ps1xml index 1844ce520bb9..8d2141b22847 100644 --- a/src/Storage/Storage.Management/Storage.Management.format.ps1xml +++ b/src/Storage/Storage.Management/Storage.Management.format.ps1xml @@ -799,5 +799,155 @@ + + Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicyRule + + Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicyRule + + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + + Left + Name + + + Left + Enabled + + + Left + Destination + + + Left + $_.Definition.ObjectType + + + Left + $_.Definition.Format + + + Left + $_.Definition.Schedule + + + Left + $_.Definition.Filters.IncludeSnapshots + + + Left + $_.Definition.Filters.IncludeBlobVersions + + + Left + $_.Definition.Filters.BlobTypes + + + Left + $_.Definition.Filters.PrefixMatch + + + Left + $_.Definition.SchemaFields + + + + + + + + Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicy + + Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicy + + + + + + + StorageAccountName + + + + ResourceGroupName + + + + Name + + + + + Id + + + + Type + + + + LastModifiedTime + + + + $_.Enabled + + + + $_.Rules + + + + + + \ No newline at end of file diff --git a/src/Storage/Storage.Management/StorageAccount/GetAzureStorageAccount.cs b/src/Storage/Storage.Management/StorageAccount/GetAzureStorageAccount.cs index f253649af99e..ec5dace19b60 100644 --- a/src/Storage/Storage.Management/StorageAccount/GetAzureStorageAccount.cs +++ b/src/Storage/Storage.Management/StorageAccount/GetAzureStorageAccount.cs @@ -125,6 +125,7 @@ public override void ExecuteCmdlet() this.ResourceGroupName, this.Name, expandproperties); + WriteStorageAccount(storageAccount); } diff --git a/src/Storage/Storage.Management/StorageAccount/GetAzureStorageBlobInventoryPolicy.cs b/src/Storage/Storage.Management/StorageAccount/GetAzureStorageBlobInventoryPolicy.cs new file mode 100644 index 000000000000..1d3c234f8f33 --- /dev/null +++ b/src/Storage/Storage.Management/StorageAccount/GetAzureStorageBlobInventoryPolicy.cs @@ -0,0 +1,105 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.Management.Storage.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using Microsoft.Azure.Management.Storage; +using Microsoft.Azure.Management.Storage.Models; +using Microsoft.WindowsAzure.Commands.Common.CustomAttributes; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.Management.Storage +{ + [Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "StorageBlobInventoryPolicy", DefaultParameterSetName = AccountNameParameterSet), OutputType(typeof(PSBlobInventoryPolicy))] + public class GetAzureStorageBlobInventoryPolicyCommand : StorageAccountBaseCmdlet + { + /// + /// AccountName Parameter Set + /// + private const string AccountNameParameterSet = "AccountName"; + + /// + /// Account object parameter set + /// + private const string AccountObjectParameterSet = "AccountObject"; + + /// + /// Account ResourceId parameter set + /// + private const string AccountResourceIdParameterSet = "AccountResourceId"; + + [Parameter( + Position = 0, + Mandatory = true, + HelpMessage = "Resource Group Name.", + ParameterSetName = AccountNameParameterSet)] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty] + public string ResourceGroupName { get; set; } + + [Parameter( + Position = 1, + Mandatory = true, + HelpMessage = "Storage Account Name.", + ParameterSetName = AccountNameParameterSet)] + [ResourceNameCompleter("Microsoft.Storage/storageAccounts", nameof(ResourceGroupName))] + [Alias(AccountNameAlias)] + [ValidateNotNullOrEmpty] + public string StorageAccountName { get; set; } + + [Parameter( + Position = 0, + Mandatory = true, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Storage Account Resource Id.", + ParameterSetName = AccountResourceIdParameterSet)] + [ValidateNotNullOrEmpty] + public string StorageAccountResourceId { get; set; } + + [Parameter(Mandatory = true, + HelpMessage = "Storage account object", + ValueFromPipeline = true, + ParameterSetName = AccountObjectParameterSet)] + [ValidateNotNullOrEmpty] + public PSStorageAccount StorageAccount { get; set; } + + public override void ExecuteCmdlet() + { + base.ExecuteCmdlet(); + + switch (ParameterSetName) + { + case AccountObjectParameterSet: + this.ResourceGroupName = StorageAccount.ResourceGroupName; + this.StorageAccountName = StorageAccount.StorageAccountName; + break; + case AccountResourceIdParameterSet: + ResourceIdentifier accountResource = new ResourceIdentifier(StorageAccountResourceId); + this.ResourceGroupName = accountResource.ResourceGroupName; + this.StorageAccountName = accountResource.ResourceName; + break; + default: + // For AccountNameParameterSet, the ResourceGroupName and StorageAccountName can get from input directly + break; + } + + BlobInventoryPolicy policy = this.StorageClient.BlobInventoryPolicies.Get( + this.ResourceGroupName, + this.StorageAccountName); + + WriteObject(new PSBlobInventoryPolicy(policy, this.ResourceGroupName, this.StorageAccountName), true); + } + } +} diff --git a/src/Storage/Storage.Management/StorageAccount/NewAzureStorageBlobInventoryPolicyRule.cs b/src/Storage/Storage.Management/StorageAccount/NewAzureStorageBlobInventoryPolicyRule.cs new file mode 100644 index 000000000000..8480a189bedc --- /dev/null +++ b/src/Storage/Storage.Management/StorageAccount/NewAzureStorageBlobInventoryPolicyRule.cs @@ -0,0 +1,268 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.Management.Storage.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Storage; +using Microsoft.Azure.Management.Storage.Models; +using Microsoft.WindowsAzure.Commands.Common.CustomAttributes; +using System.Collections.Generic; +using System.Management.Automation; +using System.Reflection; +using StorageModels = Microsoft.Azure.Management.Storage.Models; + +namespace Microsoft.Azure.Commands.Management.Storage +{ + [Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "StorageBlobInventoryPolicyRule", DefaultParameterSetName = BlobRuleParameterSet), OutputType(typeof(PSBlobInventoryPolicyRule))] + public class NewAzureStorageBlobInventoryPolicyRuleCommand : StorageAccountBaseCmdlet + { + protected const string BlobRuleParameterSet = "BlobRuleParameterSet"; + protected const string ContainerRuleParameterSet = "ContainerRuleParameterSet"; + + [Parameter(Mandatory = true, + Position = 0, + HelpMessage = "A rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy.")] + [ValidateNotNullOrEmpty] + public string Name { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "The rule is disabled if set it.")] + public SwitchParameter Disabled { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "The container name where blob inventory files are stored. Must be pre-created.")] + [ValidateNotNullOrEmpty] + public string Destination { get; set; } + + [Parameter(Mandatory = true, + HelpMessage = "Specifies the format for the inventory files. Possible values include: 'Csv', 'Parquet'")] + [ValidateSet(BlobInventoryPolicyRuleFormat.Csv, + BlobInventoryPolicyRuleFormat.Parquet, + IgnoreCase = true)] + [ValidateNotNullOrEmpty] + public string Format { get; set; } + + [Parameter(Mandatory = true, + HelpMessage = "This field is used to schedule an inventory formation. Possible values include: 'Daily', 'Weekly'")] + [ValidateSet(BlobInventoryPolicyRuleSchedule.Daily, + BlobInventoryPolicyRuleSchedule.Weekly, + IgnoreCase = true)] + [ValidateNotNullOrEmpty] + public string Schedule { get; set; } + + //[Parameter(Mandatory = false, + // ParameterSetName = BlobRuleParameterSet, + // HelpMessage = "The rule is for blob inventory.")] + //[Parameter(Mandatory = false, + // ParameterSetName = BlobRuleWithFilterParameterSet, + // HelpMessage = "The rule is for blob inventory.")] + //public SwitchParameter IsBlobRule { get; set; } + + //[Parameter(Mandatory = false, + // ParameterSetName = ContainerRuleParameterSet, + // HelpMessage = "The rule is for container inventory.")] + //public SwitchParameter IsContainerRule { get; set; } + + [Parameter(Mandatory = true, + ParameterSetName = BlobRuleParameterSet, + HelpMessage = "Specifies the fields and properties of the Blob object to be included in the inventory. Valid values include: " + + "Name, Creation-Time, Last-Modified, Content-Length, Content-MD5, BlobType, AccessTier, AccessTierChangeTime, Expiry-Time, hdi_isfolder, Owner, " + + "Group, Permissions, Acl, Metadata, LastAccessTime. 'Name' is a required schemafield." + + "If specify '-IncludeSnapshot', will include 'Snapshot' in the inventory. If specify '-IncludeBlobVersion', will include 'VersionId, 'IsCurrentVersion' in the inventory.")] + [ValidateSet(BlobInventoryPolicyBlobSchemaField.Name, + BlobInventoryPolicyBlobSchemaField.CreationTime, + BlobInventoryPolicyBlobSchemaField.LastModified, + BlobInventoryPolicyBlobSchemaField.ContentLength, + BlobInventoryPolicyBlobSchemaField.ContentMD5, + BlobInventoryPolicyBlobSchemaField.BlobType, + BlobInventoryPolicyBlobSchemaField.AccessTier, + BlobInventoryPolicyBlobSchemaField.AccessTierChangeTime, + BlobInventoryPolicyBlobSchemaField.ExpiryTime, + BlobInventoryPolicyBlobSchemaField.hdiisfolder, + BlobInventoryPolicyBlobSchemaField.Owner, + BlobInventoryPolicyBlobSchemaField.Group, + BlobInventoryPolicyBlobSchemaField.Permissions, + BlobInventoryPolicyBlobSchemaField.Acl, + BlobInventoryPolicyBlobSchemaField.Metadata, + BlobInventoryPolicyBlobSchemaField.LastAccessTime, + IgnoreCase = true)] + [ValidateNotNullOrEmpty] + public string[] BlobSchemaField { get; set; } + + [Parameter(Mandatory = true, + ParameterSetName = ContainerRuleParameterSet, + HelpMessage = "Specifies the fields and properties of the container object to be included in the inventory. Valid values include: " + + "Name, Last-Modified, Metadata, LeaseStatus, LeaseState, LeaseDuration, PublicAccess, HasImmutabilityPolicy, HasLegalHold. " + + "'Name' is a required schemafield.")] + [ValidateSet(BlobInventoryPolicyContainerSchemaField.Name, + BlobInventoryPolicyContainerSchemaField.LastModified, + BlobInventoryPolicyContainerSchemaField.Metadata, + BlobInventoryPolicyContainerSchemaField.LeaseStatus, + BlobInventoryPolicyContainerSchemaField.LeaseState, + BlobInventoryPolicyContainerSchemaField.LeaseDuration, + BlobInventoryPolicyContainerSchemaField.PublicAccess, + BlobInventoryPolicyContainerSchemaField.HasImmutabilityPolicy, + BlobInventoryPolicyContainerSchemaField.HasLegalHold, + IgnoreCase = true)] + [ValidateNotNullOrEmpty] + public string[] ContainerSchemaField { get; set; } + + [Parameter(Mandatory = true, + ParameterSetName = BlobRuleParameterSet, + HelpMessage = "Sets the blob types for the blob inventory policy rule. Valid values include blockBlob, appendBlob, pageBlob. Hns accounts does not support pageBlobs.")] + [ValidateSet(AzureBlobType.BlockBlob, + AzureBlobType.PageBlob, + AzureBlobType.AppendBlob, + IgnoreCase = true)] + [ValidateNotNullOrEmpty] + public string[] BlobType { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "Sets an array of strings for blob prefixes to be matched..")] + [ValidateNotNullOrEmpty] + public string[] PrefixMatch { get; set; } + + [Parameter(Mandatory = false, + ParameterSetName = BlobRuleParameterSet, + HelpMessage = "The rule is disabled if set it.")] + public SwitchParameter IncludeSnapshot { get; set; } + + [Parameter(Mandatory = false, + ParameterSetName = BlobRuleParameterSet, + HelpMessage = "The rule is disabled if set it.")] + public SwitchParameter IncludeBlobVersion { get; set; } + + public override void ExecuteCmdlet() + { + base.ExecuteCmdlet(); + + PSBlobInventoryPolicyDefinition definition = new PSBlobInventoryPolicyDefinition(); + if (this.BlobType != null || this.PrefixMatch != null || this.IncludeSnapshot.IsPresent || this.IncludeBlobVersion.IsPresent) + { + definition.Filters = new PSBlobInventoryPolicyFilter() + { + BlobTypes = NormalizeStringArray(this.BlobType), + PrefixMatch = this.PrefixMatch + }; + if (this.IncludeBlobVersion.IsPresent) + { + definition.Filters.IncludeBlobVersions = true; + } + if (this.IncludeSnapshot.IsPresent) + { + definition.Filters.IncludeSnapshots = true; + } + } + definition.Format = NormalizeString(this.Format); + definition.Schedule = NormalizeString(this.Schedule); + + // Set schemaFields + List schemaFieldList = null; + if (ParameterSetName == ContainerRuleParameterSet) // Container inventory + { + definition.ObjectType = BlobInventoryPolicyRuleObjectType.Container; + + // ContainerSchemaField can't be null, so schemaFieldList won't be null + schemaFieldList = new List(NormalizeStringArray(this.ContainerSchemaField)); + } + else // Blob inventory + { + definition.ObjectType = BlobInventoryPolicyRuleObjectType.Blob; + + // BlobInventoryPolicyBlobSchemaField can't be null, so schemaFieldList won't be null + schemaFieldList = new List(NormalizeStringArray(this.BlobSchemaField)); + if (this.IncludeSnapshot.IsPresent) + { + schemaFieldList.Add(BlobInventoryPolicyBlobSchemaField.Snapshot); + } + if (this.IncludeBlobVersion.IsPresent) + { + schemaFieldList.Add(BlobInventoryPolicyBlobSchemaField.VersionId); + schemaFieldList.Add(BlobInventoryPolicyBlobSchemaField.IsCurrentVersion); + } + } + if (!schemaFieldList.Contains(BlobInventoryPolicyBlobSchemaField.Name)) + { + WriteWarning("The SchemaFields miss require field 'Name', so add 'Name' to the SchemaFields."); + schemaFieldList.Add(BlobInventoryPolicyBlobSchemaField.Name); + } + definition.SchemaFields = schemaFieldList.ToArray(); + + PSBlobInventoryPolicyRule rule = new PSBlobInventoryPolicyRule() + { + Name = this.Name, + Enabled = Disabled.IsPresent ? false : true, + Definition = definition, + Destination = this.Destination + }; + + WriteObject(rule); + } + + protected struct BlobInventoryPolicyRuleFormat + { + public const string Csv = "Csv"; + public const string Parquet = "Parquet"; + } + + protected struct BlobInventoryPolicyContainerSchemaField + { + public const string Name = "Name"; + public const string LastModified = "Last-Modified"; + public const string Metadata = "Metadata"; + public const string LeaseStatus = "LeaseStatus"; + public const string LeaseState = "LeaseState"; + public const string LeaseDuration = "LeaseDuration"; + public const string PublicAccess = "PublicAccess"; + public const string HasImmutabilityPolicy = "HasImmutabilityPolicy"; + public const string HasLegalHold = "HasLegalHold"; + } + + protected struct BlobInventoryPolicyBlobSchemaField + { + public const string Name = "Name"; + public const string CreationTime = "Creation-Time"; + public const string LastModified = "Last-Modified"; + public const string ContentLength = "Content-Length"; + public const string ContentMD5 = "Content-MD5"; + public const string BlobType = "BlobType"; + public const string AccessTier = "AccessTier"; + public const string AccessTierChangeTime = "AccessTierChangeTime"; + public const string ExpiryTime = "Expiry-Time"; + public const string hdiisfolder = "hdi_isfolder"; + public const string Owner = "Owner"; + public const string Group = "Group"; + public const string Permissions = "Permissions"; + public const string Acl = "Acl"; + public const string Snapshot = "Snapshot"; + public const string VersionId = "VersionId"; + public const string IsCurrentVersion = "IsCurrentVersion"; + public const string Metadata = "Metadata"; + public const string LastAccessTime = "LastAccessTime"; + } + + protected struct BlobInventoryPolicyRuleSchedule + { + public const string Daily = "Daily"; + public const string Weekly = "Weekly"; + } + + protected struct BlobInventoryPolicyRuleObjectType + { + public const string Blob = "Blob"; + public const string Container = "Container"; + } + } +} diff --git a/src/Storage/Storage.Management/StorageAccount/RemoveAzureStorageBlobInventoryPolicy.cs b/src/Storage/Storage.Management/StorageAccount/RemoveAzureStorageBlobInventoryPolicy.cs new file mode 100644 index 000000000000..74610ef35315 --- /dev/null +++ b/src/Storage/Storage.Management/StorageAccount/RemoveAzureStorageBlobInventoryPolicy.cs @@ -0,0 +1,130 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.Management.Storage.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using Microsoft.Azure.Management.Storage; +using Microsoft.Azure.Management.Storage.Models; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.Management.Storage +{ + [Cmdlet("Remove", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "StorageBlobInventoryPolicy", SupportsShouldProcess = true, DefaultParameterSetName = AccountNameParameterSet), OutputType(typeof(bool))] + public class RemoveAzureStorageBlobInventoryPolicyCommand : StorageAccountBaseCmdlet + { + /// + /// AccountName Parameter Set + /// + private const string AccountNameParameterSet = "AccountName"; + + /// + /// Account object parameter set + /// + private const string AccountObjectParameterSet = "AccountObject"; + + /// + /// ManagementPolicy object parameter set + /// + private const string PolicyObjectParameterSet = "PolicyObject"; + + /// + /// Account ResourceId parameter set + /// + private const string AccountResourceIdParameterSet = "AccountResourceId"; + + [Parameter( + Position = 0, + Mandatory = true, + HelpMessage = "Resource Group Name.", + ParameterSetName = AccountNameParameterSet)] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty] + public string ResourceGroupName { get; set; } + + [Parameter( + Position = 1, + Mandatory = true, + HelpMessage = "Storage Account Name.", + ParameterSetName = AccountNameParameterSet)] + [ResourceNameCompleter("Microsoft.Storage/storageAccounts", nameof(ResourceGroupName))] + [Alias(AccountNameAlias)] + [ValidateNotNullOrEmpty] + public string StorageAccountName { get; set; } + + [Parameter(Mandatory = true, + HelpMessage = "Storage account object", + ValueFromPipeline = true, + ParameterSetName = AccountObjectParameterSet)] + [ValidateNotNullOrEmpty] + public PSStorageAccount StorageAccount { get; set; } + + [Parameter( + Position = 0, + Mandatory = true, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Storage Account Resource Id.", + ParameterSetName = AccountResourceIdParameterSet)] + [ValidateNotNullOrEmpty] + public string StorageAccountResourceId { get; set; } + + [Alias("BlobInventoryPolicy")] + [Parameter(Position = 0, + Mandatory = true, + HelpMessage = "BlobInventoryPolicy Object to Remove", + ValueFromPipeline = true, + ParameterSetName = PolicyObjectParameterSet)] + [ValidateNotNullOrEmpty] + public PSBlobInventoryPolicy InputObject { get; set; } + + [Parameter(Mandatory = false)] + public SwitchParameter PassThru { get; set; } + + public override void ExecuteCmdlet() + { + base.ExecuteCmdlet(); + if (ShouldProcess(this.StorageAccountName, "Remove Storage Account Blob Inventory Policy")) + { + switch (ParameterSetName) + { + case AccountObjectParameterSet: + this.ResourceGroupName = StorageAccount.ResourceGroupName; + this.StorageAccountName = StorageAccount.StorageAccountName; + break; + case AccountResourceIdParameterSet: + ResourceIdentifier accountResource = new ResourceIdentifier(StorageAccountResourceId); + this.ResourceGroupName = accountResource.ResourceGroupName; + this.StorageAccountName = accountResource.ResourceName; + break; + case PolicyObjectParameterSet: + this.ResourceGroupName = InputObject.ResourceGroupName; + this.StorageAccountName = InputObject.StorageAccountName; + break; + default: + // For AccountNameParameterSet, the ResourceGroupName and StorageAccountName can get from input directly + break; + } + + this.StorageClient.BlobInventoryPolicies.Delete( + this.ResourceGroupName, + this.StorageAccountName); + + if (PassThru.IsPresent) + { + WriteObject(true); + } + } + } + } +} diff --git a/src/Storage/Storage.Management/StorageAccount/SetAzureStorageBlobInventoryPolicy.cs b/src/Storage/Storage.Management/StorageAccount/SetAzureStorageBlobInventoryPolicy.cs new file mode 100644 index 000000000000..a26f7492a334 --- /dev/null +++ b/src/Storage/Storage.Management/StorageAccount/SetAzureStorageBlobInventoryPolicy.cs @@ -0,0 +1,217 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.Management.Storage.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Storage; +using Microsoft.Azure.Management.Storage.Models; +using System.Management.Automation; +using Newtonsoft.Json.Linq; +using System.Globalization; +using System.Collections.Generic; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using Microsoft.WindowsAzure.Commands.Common.CustomAttributes; + +namespace Microsoft.Azure.Commands.Management.Storage +{ + [Cmdlet("Set", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "StorageBlobInventoryPolicy", SupportsShouldProcess = true, DefaultParameterSetName = AccountNamePolicyRuleParameterSet), OutputType(typeof(PSManagementPolicy))] + public class SetAzureStorageBlobInventoryPolicyCommand : StorageAccountBaseCmdlet + { + /// + /// AccountName Parameter Set + /// + private const string AccountNamePolicyRuleParameterSet = "AccountNamePolicyRule"; + + /// + /// AccountName Parameter Set + /// + private const string AccountNamePolicyObjectParameterSet = "AccountNamePolicyObject"; + + /// + /// Account object PolicyRules parameter set + /// + private const string AccountObjectPolicyRuleParameterSet = "AccountObjectPolicyRule"; + + /// + /// Account object Policy Object parameter set + /// + private const string AccountObjectPolicyObjectParameterSet = "AccountObjectPolicyObject"; + + /// + /// Account ResourceId PolicyRules parameter set + /// + private const string AccountResourceIdPolicyRuleParameterSet = "AccountResourceIdPolicyRule"; + + /// + /// Account ResourceId Policy Object parameter set + /// + private const string AccountResourceIdPolicyObjectParameterSet = "AccountResourceIdPolicyObject"; + + [Parameter( + Position = 0, + Mandatory = true, + HelpMessage = "Resource Group Name.", + ParameterSetName = AccountNamePolicyRuleParameterSet)] + [Parameter( + Position = 0, + Mandatory = true, + HelpMessage = "Resource Group Name.", + ParameterSetName = AccountNamePolicyObjectParameterSet)] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty] + public string ResourceGroupName { get; set; } + + [Parameter( + Position = 1, + Mandatory = true, + HelpMessage = "Storage Account Name.", + ParameterSetName = AccountNamePolicyRuleParameterSet)] + [Parameter( + Position = 1, + Mandatory = true, + HelpMessage = "Storage Account Name.", + ParameterSetName = AccountNamePolicyObjectParameterSet)] + [ResourceNameCompleter("Microsoft.Storage/storageAccounts", nameof(ResourceGroupName))] + [Alias(AccountNameAlias)] + [ValidateNotNullOrEmpty] + public string StorageAccountName { get; set; } + + [Parameter(Mandatory = true, + HelpMessage = "Storage account object", + ValueFromPipeline = true, + ParameterSetName = AccountObjectPolicyRuleParameterSet)] + [Parameter(Mandatory = true, + HelpMessage = "Storage account object", + ValueFromPipeline = true, + ParameterSetName = AccountObjectPolicyObjectParameterSet)] + [ValidateNotNullOrEmpty] + public PSStorageAccount StorageAccount { get; set; } + + [Parameter( + Position = 0, + Mandatory = true, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Storage Account Resource Id.", + ParameterSetName = AccountResourceIdPolicyRuleParameterSet)] + [Parameter( + Position = 0, + Mandatory = true, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Storage Account Resource Id.", + ParameterSetName = AccountResourceIdPolicyObjectParameterSet)] + [ValidateNotNullOrEmpty] + public string StorageAccountResourceId { get; set; } + + [Parameter( + Mandatory = true, + ValueFromPipeline = true, + HelpMessage = "The Blob Inventory Policy rules. Get the object with New-AzStorageBlobInventoryPolicyRule cmdlet.", + ParameterSetName = AccountNamePolicyRuleParameterSet)] + [Parameter( + Mandatory = true, + ValueFromPipeline = true, + HelpMessage = "The Blob Inventory Policy rules. Get the object with New-AzStorageBlobInventoryPolicyRule cmdlet.", + ParameterSetName = AccountObjectPolicyRuleParameterSet)] + [Parameter( + Mandatory = true, + ValueFromPipeline = true, + HelpMessage = "The Blob Inventory Policy rules. Get the object with New-AzStorageBlobInventoryPolicyRule cmdlet.", + ParameterSetName = AccountResourceIdPolicyRuleParameterSet)] + [ValidateNotNullOrEmpty] + public PSBlobInventoryPolicyRule[] Rule { get; set; } + + [Parameter( + Mandatory = false, + HelpMessage = "The Blob Inventory Policy is enabled by default, specify this parameter to disable it.", + ParameterSetName = AccountNamePolicyRuleParameterSet)] + [Parameter( + Mandatory = false, + HelpMessage = "The Blob Inventory Policy is enabled by default, specify this parameter to disable it.", + ParameterSetName = AccountObjectPolicyRuleParameterSet)] + [Parameter( + Mandatory = false, + HelpMessage = "The Blob Inventory Policy is enabled by default, specify this parameter to disable it.", + ParameterSetName = AccountResourceIdPolicyRuleParameterSet)] + public SwitchParameter Disabled { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "Blob Inventory Policy Object to Set", + ValueFromPipeline = true, + ValueFromPipelineByPropertyName = true, + ParameterSetName = AccountNamePolicyObjectParameterSet)] + [Parameter( + Mandatory = true, + HelpMessage = "Blob Inventory Policy Object to Set", + ValueFromPipeline = true, + ValueFromPipelineByPropertyName = true, + ParameterSetName = AccountObjectPolicyObjectParameterSet)] + [Parameter( + Mandatory = true, + HelpMessage = "Blob Inventory Policy Object to Set", + ValueFromPipeline = true, + ValueFromPipelineByPropertyName = true, + ParameterSetName = AccountResourceIdPolicyObjectParameterSet)] + [ValidateNotNullOrEmpty] + public PSBlobInventoryPolicy Policy { get; set; } + + public override void ExecuteCmdlet() + { + base.ExecuteCmdlet(); + if (ShouldProcess(this.StorageAccountName, "Set Storage Account Blob Inventory Policy")) + { + if ((this.ParameterSetName == AccountObjectPolicyRuleParameterSet) + || (this.ParameterSetName == AccountObjectPolicyObjectParameterSet)) + { + this.ResourceGroupName = StorageAccount.ResourceGroupName; + this.StorageAccountName = StorageAccount.StorageAccountName; + } + else if ((this.ParameterSetName == AccountResourceIdPolicyRuleParameterSet) + || (this.ParameterSetName == AccountResourceIdPolicyObjectParameterSet)) + { + ResourceIdentifier accountResource = new ResourceIdentifier(StorageAccountResourceId); + this.ResourceGroupName = accountResource.ResourceGroupName; + this.StorageAccountName = accountResource.ResourceName; + } + BlobInventoryPolicy blobInventoryPolicy; + + switch (this.ParameterSetName) + { + case AccountObjectPolicyRuleParameterSet: + case AccountNamePolicyRuleParameterSet: + case AccountResourceIdPolicyRuleParameterSet: + blobInventoryPolicy = this.StorageClient.BlobInventoryPolicies.CreateOrUpdate( + this.ResourceGroupName, + this.StorageAccountName, + new BlobInventoryPolicySchema( + enabled: !(this.Disabled.IsPresent), + rules: PSBlobInventoryPolicy.ParseBlobInventoryPolicyRules(this.Rule))); + break; + case AccountObjectPolicyObjectParameterSet: + case AccountNamePolicyObjectParameterSet: + case AccountResourceIdPolicyObjectParameterSet: + blobInventoryPolicy = this.StorageClient.BlobInventoryPolicies.CreateOrUpdate( + this.ResourceGroupName, + this.StorageAccountName, + this.Policy.ParseBlobInventoryPolicy().Policy); + break; + default: + throw new PSArgumentException(string.Format(CultureInfo.InvariantCulture, "Invalid ParameterSet: {0}", this.ParameterSetName)); + } + + WriteObject(new PSBlobInventoryPolicy(blobInventoryPolicy, this.ResourceGroupName, this.StorageAccountName), true); + } + } + } +} diff --git a/src/Storage/Storage.Management/StorageAccount/StorageAccountBaseCmdlet.cs b/src/Storage/Storage.Management/StorageAccount/StorageAccountBaseCmdlet.cs index f3dfd6c3e3c7..76eef2ce8aba 100644 --- a/src/Storage/Storage.Management/StorageAccount/StorageAccountBaseCmdlet.cs +++ b/src/Storage/Storage.Management/StorageAccount/StorageAccountBaseCmdlet.cs @@ -59,9 +59,9 @@ protected struct AccountAccessTier } protected struct AzureBlobType { - internal const string BlockBlob = "blockBlob"; - internal const string PageBlob = "pageBlob"; - internal const string AppendBlob = "appendBlob"; + public const string BlockBlob = "blockBlob"; + public const string PageBlob = "pageBlob"; + public const string AppendBlob = "appendBlob"; } protected struct ManagementPolicyAction { @@ -175,5 +175,33 @@ public static string GetIdentityTypeString(string inputIdentityType) } throw new ArgumentException("The value for AssignIdentityType is not valid, the valid value are: \"None\", \"SystemAssigned\", \"UserAssigned\", or \"SystemAssignedUserAssigned\"", "AssignIdentityType"); } + + // Make the input string value case is aligned with the test API defination. + public static string NormalizeString(string input) + { + foreach (var field in typeof(T).GetFields()) + { + if (input.ToLower() == field.GetRawConstantValue().ToString().ToLower()) + { + return (string)field.GetRawConstantValue().ToString(); + } + } + return input; + } + + // Make the input string[] value case is aligned with the test API defination. + public static string[] NormalizeStringArray(string[] input) + { + if (input != null) + { + List stringList = new List(); + foreach (string s in input) + { + stringList.Add(NormalizeString(s)); + } + return stringList.ToArray(); + } + return input; + } } } diff --git a/src/Storage/Storage.Management/help/Az.Storage.md b/src/Storage/Storage.Management/help/Az.Storage.md index d62f6b18cc44..cce3683a29ff 100644 --- a/src/Storage/Storage.Management/help/Az.Storage.md +++ b/src/Storage/Storage.Management/help/Az.Storage.md @@ -92,6 +92,9 @@ Downloads a storage blob. ### [Get-AzStorageBlobCopyState](Get-AzStorageBlobCopyState.md) Gets the copy status of an Azure Storage blob. +### [Get-AzStorageBlobInventoryPolicy](Get-AzStorageBlobInventoryPolicy.md) +Gets blob inventory policy from a Storage account. + ### [Get-AzStorageBlobQueryResult](Get-AzStorageBlobQueryResult.md) Applies a simple Structured Query Language (SQL) statement on a blob's contents and save only the queried subset of the data to a local file. @@ -191,6 +194,9 @@ Creates a ManagementPolicy rule object, which can be used in Set-AzStorageAccoun ### [New-AzStorageAccountSASToken](New-AzStorageAccountSASToken.md) Creates an account-level SAS token. +### [New-AzStorageBlobInventoryPolicyRule](New-AzStorageBlobInventoryPolicyRule.md) +Creates a blob inventory policy rule object, which can be used in Set-AzStorageBlobInventoryPolicy. + ### [New-AzStorageBlobQueryConfig](New-AzStorageBlobQueryConfig.md) Creates a blob query configuration object, which can be used in Get-AzStorageBlobQueryResult. @@ -281,6 +287,9 @@ Remove IpRules or VirtualNetworkRules from the NetWorkRule property of a Storage ### [Remove-AzStorageBlob](Remove-AzStorageBlob.md) Removes the specified storage blob. +### [Remove-AzStorageBlobInventoryPolicy](Remove-AzStorageBlobInventoryPolicy.md) +Removes blob inventory policy from a Storage account. + ### [Remove-AzStorageContainer](Remove-AzStorageContainer.md) Removes the specified storage container. @@ -347,6 +356,9 @@ Creates or modifies the management policy of an Azure Storage account. ### [Set-AzStorageBlobContent](Set-AzStorageBlobContent.md) Uploads a local file to an Azure Storage blob. +### [Set-AzStorageBlobInventoryPolicy](Set-AzStorageBlobInventoryPolicy.md) +Creates or updates blob inventory policy in a Storage account. + ### [Set-AzStorageContainerAcl](Set-AzStorageContainerAcl.md) Sets the public access permission to a storage container. diff --git a/src/Storage/Storage.Management/help/Get-AzStorageBlobInventoryPolicy.md b/src/Storage/Storage.Management/help/Get-AzStorageBlobInventoryPolicy.md new file mode 100644 index 000000000000..51fc9d19aeab --- /dev/null +++ b/src/Storage/Storage.Management/help/Get-AzStorageBlobInventoryPolicy.md @@ -0,0 +1,155 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll-Help.xml +Module Name: Az.Storage +online version: https://docs.microsoft.com/en-us/powershell/module/az.storage/get-azstorageblobinventorypolicy +schema: 2.0.0 +--- + +# Get-AzStorageBlobInventoryPolicy + +## SYNOPSIS +Gets blob inventory policy from a Storage account. + +## SYNTAX + +### AccountName (Default) +``` +Get-AzStorageBlobInventoryPolicy [-ResourceGroupName] [-StorageAccountName] + [-DefaultProfile ] [] +``` + +### AccountResourceId +``` +Get-AzStorageBlobInventoryPolicy [-StorageAccountResourceId] + [-DefaultProfile ] [] +``` + +### AccountObject +``` +Get-AzStorageBlobInventoryPolicy -StorageAccount [-DefaultProfile ] + [] +``` + +## DESCRIPTION +The **Get-AzStorageBlobInventoryPolicy** cmdlet gets blob inventory policy from a Storage account. + +## EXAMPLES + +### Example 1: Get blob inventory policy from a Storage account +``` +PS C:\> $policy = Get-AzStorageBlobInventoryPolicy -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount" + +PS C:\> $policy + +StorageAccountName : mystorageaccount +ResourceGroupName : myresourcegroup +Name : DefaultInventoryPolicy +Id : /subscriptions/{subscription-Id}/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount/inventoryPolicies/default +Type : Microsoft.Storage/storageAccounts/inventoryPolicies +LastModifiedTime : 11/4/2020 9:18:30 AM +Enabled : True +Rules : {Test1, Test2} + +PS C:\> $policy.Rules + +Name Enabled Destination ObjectType Format Schedule IncludeSnapshots IncludeBlobVersions BlobTypes PrefixMatch SchemaFields +---- ------- ----------- ---------- ------ -------- ---------------- ------------------- --------- ----------- ------------ +Test1 False containername Container Csv Daily {aaa, bbb} {Name, Metadata, PublicAccess, Last-Modified...} +Test2 True containername Blob Parquet Weekly True True {blockBlob, appendBlob} {ccc, ddd} {Name, Creation-Time, Last-Modified, Content-Length...} +``` + +This command gets blob inventory policy from a Storage account, and show its proeprties. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +Resource Group Name. + +```yaml +Type: System.String +Parameter Sets: AccountName +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccount +Storage account object + +```yaml +Type: Microsoft.Azure.Commands.Management.Storage.Models.PSStorageAccount +Parameter Sets: AccountObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -StorageAccountName +Storage Account Name. + +```yaml +Type: System.String +Parameter Sets: AccountName +Aliases: AccountName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccountResourceId +Storage Account Resource Id. + +```yaml +Type: System.String +Parameter Sets: AccountResourceId +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### System.String + +### Microsoft.Azure.Commands.Management.Storage.Models.PSStorageAccount + +## OUTPUTS + +### Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicy + +## NOTES + +## RELATED LINKS diff --git a/src/Storage/Storage.Management/help/New-AzStorageBlobInventoryPolicyRule.md b/src/Storage/Storage.Management/help/New-AzStorageBlobInventoryPolicyRule.md new file mode 100644 index 000000000000..61d52ada11eb --- /dev/null +++ b/src/Storage/Storage.Management/help/New-AzStorageBlobInventoryPolicyRule.md @@ -0,0 +1,269 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll-Help.xml +Module Name: Az.Storage +online version: https://docs.microsoft.com/en-us/powershell/module/az.storage/new-azstorageblobinventorypolicyrule +schema: 2.0.0 +--- + +# New-AzStorageBlobInventoryPolicyRule + +## SYNOPSIS +Creates a blob inventory policy rule object, which can be used in Set-AzStorageBlobInventoryPolicy. + +## SYNTAX + +### BlobRuleParameterSet (Default) +``` +New-AzStorageBlobInventoryPolicyRule [-Name] [-Disabled] -Destination -Format + -Schedule -BlobSchemaField -BlobType [-PrefixMatch ] + [-IncludeSnapshot] [-IncludeBlobVersion] [-DefaultProfile ] [] +``` + +### ContainerRuleParameterSet +``` +New-AzStorageBlobInventoryPolicyRule [-Name] [-Disabled] -Destination -Format + -Schedule -ContainerSchemaField [-PrefixMatch ] + [-DefaultProfile ] [] +``` + +## DESCRIPTION +The **New-AzStorageBlobInventoryPolicyRule** cmdlet creates a blob inventory policy rule object, which can be used in Set-AzStorageBlobInventoryPolicy. + +## EXAMPLES + +### Example 1: Create blob inventory policy rule objects, then sets blob inventory policy with the rule objects. +``` +PS C:\> $rule1 = New-AzStorageBlobInventoryPolicyRule -Name Test1 -Destination $containerName -Disabled -Format Csv -Schedule Daily -ContainerSchemaField Name,Metadata,PublicAccess,Last-mOdified,LeaseStatus,LeaseState,LeaseDuration,HasImmutabilityPolicy,HasLegalHold -PrefixMatch con1,con2 + +PS C:\> $rule2 = New-AzStorageBlobInventoryPolicyRule -Name Test2 -Destination $containerName -Format Parquet -Schedule Weekly -IncludeBlobVersion -IncludeSnapshot -BlobType blockBlob,appendBlob -PrefixMatch aaa,bbb ` + -BlobSchemaField name,Creation-Time,Last-Modified,Content-Length,Content-MD5,BlobType,AccessTier,AccessTierChangeTime,Expiry-Time,hdi_isfolder,Owner,Group,Permissions,Acl,Metadata + +PS C:\> $policy = Set-AzStorageBlobInventoryPolicy -ResourceGroupName myresourcegroup" -AccountName "mystorageaccount" -Disabled -Rule $rule1,$rule2 + +PS C:\> $policy + +StorageAccountName : mystorageaccount +ResourceGroupName : myresourcegroup +Name : DefaultInventoryPolicy +Id : /subscriptions/{subscription-Id}/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount/inventoryPolicies/default +Type : Microsoft.Storage/storageAccounts/inventoryPolicies +LastModifiedTime : 5/12/2021 8:53:38 AM +Enabled : False +Rules : {Test1, Test2} + +PS C:\> $policy.Rules + +Name Enabled Destination ObjectType Format Schedule IncludeSnapshots IncludeBlobVersions BlobTypes PrefixMatch SchemaFields +---- ------- ----------- ---------- ------ -------- ---------------- ------------------- --------- ----------- ------------ +Test1 False containername Container Csv Daily {con1, con2} {Name, Metadata, PublicAccess, Last-Modified...} +Test2 True containername Blob Parquet Weekly True True {blockBlob, appendBlob} {aaa, bbb} {Name, Creation-Time, Last-Modified, Content-Length...} +``` + +This first 2 commands create 2 BlobInventoryPolicy rule objects: rule "Test1" for contaienr inventory; rule "Test2" for blob inventory. +The following command sets blob inventory policy to a Storage account with the 2 rule objects, then show the updated policy and rules properties. + +## PARAMETERS + +### -BlobSchemaField +Specifies the fields and properties of the Blob object to be included in the inventory. Valid values include: Name, Creation-Time, Last-Modified, Content-Length, Content-MD5, BlobType, AccessTier, AccessTierChangeTime, Expiry-Time, hdi_isfolder, Owner, Group, Permissions, Acl, Metadata, LastAccessTime. 'Name' is a required schemafield.If specify '-IncludeSnapshot', will include 'Snapshot' in the inventory. If specify '-IncludeBlobVersion', will include 'VersionId, 'IsCurrentVersion' in the inventory. + +```yaml +Type: System.String[] +Parameter Sets: BlobRuleParameterSet +Aliases: +Accepted values: Name, Creation-Time, Last-Modified, Content-Length, Content-MD5, BlobType, AccessTier, AccessTierChangeTime, Expiry-Time, hdi_isfolder, Owner, Group, Permissions, Acl, Metadata, LastAccessTime + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BlobType +Sets the blob types for the blob inventory policy rule. +Valid values include blockBlob, appendBlob, pageBlob. +Hns accounts does not support pageBlobs. + +```yaml +Type: System.String[] +Parameter Sets: BlobRuleParameterSet +Aliases: +Accepted values: blockBlob, pageBlob, appendBlob + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ContainerSchemaField +Specifies the fields and properties of the container object to be included in the inventory. Valid values include: Name, Last-Modified, Metadata, LeaseStatus, LeaseState, LeaseDuration, PublicAccess, HasImmutabilityPolicy, HasLegalHold. 'Name' is a required schemafield. + +```yaml +Type: System.String[] +Parameter Sets: ContainerRuleParameterSet +Aliases: +Accepted values: Name, Last-Modified, Metadata, LeaseStatus, LeaseState, LeaseDuration, PublicAccess, HasImmutabilityPolicy, HasLegalHold + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Destination +The container name where blob inventory files are stored. Must be pre-created. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Disabled +The rule is disabled if set it. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Format +Specifies the format for the inventory files. Possible values include: 'Csv', 'Parquet' + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: +Accepted values: Csv, Parquet + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeBlobVersion +The rule is disabled if set it. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: BlobRuleParameterSet +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSnapshot +The rule is disabled if set it. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: BlobRuleParameterSet +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +A rule name can contain any combination of alpha numeric characters. +Rule name is case-sensitive. +It must be unique within a policy. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PrefixMatch +Sets an array of strings for blob prefixes to be matched.. + +```yaml +Type: System.String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Schedule +This field is used to schedule an inventory formation. Possible values include: 'Daily', 'Weekly' + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: +Accepted values: Daily, Weekly + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicyRule + +## NOTES + +## RELATED LINKS diff --git a/src/Storage/Storage.Management/help/Remove-AzStorageBlobInventoryPolicy.md b/src/Storage/Storage.Management/help/Remove-AzStorageBlobInventoryPolicy.md new file mode 100644 index 000000000000..07323e578dfb --- /dev/null +++ b/src/Storage/Storage.Management/help/Remove-AzStorageBlobInventoryPolicy.md @@ -0,0 +1,206 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll-Help.xml +Module Name: Az.Storage +online version: https://docs.microsoft.com/en-us/powershell/module/az.storage/remove-azstorageblobinventorypolicy +schema: 2.0.0 +--- + +# Remove-AzStorageBlobInventoryPolicy + +## SYNOPSIS +Removes blob inventory policy from a Storage account. + +## SYNTAX + +### AccountName (Default) +``` +Remove-AzStorageBlobInventoryPolicy [-ResourceGroupName] [-StorageAccountName] [-PassThru] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### AccountObject +``` +Remove-AzStorageBlobInventoryPolicy -StorageAccount [-PassThru] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### AccountResourceId +``` +Remove-AzStorageBlobInventoryPolicy [-StorageAccountResourceId] [-PassThru] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### PolicyObject +``` +Remove-AzStorageBlobInventoryPolicy [-InputObject] [-PassThru] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +## DESCRIPTION +The **Remove-AzStorageBlobInventoryPolicy** cmdlet removes blob inventory policy from a Storage account. + +## EXAMPLES + +### Example 1: Remove blob inventory policy from a Storage account +``` +PS C:\>Remove-AzStorageBlobInventoryPolicy -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount" +``` + +This command removes blob inventory policy from a Storage account. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Management Object to Remove + +```yaml +Type: Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicy +Parameter Sets: PolicyObject +Aliases: BlobInventoryPolicy + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +{{Fill PassThru Description}} + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +Resource Group Name. + +```yaml +Type: System.String +Parameter Sets: AccountName +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccount +Storage account object + +```yaml +Type: Microsoft.Azure.Commands.Management.Storage.Models.PSStorageAccount +Parameter Sets: AccountObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -StorageAccountName +Storage Account Name. + +```yaml +Type: System.String +Parameter Sets: AccountName +Aliases: AccountName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccountResourceId +Storage Account Resource Id. + +```yaml +Type: System.String +Parameter Sets: AccountResourceId +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.Management.Storage.Models.PSStorageAccount + +### System.String + +### Microsoft.Azure.Commands.Management.Storage.Models.PSManagementPolicy + +## OUTPUTS + +### System.Boolean + +## NOTES + +## RELATED LINKS diff --git a/src/Storage/Storage.Management/help/Set-AzStorageBlobInventoryPolicy.md b/src/Storage/Storage.Management/help/Set-AzStorageBlobInventoryPolicy.md new file mode 100644 index 000000000000..3aa8debd56f3 --- /dev/null +++ b/src/Storage/Storage.Management/help/Set-AzStorageBlobInventoryPolicy.md @@ -0,0 +1,336 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll-Help.xml +Module Name: Az.Storage +online version: https://docs.microsoft.com/en-us/powershell/module/az.storage/set-azstorageblobinventorypolicy +schema: 2.0.0 +--- + +# Set-AzStorageBlobInventoryPolicy + +## SYNOPSIS +Creates or updates blob inventory policy in a Storage account. + +## SYNTAX + +### AccountNamePolicyRule (Default) +``` +Set-AzStorageBlobInventoryPolicy [-ResourceGroupName] [-StorageAccountName] + -Rule [-Disabled] [-DefaultProfile ] [-WhatIf] + [-Confirm] [] +``` + +### AccountNamePolicyObject +``` +Set-AzStorageBlobInventoryPolicy [-ResourceGroupName] [-StorageAccountName] + -Policy [-DefaultProfile ] [-WhatIf] [-Confirm] + [] +``` + +### AccountObjectPolicyRule +``` +Set-AzStorageBlobInventoryPolicy -StorageAccount -Rule + [-Disabled] [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### AccountObjectPolicyObject +``` +Set-AzStorageBlobInventoryPolicy -StorageAccount -Policy + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### AccountResourceIdPolicyRule +``` +Set-AzStorageBlobInventoryPolicy [-StorageAccountResourceId] -Rule + [-Disabled] [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### AccountResourceIdPolicyObject +``` +Set-AzStorageBlobInventoryPolicy [-StorageAccountResourceId] -Policy + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +## DESCRIPTION +The **Set-AzStorageBlobInventoryPolicy** cmdlet creates or updates blob inventory policy in a Storage account. + +## EXAMPLES + +### Example 1: Create or update the blob inventory policy with BlobInventoryPolicy rule objects. +``` +PS C:\> $rule1 = New-AzStorageBlobInventoryPolicyRule -Name Test1 -Destination $containerName -Disabled -Format Csv -Schedule Daily -ContainerSchemaField Name,Metadata,PublicAccess,Last-mOdified,LeaseStatus,LeaseState,LeaseDuration,HasImmutabilityPolicy,HasLegalHold -PrefixMatch con1,con2 + +PS C:\> $rule2 = New-AzStorageBlobInventoryPolicyRule -Name Test2 -Destination $containerName -Format Parquet -Schedule Weekly -IncludeBlobVersion -IncludeSnapshot -BlobType blockBlob,appendBlob -PrefixMatch aaa,bbb ` + -BlobSchemaField name,Creation-Time,Last-Modified,Content-Length,Content-MD5,BlobType,AccessTier,AccessTierChangeTime,Expiry-Time,hdi_isfolder,Owner,Group,Permissions,Acl,Metadata + +PS C:\> $policy = Set-AzStorageBlobInventoryPolicy -ResourceGroupName myresourcegroup" -AccountName "mystorageaccount" -Disabled -Rule $rule1,$rule2 + +PS C:\> $policy + +StorageAccountName : mystorageaccount +ResourceGroupName : myresourcegroup +Name : DefaultInventoryPolicy +Id : /subscriptions/{subscription-Id}/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount/inventoryPolicies/default +Type : Microsoft.Storage/storageAccounts/inventoryPolicies +LastModifiedTime : 5/12/2021 8:53:38 AM +Enabled : False +Rules : {Test1, Test2} + +PS C:\> $policy.Rules + +Name Enabled Destination ObjectType Format Schedule IncludeSnapshots IncludeBlobVersions BlobTypes PrefixMatch SchemaFields +---- ------- ----------- ---------- ------ -------- ---------------- ------------------- --------- ----------- ------------ +Test1 False containername Container Csv Daily {con1, con2} {Name, Metadata, PublicAccess, Last-Modified...} +Test2 True containername Blob Parquet Weekly True True {blockBlob, appendBlob} {aaa, bbb} {Name, Creation-Time, Last-Modified, Content-Length...} +``` + +This first 2 commands create 2 BlobInventoryPolicy rule objects: rule "Test1" for contaienr inventory; rule "Test2" for blob inventory. +The following command sets blob inventory policy to a Storage account with the 2 rule objects, then show the updated policy and rules properties. + +### Example 2: Create or update the blob inventory policy of a Storage account with a Json format policy. +``` +PS C:\> $policy = Set-AzStorageBlobInventoryPolicy -ResourceGroupName $resourceGroupName -StorageAccountName $accountName -Policy (@{ + Enabled=$true; + Rules=(@{ + Enabled=$true; + Name="Test1"; + Destination=$containerName; + Definition=(@{ + ObjectType="Blob"; + Format="Csv"; + Schedule="Weekly"; + SchemaFields=@("name","Content-Length","BlobType","Snapshot","VersionId","IsCurrentVersion"); + Filters=(@{ + BlobTypes=@("blockBlob","appendBlob"); + PrefixMatch=@("prefix1","prefix2"); + IncludeSnapshots=$true; + IncludeBlobVersions=$true; + }) + }) + }, + @{ + Enabled=$false; + Name="Test2"; + Destination=$containerName; + Definition=(@{ + ObjectType="Container"; + Format="Parquet"; + Schedule="Daily"; + SchemaFields=@("name","Metadata","PublicAccess"); + Filters=(@{ + PrefixMatch=@("conpre1","conpre2"); + }) + }) + }) + }) + + +PS C:\> $policy + +StorageAccountName : weiadlscanary1 +ResourceGroupName : weitry +Name : DefaultInventoryPolicy +Id : /subscriptions/{subscription-Id}/resourceGroups/weitry/providers/Microsoft.Storage/storageAccounts/weiadlscanary1/inventoryPolicies/default +Type : Microsoft.Storage/storageAccounts/inventoryPolicies +LastModifiedTime : 5/12/2021 9:02:21 AM +Enabled : True +Rules : {Test1, Test2} + +PS C:\> $policy.Rules + +Name Enabled Destination ObjectType Format Schedule IncludeSnapshots IncludeBlobVersions BlobTypes PrefixMatch SchemaFields +---- ------- ----------- ---------- ------ -------- ---------------- ------------------- --------- ----------- ------------ +Test1 True containername Blob Csv Weekly True True {blockBlob, appendBlob} {prefix1, prefix2} {name, Content-Length, BlobType, Snapshot...} +Test2 False containername Container Parquet Daily {conpre1, conpre2} {name, Metadata, PublicAccess} {name, Metadata, PublicAccess} +``` + +This command creates or updates the blob inventory policy of a Storage account with a json format policy. + +### Example 3: Get the blob inventory policy from a Storage account, then set it to another Storage account. +``` +PS C:\>$policy = Get-AzStorageBlobInventoryPolicy -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount" | Set-AzStorageBlobInventoryPolicy -ResourceGroupName "myresourcegroup2" -AccountName "mystorageaccount2" +``` + +This command first gets the blob inventory policy from a Storage account, then set it to another Storage account. +The proeprties: Destination, Enabled, and Rules of the policy will be set to the destination account. + +### Example 4: Get the blob inventory policy rules from a Storage account, then set it to another Storage account. +``` +PS C:\>$policy = ,((Get-AzStorageBlobInventoryPolicy -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount").Rules) | Set-AzStorageBlobInventoryPolicy -ResourceGroupName "myresourcegroup2" -AccountName "mystorageaccount2" -Disabled +``` + +This command first gets the blob inventory policy from a Storage account, then set it's rules to another Storage account. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Disabled +The Blob Inventory Policy is enabled by default, specify this parameter to disable it. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: AccountNamePolicyRule, AccountObjectPolicyRule, AccountResourceIdPolicyRule +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Policy +Blob Inventory Policy Object to Set + +```yaml +Type: Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicy +Parameter Sets: AccountNamePolicyObject, AccountObjectPolicyObject, AccountResourceIdPolicyObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName, ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +Resource Group Name. + +```yaml +Type: System.String +Parameter Sets: AccountNamePolicyRule, AccountNamePolicyObject +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Rule +The Blob Inventory Policy rules. +Get the object with New-AzStorageBlobInventoryPolicyRule cmdlet. + +```yaml +Type: Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicyRule[] +Parameter Sets: AccountNamePolicyRule, AccountObjectPolicyRule, AccountResourceIdPolicyRule +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -StorageAccount +Storage account object + +```yaml +Type: Microsoft.Azure.Commands.Management.Storage.Models.PSStorageAccount +Parameter Sets: AccountObjectPolicyRule, AccountObjectPolicyObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -StorageAccountName +Storage Account Name. + +```yaml +Type: System.String +Parameter Sets: AccountNamePolicyRule, AccountNamePolicyObject +Aliases: AccountName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccountResourceId +Storage Account Resource Id. + +```yaml +Type: System.String +Parameter Sets: AccountResourceIdPolicyRule, AccountResourceIdPolicyObject +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.Management.Storage.Models.PSStorageAccount + +### System.String + +### Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicyRule[] + +### Microsoft.Azure.Commands.Management.Storage.Models.PSBlobInventoryPolicySchema + +## OUTPUTS + +### Microsoft.Azure.Commands.Management.Storage.Models.PSManagementPolicy + +## NOTES + +## RELATED LINKS diff --git a/tools/LocalFeed/Microsoft.Azure.Management.Storage.22.0.0.nupkg b/tools/LocalFeed/Microsoft.Azure.Management.Storage.22.0.0.nupkg index b67af0d32194..e54f4a5adb92 100644 Binary files a/tools/LocalFeed/Microsoft.Azure.Management.Storage.22.0.0.nupkg and b/tools/LocalFeed/Microsoft.Azure.Management.Storage.22.0.0.nupkg differ diff --git a/tools/StaticAnalysis/Exceptions/Az.Storage/SignatureIssues.csv b/tools/StaticAnalysis/Exceptions/Az.Storage/SignatureIssues.csv index 056304695e21..473cc8bdc1e9 100644 --- a/tools/StaticAnalysis/Exceptions/Az.Storage/SignatureIssues.csv +++ b/tools/StaticAnalysis/Exceptions/Az.Storage/SignatureIssues.csv @@ -69,3 +69,4 @@ "Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll","Microsoft.Azure.Commands.Management.Storage.EnableAzStorageBlobRestorePolicyCommand","Enable-AzStorageBlobRestorePolicy","1","8410","Parameter RestoreDays of cmdlet Enable-AzStorageBlobRestorePolicy does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." "Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll","Microsoft.Azure.Commands.Management.Storage.NewAzureStorageBlobRangeToRestoreCommand","New-AzStorageBlobRangeToRestore","1","8100","New-AzStorageBlobRangeToRestore Does not support ShouldProcess but the cmdlet verb New indicates that it should.","Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue" "Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll","Microsoft.Azure.Commands.Management.Storage.UpdateAzStorageFileServicePropertyCommand","Update-AzStorageFileServiceProperty","1","8410","Parameter ShareRetentionDays of cmdlet Update-AzStorageFileServiceProperty does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.Storage.Management.dll","Microsoft.Azure.Commands.Management.Storage.NewAzureStorageBlobInventoryPolicyRuleCommand","New-AzStorageBlobInventoryPolicyRule","1","8100","New-AzStorageBlobInventoryPolicyRule Does not support ShouldProcess but the cmdlet verb New indicates that it should.","Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue"