diff --git a/.gitignore b/.gitignore index 700f92f325e3..a70e74409312 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ msbuild.log # please do not commit any app.config files. app.config !src/ResourceManager/Profile/Commands.Profile.Test/App.config +!src/ResourceManager/Resources/Commands.Resources.Test/App.config +!src/ResourceManager/Storage/Commands.Management.Storage.Test/App.config !src/ResourceManager/ManagedServiceIdentity/Commands.ManagedServiceIdentity.Test/App.config !src/Storage/Commands.Storage.Test/app.config diff --git a/.travis.yml b/.travis.yml index d165d4a85707..166bd1003d33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ dotnet: 2.1.200 dist: trusty env: - - NAME="azure-powershell-core" CONFIG="Debug" + - NAME="azure-powershell-core" CONFIG="Debug" AZURE_TEST_MODE=Playback services: - docker diff --git a/src/Azure.PowerShell.Netcore.Test.sln b/src/Azure.PowerShell.Netcore.Test.sln index 183b45f4437e..e64b70c0bade 100644 --- a/src/Azure.PowerShell.Netcore.Test.sln +++ b/src/Azure.PowerShell.Netcore.Test.sln @@ -59,6 +59,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Commands.DeviceProvisioning EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Commands.PolicyInsights.Test.Netcore", "ResourceManager\PolicyInsights\Commands.PolicyInsights.Test\Commands.PolicyInsights.Test.Netcore.csproj", "{AFA65D3A-FB7E-4DAB-9867-1CA4CBA41BFB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Commands.TestFx.Netcore", "ResourceManager\Common\Commands.TestFx\Commands.TestFx.Netcore.csproj", "{BFACE421-52D9-4D41-BDE9-444A8A721330}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -405,6 +407,18 @@ Global {AFA65D3A-FB7E-4DAB-9867-1CA4CBA41BFB}.Release|x64.Build.0 = Release|Any CPU {AFA65D3A-FB7E-4DAB-9867-1CA4CBA41BFB}.Release|x86.ActiveCfg = Release|Any CPU {AFA65D3A-FB7E-4DAB-9867-1CA4CBA41BFB}.Release|x86.Build.0 = Release|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Debug|x64.ActiveCfg = Debug|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Debug|x64.Build.0 = Debug|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Debug|x86.ActiveCfg = Debug|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Debug|x86.Build.0 = Debug|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Release|Any CPU.Build.0 = Release|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Release|x64.ActiveCfg = Release|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Release|x64.Build.0 = Release|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Release|x86.ActiveCfg = Release|Any CPU + {BFACE421-52D9-4D41-BDE9-444A8A721330}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Common/Commands.Common.Compute.Tests/Commands.Common.Compute.Tests.csproj b/src/Common/Commands.Common.Compute.Tests/Commands.Common.Compute.Tests.csproj index 654c8f21d52e..97c84e24c1d5 100644 --- a/src/Common/Commands.Common.Compute.Tests/Commands.Common.Compute.Tests.csproj +++ b/src/Common/Commands.Common.Compute.Tests/Commands.Common.Compute.Tests.csproj @@ -34,18 +34,27 @@ 4 + + False + ..\..\packages\Microsoft.Azure.Test.HttpRecorder.1.8.1\lib\net452\Microsoft.Azure.Test.HttpRecorder.dll + True + ..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll True - + False - ..\..\packages\Microsoft.Rest.ClientRuntime.2.3.11\lib\net452\Microsoft.Rest.ClientRuntime.dll + ..\..\packages\Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.0\lib\net452\Microsoft.Rest.ClientRuntime.Azure.Authentication.dll True - + + ..\..\packages\Microsoft.Rest.ClientRuntime.Azure.TestFramework.1.7.2\lib\net452\Microsoft.Rest.ClientRuntime.Azure.TestFramework.dll + True + + False - ..\..\packages\Microsoft.Rest.ClientRuntime.Azure.3.3.12\lib\net452\Microsoft.Rest.ClientRuntime.Azure.dll + ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True @@ -90,6 +99,18 @@ + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + @@ -102,11 +123,5 @@ - + \ No newline at end of file diff --git a/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListDisks.json b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListDisks.json new file mode 100644 index 000000000000..0b4db7544bd8 --- /dev/null +++ b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListDisks.json @@ -0,0 +1,72 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Compute/disks?api-version=2016-04-30-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Byb3ZpZGVycy9NaWNyb3NvZnQuQ29tcHV0ZS9kaXNrcz9hcGktdmVyc2lvbj0yMDE2LTA0LTMwLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a99916df-037b-48a0-9535-4ff28b5d5815" + ], + "accept-language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Commands.Common.Compute.Version2016_04_preview.ComputeManagementClient/1.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"properties\": {\r\n \"accountType\": \"Standard_LRS\",\r\n \"osType\": \"Windows\",\r\n \"creationData\": {\r\n \"createOption\": \"FromImage\",\r\n \"imageReference\": {\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/eastus2/Publishers/MicrosoftWindowsServer/ArtifactTypes/VMImage/Offers/WindowsServer/Skus/2008-R2-SP1/Versions/2.127.20170628\"\r\n }\r\n },\r\n \"diskSizeGB\": 127,\r\n \"timeCreated\": \"2018-07-11T12:20:46.928697-07:00\",\r\n \"ownerId\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/crptestps7596/providers/Microsoft.Compute/virtualMachines/vmcrptestps7596\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Attached\"\r\n },\r\n \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"eastus2\",\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/CRPTESTPS7596/providers/Microsoft.Compute/disks/vmcrptestps7596_OsDisk_1_978dd480e37c4bacb0d31416324bf793\",\r\n \"name\": \"vmcrptestps7596_OsDisk_1_978dd480e37c4bacb0d31416324bf793\"\r\n },\r\n {\r\n \"properties\": {\r\n \"accountType\": \"Premium_LRS\",\r\n \"osType\": \"Linux\",\r\n \"creationData\": {\r\n \"createOption\": \"FromImage\",\r\n \"imageReference\": {\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/16.04-LTS/Versions/16.04.201807030\"\r\n }\r\n },\r\n \"diskSizeGB\": 30,\r\n \"timeCreated\": \"2018-07-11T11:30:39.3771097-07:00\",\r\n \"ownerId\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/tjp-rg/providers/Microsoft.Compute/virtualMachines/vm1\",\r\n \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Attached\"\r\n },\r\n \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"westus\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/TJP-RG/providers/Microsoft.Compute/disks/vm1_OsDisk_1_59e4de3d8570465985cb158dc5fc5492\",\r\n \"name\": \"vm1_OsDisk_1_59e4de3d8570465985cb158dc5fc5492\"\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "1803" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-original-request-ids": [ + "34f04a89-7957-4db4-b050-ed7bd92bd4d2", + "faa58b26-5fa4-4255-a9dc-854f4c4e86d6" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14999" + ], + "x-ms-request-id": [ + "32f6cbf6-80c3-4352-b0fd-02dffd2cb476" + ], + "x-ms-correlation-request-id": [ + "32f6cbf6-80c3-4352-b0fd-02dffd2cb476" + ], + "x-ms-routing-request-id": [ + "WESTUS2:20180711T192723Z:32f6cbf6-80c3-4352-b0fd-02dffd2cb476" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Wed, 11 Jul 2018 19:27:22 GMT" + ] + }, + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb" + } +} \ No newline at end of file diff --git a/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachine.json b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachine.json new file mode 100644 index 000000000000..b506b336c7b0 --- /dev/null +++ b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachine.json @@ -0,0 +1,72 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Compute/virtualMachines?api-version=2016-04-30-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Byb3ZpZGVycy9NaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXM/YXBpLXZlcnNpb249MjAxNi0wNC0zMC1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "96f4af86-d1b0-4a99-a6f5-0af7f54dc28b" + ], + "accept-language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Commands.Common.Compute.Version2016_04_preview.ComputeManagementClient/1.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"properties\": {\r\n \"vmId\": \"101b7f2e-e501-4de3-94f6-80d050b571c5\",\r\n \"hardwareProfile\": {\r\n \"vmSize\": \"Standard_A4\"\r\n },\r\n \"storageProfile\": {\r\n \"imageReference\": {\r\n \"publisher\": \"MicrosoftWindowsServer\",\r\n \"offer\": \"WindowsServer\",\r\n \"sku\": \"2008-R2-SP1\",\r\n \"version\": \"2.127.20170628\"\r\n },\r\n \"osDisk\": {\r\n \"osType\": \"Windows\",\r\n \"name\": \"vmcrptestps7596_OsDisk_1_978dd480e37c4bacb0d31416324bf793\",\r\n \"createOption\": \"FromImage\",\r\n \"caching\": \"ReadWrite\",\r\n \"managedDisk\": {\r\n \"storageAccountType\": \"Standard_LRS\",\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/crptestps7596/providers/Microsoft.Compute/disks/vmcrptestps7596_OsDisk_1_978dd480e37c4bacb0d31416324bf793\"\r\n },\r\n \"diskSizeGB\": 127\r\n },\r\n \"dataDisks\": []\r\n },\r\n \"osProfile\": {\r\n \"computerName\": \"test\",\r\n \"adminUsername\": \"Foo12\",\r\n \"windowsConfiguration\": {\r\n \"provisionVMAgent\": true,\r\n \"enableAutomaticUpdates\": false\r\n },\r\n \"secrets\": []\r\n },\r\n \"networkProfile\": {\r\n \"networkInterfaces\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/crptestps7596/providers/Microsoft.Network/networkInterfaces/niccrptestps7596\",\r\n \"properties\": {\r\n \"primary\": true\r\n }\r\n }\r\n ]\r\n },\r\n \"diagnosticsProfile\": {\r\n \"bootDiagnostics\": {\r\n \"enabled\": true,\r\n \"storageUri\": \"https://stocrptestps7596.blob.core.windows.net/\"\r\n }\r\n },\r\n \"provisioningState\": \"Updating\"\r\n },\r\n \"resources\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/CRPTESTPS7596/providers/Microsoft.Compute/virtualMachines/vmcrptestps7596/extensions/BGInfo\"\r\n }\r\n ],\r\n \"type\": \"Microsoft.Compute/virtualMachines\",\r\n \"location\": \"eastus2\",\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/CRPTESTPS7596/providers/Microsoft.Compute/virtualMachines/vmcrptestps7596\",\r\n \"name\": \"vmcrptestps7596\"\r\n },\r\n {\r\n \"properties\": {\r\n \"vmId\": \"445871d2-a782-41f4-bc1f-c25bd029924c\",\r\n \"hardwareProfile\": {\r\n \"vmSize\": \"Standard_DS1_v2\"\r\n },\r\n \"storageProfile\": {\r\n \"imageReference\": {\r\n \"publisher\": \"Canonical\",\r\n \"offer\": \"UbuntuServer\",\r\n \"sku\": \"16.04-LTS\",\r\n \"version\": \"latest\"\r\n },\r\n \"osDisk\": {\r\n \"osType\": \"Linux\",\r\n \"name\": \"vm1_OsDisk_1_59e4de3d8570465985cb158dc5fc5492\",\r\n \"createOption\": \"FromImage\",\r\n \"caching\": \"ReadWrite\",\r\n \"managedDisk\": {\r\n \"storageAccountType\": \"Premium_LRS\",\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/tjp-rg/providers/Microsoft.Compute/disks/vm1_OsDisk_1_59e4de3d8570465985cb158dc5fc5492\"\r\n },\r\n \"diskSizeGB\": 30\r\n },\r\n \"dataDisks\": []\r\n },\r\n \"osProfile\": {\r\n \"computerName\": \"vm1\",\r\n \"adminUsername\": \"trpresco\",\r\n \"linuxConfiguration\": {\r\n \"disablePasswordAuthentication\": true,\r\n \"ssh\": {\r\n \"publicKeys\": [\r\n {\r\n \"path\": \"/home/trpresco/.ssh/authorized_keys\",\r\n \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLkUy/BFb7o47gQqFcMiioYD4w3Tu/7bpy7t/3pQVhjmsEEaWk09dA1Ju1UbukKaLpOprch/r9bgUWu1oTEP7E5evwaJl0TvLX0gsxGGItfPc58bbQ77uxuXhMfYEZ6oiS+Ybt5nUjjDUUNhSIrKSLhCHCmQ9JnOd/AObf9G4iR38bsABIAVxmbYT6OQKm4oRwNs1c99B5TsfnREFs7yawCV3hjKVHsD3bRo83bBbBG3d/CHYfcnEbpK4weagw899YodAXDiUh0qYfOy0mGz4zWaQ4rcCitk9od/WSDhLAOy74cqwzKJwoR9DcALxkWVMuJW7xBF9tWEroVvFrh6/N\"\r\n }\r\n ]\r\n }\r\n },\r\n \"secrets\": []\r\n },\r\n \"networkProfile\": {\r\n \"networkInterfaces\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/tjp-rg/providers/Microsoft.Network/networkInterfaces/vm1VMNic\"\r\n }\r\n ]\r\n },\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"type\": \"Microsoft.Compute/virtualMachines\",\r\n \"location\": \"westus\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/TJP-RG/providers/Microsoft.Compute/virtualMachines/vm1\",\r\n \"name\": \"vm1\"\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "3252" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-original-request-ids": [ + "b0656306-378b-4782-bb7f-58957e8c94fb", + "7538a576-d3c7-4795-a506-eca731f4c0af" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14999" + ], + "x-ms-request-id": [ + "7a408ec4-7c80-4507-88e0-df04def5605c" + ], + "x-ms-correlation-request-id": [ + "7a408ec4-7c80-4507-88e0-df04def5605c" + ], + "x-ms-routing-request-id": [ + "WESTUS2:20180711T192729Z:7a408ec4-7c80-4507-88e0-df04def5605c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Wed, 11 Jul 2018 19:27:29 GMT" + ] + }, + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb" + } +} \ No newline at end of file diff --git a/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachineImagePublishers.json b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachineImagePublishers.json new file mode 100644 index 000000000000..2d1e6a4442f0 --- /dev/null +++ b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachineImagePublishers.json @@ -0,0 +1,75 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Compute/locations/WestUs/publishers?api-version=2016-04-30-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Byb3ZpZGVycy9NaWNyb3NvZnQuQ29tcHV0ZS9sb2NhdGlvbnMvV2VzdFVzL3B1Ymxpc2hlcnM/YXBpLXZlcnNpb249MjAxNi0wNC0zMC1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "fbb5f641-a1e5-40cd-adc5-ea91ecccc91b" + ], + "accept-language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Commands.Common.Compute.Version2016_04_preview.ComputeManagementClient/1.0.0.0" + ] + }, + "ResponseBody": "[\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"1e\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/1e\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"4psa\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/4psa\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"5nine-software-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/5nine-software-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"7isolutions\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/7isolutions\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"a10networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/a10networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"abiquo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/abiquo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"accellion\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/accellion\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"accessdata-group\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/accessdata-group\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"accops\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/accops\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Acronis\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Acronis\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Acronis.Backup\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Acronis.Backup\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"actian-corp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/actian-corp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"actian_matrix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/actian_matrix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"actifio\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/actifio\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"activeeon\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/activeeon\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"adobe_test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/adobe_test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"advantech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/advantech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"advantech-webaccess\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/advantech-webaccess\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aerospike\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aerospike\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aerospike-database\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aerospike-database\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"affinio\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/affinio\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aiscaler-cache-control-ddos-and-url-rewriting-\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aiscaler-cache-control-ddos-and-url-rewriting-\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"akamai-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/akamai-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"akumina\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/akumina\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"alachisoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/alachisoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"alces-flight-limited\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/alces-flight-limited\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"alertlogic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/alertlogic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"AlertLogic.Extension\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/AlertLogic.Extension\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"alienvault\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/alienvault\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"alldigital-brevity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/alldigital-brevity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"altair-engineering-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/altair-engineering-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"altamira-corporation\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/altamira-corporation\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"alteryx\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/alteryx\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"altova\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/altova\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aod\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aod\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"apigee\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/apigee\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"appcelerator\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/appcelerator\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"appex-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/appex-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"appistry\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/appistry\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"appscale-marketplace\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/appscale-marketplace\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"appspace\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/appspace\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aptean-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aptean-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aqua-security\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aqua-security\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aquaforest\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aquaforest\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"arabesque-group\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/arabesque-group\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"arangodb\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/arangodb\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aras\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aras\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"arista-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/arista-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"array_networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/array_networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"artificial-intelligence-techniques-sl\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/artificial-intelligence-techniques-sl\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"asigra\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/asigra\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aspex-managed-cloud\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aspex-managed-cloud\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"atlassian\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/atlassian\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"atomicorp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/atomicorp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"attunity_cloudbeam\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/attunity_cloudbeam\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"auraportal\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/auraportal\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"auriq-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/auriq-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"avepoint\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/avepoint\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"avi-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/avi-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"aviatrix-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/aviatrix-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"awingu\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/awingu\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"axway\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/axway\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"azul\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/azul\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"AzureDatabricks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/AzureDatabricks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"AzureRT.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/AzureRT.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"azuresyncfusion\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/azuresyncfusion\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"azuretesting\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/azuretesting\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"azuretesting2\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/azuretesting2\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"azuretesting3\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/azuretesting3\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"AzureTools1type\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/AzureTools1type\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"baas-techbureau\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/baas-techbureau\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"baffle-io\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/baffle-io\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"balabit\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/balabit\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"barracudanetworks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/barracudanetworks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"basho\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/basho\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"batch\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/batch\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bdy\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bdy\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"beyondtrust\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/beyondtrust\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bi-builders-as\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bi-builders-as\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Bitnami\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Bitnami\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bizagi\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bizagi\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"biztalk360\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/biztalk360\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"black-duck-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/black-duck-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"blackberry\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/blackberry\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"blk-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/blk-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"blockapps\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/blockapps\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"blockchain-foundry\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/blockchain-foundry\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"blockstack\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/blockstack\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bloombase\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bloombase\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bluecat\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bluecat\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bluetalon\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bluetalon\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bmc.ctm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bmc.ctm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bmcctm.test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bmcctm.test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"brainshare-it\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/brainshare-it\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bravura-software-llc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bravura-software-llc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"brocade_communications\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/brocade_communications\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"bssw\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/bssw\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"buddhalabs\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/buddhalabs\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Canonical\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Canonical\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"carto\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/carto\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cask\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cask\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"catechnologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/catechnologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cautelalabs\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cautelalabs\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cavirin\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cavirin\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cbreplicator\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cbreplicator\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cds\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cds\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"celum-gmbh\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/celum-gmbh\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"center-for-internet-security-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/center-for-internet-security-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"certivox\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/certivox\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cfd-direct\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cfd-direct\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"chain\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/chain\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"checkpoint\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/checkpoint\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"chef-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/chef-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Chef.Bootstrap.WindowsAzure\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Chef.Bootstrap.WindowsAzure\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cinegy-gmbh\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cinegy-gmbh\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"circleci\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/circleci\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cires21\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cires21\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cisco\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cisco\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"citrix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/citrix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"clear-linux-project\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/clear-linux-project\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"clouber\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/clouber\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloud-checkr\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloud-checkr\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloud-cruiser\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloud-cruiser\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloud-infrastructure-services\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloud-infrastructure-services\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudbees\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudbees\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudbees-enterprise-jenkins\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudbees-enterprise-jenkins\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudbolt-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudbolt-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudboost\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudboost\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudenablers-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudenablers-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudera\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudera\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudera1qaz2wsx\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudera1qaz2wsx\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudhouse\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudhouse\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudhub-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudhub-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudify\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudify\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudlanes\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudlanes\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudlink\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudlink\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"CloudLinkEMC.SecureVM\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/CloudLinkEMC.SecureVM\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudneeti\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudneeti\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudplan-gmbh\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudplan-gmbh\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudsecurity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudsecurity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cloudsoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cloudsoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"clustrix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/clustrix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"codelathe\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/codelathe\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"codenvy\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/codenvy\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cognosys\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cognosys\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cohesity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cohesity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cohesive\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cohesive\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"commvault\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/commvault\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"composable\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/composable\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"comunity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/comunity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Confer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Confer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"confluentinc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/confluentinc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"connecting-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/connecting-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"convertigo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/convertigo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"corda\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/corda\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"CoreOS\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/CoreOS\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cortex-ag\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cortex-ag\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"couchbase\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/couchbase\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"crate-io\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/crate-io\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"credativ\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/credativ\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cryptzone\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cryptzone\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ctm.bmc.com\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ctm.bmc.com\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cybernetica-as\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cybernetica-as\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"cyxtera\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/cyxtera\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"danielsol.AzureTools1\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/danielsol.AzureTools1\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Dans.Windows.App\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Dans.Windows.App\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Dans3.Windows.App\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Dans3.Windows.App\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dataart\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dataart\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"databricks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/databricks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"datacore\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/datacore\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Datadog.Agent\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Datadog.Agent\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dataiku\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dataiku\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"datalayer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/datalayer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"datastax\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/datastax\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"datasunrise\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/datasunrise\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"datometry\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/datometry\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dellemc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dellemc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dell_software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dell_software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"delphix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/delphix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"denodo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/denodo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"denyall\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/denyall\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"derdack\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/derdack\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dgsecure\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dgsecure\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"diagramics\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/diagramics\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"digitaloffice\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/digitaloffice\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"diladele\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/diladele\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dimensionalmechanics-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dimensionalmechanics-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"docker\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/docker\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"docscorp-us\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/docscorp-us\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dome9\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dome9\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"drizti\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/drizti\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"drone\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/drone\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dsi\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dsi\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dundas\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dundas\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dyadic_security\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dyadic_security\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dynatrace\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dynatrace\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"dynatrace.ruxit\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/dynatrace.ruxit\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"eastbanctech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/eastbanctech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"eastwind-networks-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/eastwind-networks-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"edevtech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/edevtech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"egnyte\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/egnyte\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"eip\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/eip\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"eip-eipower\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/eip-eipower\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ekran-system-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ekran-system-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"elasticbox\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/elasticbox\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"elecard\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/elecard\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"electric-cloud\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/electric-cloud\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"elementrem\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/elementrem\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"elfiqnetworks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/elfiqnetworks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"emercoin\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/emercoin\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"enforongo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/enforongo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"enterprise-ethereum-alliance\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/enterprise-ethereum-alliance\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"enterprisedb-corp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/enterprisedb-corp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"equalum\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/equalum\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"equilibrium\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/equilibrium\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"esdenera\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/esdenera\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ESET\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ESET\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"esri\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/esri\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ethereum\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ethereum\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"eventtracker\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/eventtracker\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"evostream-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/evostream-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"exasol\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/exasol\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"f5-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/f5-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"falconstorsoftware\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/falconstorsoftware\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"fidesys\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/fidesys\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"filecatalyst\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/filecatalyst\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"firehost\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/firehost\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"flashgrid-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/flashgrid-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"flynet\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/flynet\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"foghorn-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/foghorn-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"forcepoint-llc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/forcepoint-llc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"forscene\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/forscene\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"fortinet\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/fortinet\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"fortycloud\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/fortycloud\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"fw\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/fw\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"gbs\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/gbs\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"gemalto-safenet\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/gemalto-safenet\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Gemalto.SafeNet.ProtectV\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Gemalto.SafeNet.ProtectV\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"genesys-source\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/genesys-source\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"gigamon-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/gigamon-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"GitHub\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/GitHub\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"gitlab\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/gitlab\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"globalscape\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/globalscape\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"gordic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/gordic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"graphitegtc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/graphitegtc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"great-software-laboratory-private-limited\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/great-software-laboratory-private-limited\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"greathorn\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/greathorn\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"greensql\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/greensql\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"gridgain\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/gridgain\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"guardicore\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/guardicore\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"h2o-ai\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/h2o-ai\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"haivision\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/haivision\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hanu\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hanu\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"haproxy-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/haproxy-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"harpaitalia\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/harpaitalia\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hcl-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hcl-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"heimdall-data\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/heimdall-data\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"help-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/help-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hewlett-packard\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hewlett-packard\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hillstone-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hillstone-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hitachi-solutions\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hitachi-solutions\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hortonworks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hortonworks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hpe\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hpe\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"HPE.Security.ApplicationDefender\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/HPE.Security.ApplicationDefender\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"huawei\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/huawei\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"humanlogic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/humanlogic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hush-hush\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hush-hush\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hvr\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hvr\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hyperglance\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hyperglance\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hypergrid\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hypergrid\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"hytrust\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/hytrust\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"iaansys\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/iaansys\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ibabs-eu\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ibabs-eu\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ibm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ibm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"iboss\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/iboss\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ikan\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ikan\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"imaginecommunications\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/imaginecommunications\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"imperva\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/imperva\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"incredibuild\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/incredibuild\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"infoblox\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/infoblox\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"infolibrarian\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/infolibrarian\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"informatica\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/informatica\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"informationbuilders\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/informationbuilders\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"infront-consulting-group-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/infront-consulting-group-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ingrammicro\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ingrammicro\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"integration-objects\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/integration-objects\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"intel\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/intel\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"intel-bigdl\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/intel-bigdl\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"intel-fpga\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/intel-fpga\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"intellicus-technologies-pvt-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/intellicus-technologies-pvt-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"intelligent-plant-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/intelligent-plant-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"intigua\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/intigua\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ipswitch\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ipswitch\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"iquest\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/iquest\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ishlangu-load-balancer-adc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ishlangu-load-balancer-adc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"issp-corporation\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/issp-corporation\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"itelios\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/itelios\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jamcracker\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jamcracker\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jedox\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jedox\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jelastic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jelastic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jetnexus\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jetnexus\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jetware-srl\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jetware-srl\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jfrog\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jfrog\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jitterbit_integration\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jitterbit_integration\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"jm-technology-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/jm-technology-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"juniper-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/juniper-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kaazing\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kaazing\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kali-linux\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kali-linux\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Kaspersky.Lab\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Kaspersky.Lab\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"KasperskyLab.SecurityAgent\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/KasperskyLab.SecurityAgent\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kaspersky_lab\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kaspersky_lab\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kelverion\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kelverion\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kemptech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kemptech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kepion\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kepion\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kinetica\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kinetica\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"knime\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/knime\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"kobalt\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/kobalt\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"krypc-technologies-pvt-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/krypc-technologies-pvt-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"lansa\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/lansa\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"leostream-corporation\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/leostream-corporation\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"liebsoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/liebsoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"liquid-files\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/liquid-files\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"liquidware\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/liquidware\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"literatu\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/literatu\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"loadbalancer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/loadbalancer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"logsign\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/logsign\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"logtrust\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/logtrust\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"looker\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/looker\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"lti-lt-infotech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/lti-lt-infotech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"luminate-security\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/luminate-security\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mactores_inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mactores_inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"maketv\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/maketv\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"manageengine\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/manageengine\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mapr-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mapr-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mariadb\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mariadb\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"marklogic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/marklogic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"massiveanalytic-\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/massiveanalytic-\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mathworks-deployment\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mathworks-deployment\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mathworks-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mathworks-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mavinglobal\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mavinglobal\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"McAfee.EndpointSecurity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/McAfee.EndpointSecurity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"McAfee.EndpointSecurity.test3\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/McAfee.EndpointSecurity.test3\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"meanio\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/meanio\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"media3-technologies-llc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/media3-technologies-llc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"memsql\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/memsql\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mendix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mendix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mfe_azure\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mfe_azure\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mfiles\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mfiles\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mico\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mico\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"micro-focus\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/micro-focus\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsec-zrt\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsec-zrt\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoft-ads\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-ads\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoft-avere\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-avere\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoft-azure-batch\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-azure-batch\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoft-azure-compute\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-azure-compute\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoft-dsvm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-dsvm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoft-hyperv\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-hyperv\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.AKS\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.AKS\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.ActiveDirectory.LinuxSSH\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.ActiveDirectory.LinuxSSH\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Applications\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Applications\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Backup.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Backup.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Backup.Test.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Backup.Test.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Diagnostics\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Diagnostics\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Diagnostics.Build.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Diagnostics.Build.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Extensions\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Extensions\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.KeyVault\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.KeyVault\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.KeyVault.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.KeyVault.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Monitoring.DependencyAgent\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Monitoring.DependencyAgent\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Networking.SDN\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Networking.SDN\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.NetworkWatcher\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.NetworkWatcher\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Performance.Diagnostics\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Performance.Diagnostics\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.RecoveryServices\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.RecoveryServices\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.RecoveryServices.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.RecoveryServices.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.RecoveryServices.SiteRecovery\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.RecoveryServices.SiteRecovery\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.RecoveryServices.SiteRecovery2\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.RecoveryServices.SiteRecovery2\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.RecoveryServices.WorkloadBackup\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.RecoveryServices.WorkloadBackup\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Security\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Security\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Security.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Security.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Security.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Security.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.SiteRecovery.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.SiteRecovery.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.SiteRecovery2.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.SiteRecovery2.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.Test.Identity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.Test.Identity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Azure.WindowsFabric.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Azure.WindowsFabric.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.AzureCAT.AzureEnhancedMonitoring\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.AzureCAT.AzureEnhancedMonitoring\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.AzureCAT.AzureEnhancedMonitoringTest\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.AzureCAT.AzureEnhancedMonitoringTest\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.AzureSecurity.JITAccess\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.AzureSecurity.JITAccess\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.CloudBackup.Workload.Extension\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.CloudBackup.Workload.Extension\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.CloudBackup.Workload.Extension.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.CloudBackup.Workload.Extension.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Compute\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Compute\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.CPlat.Core\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.CPlat.Core\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.CPlat.Core.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.CPlat.Core.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.DscPolicy2.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.DscPolicy2.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.EnterpriseCloud.Monitoring\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.EnterpriseCloud.Monitoring\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.EnterpriseCloud.Monitoring.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.EnterpriseCloud.Monitoring.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Golive.Extensions\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Golive.Extensions\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.GuestConfig.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.GuestConfig.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.GuestConfiguration.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.GuestConfiguration.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.HpcCompute\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.HpcCompute\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.HpcPack\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.HpcPack\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.ManagedIdentity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.ManagedIdentity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.ManagedServices\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.ManagedServices\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.OSTCExtensions\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.OSTCExtensions\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.OSTCExtensions.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.OSTCExtensions.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.OSTCExtensions.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.OSTCExtensions.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Powershell\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Powershell\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Powershell.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Powershell.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Powershell.Test01\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Powershell.Test01\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.SqlServer.Managability.IaaS.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.SqlServer.Managability.IaaS.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.SqlServer.Management\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.SqlServer.Management\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.SystemCenter\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.SystemCenter\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.TestSqlServer.Edp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.TestSqlServer.Edp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.VisualStudio.Azure.ETWTraceListenerService\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.VisualStudio.Azure.ETWTraceListenerService\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.VisualStudio.Azure.RemoteDebug\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.VisualStudio.Azure.RemoteDebug\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.VisualStudio.Azure.RemoteDebug.Json\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.VisualStudio.Azure.RemoteDebug.Json\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.VisualStudio.ServiceProfiler\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.VisualStudio.ServiceProfiler\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.VisualStudio.Services\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.VisualStudio.Services\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Windows.AzureRemoteApp.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Windows.AzureRemoteApp.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.Windows.RemoteDesktop\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.Windows.RemoteDesktop\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Microsoft.WindowsAzure.Compute\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Microsoft.WindowsAzure.Compute\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftAzureSiteRecovery\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftAzureSiteRecovery\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftBizTalkServer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftBizTalkServer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftDynamicsAX\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftDynamicsAX\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftDynamicsGP\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftDynamicsGP\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftDynamicsNAV\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftDynamicsNAV\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftHybridCloudStorage\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftHybridCloudStorage\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftOSTC\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftOSTC\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microsoftoxa\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoftoxa\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftRServer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftRServer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftSharePoint\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftSharePoint\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftSQLServer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftSQLServer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftVisualStudio\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftVisualStudio\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftWindowsDesktop\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftWindowsDesktop\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftWindowsServer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftWindowsServer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"MicrosoftWindowsServerHPCPack\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftWindowsServerHPCPack\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"microstrategy\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/microstrategy\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"midfin\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/midfin\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"midvision\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/midvision\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mindcti\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mindcti\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"miraclelinux\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/miraclelinux\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"miracl_linux\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/miracl_linux\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mobilab\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mobilab\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"moogsoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/moogsoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"moviemasher\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/moviemasher\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"msopentech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/msopentech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"msrazuresapservices\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/msrazuresapservices\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mtnfog\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mtnfog\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"multisoft-ab\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/multisoft-ab\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mvp-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mvp-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"mxhero\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/mxhero\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"my-com\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/my-com\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"narrativescience\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/narrativescience\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nasuni\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nasuni\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ncbi\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ncbi\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ndl\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ndl\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nebbiolo-technologies-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nebbiolo-technologies-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netapp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netapp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netatwork\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netatwork\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netgate\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netgate\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netikus-net-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netikus-net-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netiq\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netiq\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netmail\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netmail\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netsil\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netsil\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netsweeper\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netsweeper\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"netwrix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/netwrix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"neusoft-neteye\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/neusoft-neteye\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nextlimit\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nextlimit\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nginxinc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nginxinc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nicepeopleatwork\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nicepeopleatwork\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nodejsapi\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nodejsapi\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"noobaa\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/noobaa\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"norsync\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/norsync\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"northbridge-secure\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/northbridge-secure\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nri\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nri\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ntt-data-intellilink-corporation\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ntt-data-intellilink-corporation\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nubeva-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nubeva-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nuco-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nuco-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"nuxeo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/nuxeo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"o2mc-real-time-data-platform\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/o2mc-real-time-data-platform\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"oceanblue-cloud\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/oceanblue-cloud\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"OctopusDeploy.Tentacle\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/OctopusDeploy.Tentacle\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"omega-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/omega-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"onapsis\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/onapsis\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"onyx-point-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/onyx-point-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"op5\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/op5\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"opencell\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/opencell\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"OpenLogic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/OpenLogic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"opentext\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/opentext\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"openvpn\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/openvpn\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"opslogix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/opslogix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"opsview-limited\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/opsview-limited\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Oracle\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Oracle\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"oriana\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/oriana\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"orientdb\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/orientdb\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"osirium-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/osirium-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"osisoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/osisoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"osnexus\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/osnexus\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"paloaltonetworks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/paloaltonetworks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"panorama-necto\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/panorama-necto\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"panzura-file-system\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/panzura-file-system\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"parallels\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/parallels\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"parasoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/parasoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"passlogy\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/passlogy\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"paxata\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/paxata\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"peer-software-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/peer-software-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"penta-security-systems-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/penta-security-systems-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"percona\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/percona\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"pivotal\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/pivotal\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"plesk\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/plesk\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"portalarchitects\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/portalarchitects\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"postgres-pro\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/postgres-pro\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"prestashop\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/prestashop\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"prime-strategy\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/prime-strategy\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"process-one\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/process-one\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Profiler.Master.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Profiler.Master.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"profisee\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/profisee\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"progelspa\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/progelspa\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ptsecurity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ptsecurity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"pulse-secure\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/pulse-secure\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"puppet\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/puppet\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"PuppetLabs\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/PuppetLabs\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"PuppetLabs.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/PuppetLabs.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"pydio\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/pydio\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"pyramidanalytics\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/pyramidanalytics\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"qlik\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/qlik\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"qore-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/qore-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Qualys\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Qualys\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Qualys.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Qualys.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"qualysguard\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/qualysguard\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"quasardb\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/quasardb\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"qubole\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/qubole\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"qubole-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/qubole-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"quest\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/quest\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"racknap\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/racknap\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"radiant-logic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/radiant-logic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"radware\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/radware\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rancher\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rancher\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rapid7\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rapid7\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Rapid7.InsightPlatform\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Rapid7.InsightPlatform\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rapidminer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rapidminer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"realm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/realm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"reblaze\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/reblaze\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"RedHat\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/RedHat\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"redpoint-global\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/redpoint-global\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"relevance-lab\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/relevance-lab\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"remotelearner\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/remotelearner\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"res\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/res\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"resco\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/resco\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"responder-corp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/responder-corp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"revolution-analytics\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/revolution-analytics\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"RightScaleLinux\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/RightScaleLinux\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"RightScaleWindowsServer\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/RightScaleWindowsServer\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"riverbed\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/riverbed\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"RiverbedTechnology\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/RiverbedTechnology\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rocketsoftware\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rocketsoftware\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"roktech\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/roktech\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rsa-security-llc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rsa-security-llc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rsk-labs\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rsk-labs\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rtts\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rtts\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"rubrik-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/rubrik-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"saama\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/saama\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"saasame-limited\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/saasame-limited\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"saltstack\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/saltstack\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"samsung-sds\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/samsung-sds\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"samsungsds-cello\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/samsungsds-cello\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sap\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sap\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"scalearc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/scalearc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"scalegrid\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/scalegrid\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"scality\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/scality\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"scsk\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/scsk\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"secureworks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/secureworks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sentryone\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sentryone\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"service-control-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/service-control-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"shadow-soft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/shadow-soft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sharefile\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sharefile\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"shareshiftneeraj.test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/shareshiftneeraj.test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"shieldx-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/shieldx-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sidm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sidm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sightapps\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sightapps\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"signal-sciences\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/signal-sciences\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"silver-peak-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/silver-peak-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"simmachinesinc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/simmachinesinc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"simplygon\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/simplygon\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sinefa\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sinefa\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sios_datakeeper\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sios_datakeeper\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sisense\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sisense\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Site24x7\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Site24x7\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"skyarc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/skyarc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"smartmessage-autoflow\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/smartmessage-autoflow\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"snaplogic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/snaplogic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"soasta\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/soasta\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"softnas\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/softnas\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"soha\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/soha\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"solanolabs\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/solanolabs\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"solar-security\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/solar-security\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"solarwinds\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/solarwinds\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sonicwall-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sonicwall-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sophos\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sophos\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"south-river-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/south-river-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"spacecurve\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/spacecurve\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"spagobi\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/spagobi\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sparklinglogic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sparklinglogic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sphere3d\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sphere3d\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"splunk\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/splunk\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sqlstream\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sqlstream\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"src-solution\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/src-solution\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stackato-platform-as-a-service\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stackato-platform-as-a-service\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Stackify.LinuxAgent.Extension\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Stackify.LinuxAgent.Extension\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stackstorm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stackstorm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"startekfingerprintmatch\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/startekfingerprintmatch\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"starwind\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/starwind\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"StatusReport.Diagnostics.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/StatusReport.Diagnostics.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stealthbits\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stealthbits\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"steelhive\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/steelhive\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stonefly\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stonefly\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stormshield\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stormshield\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"storreduce\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/storreduce\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stratalux\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stratalux\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stratis-group-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stratis-group-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"stratumn\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/stratumn\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"streamsets\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/streamsets\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"striim\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/striim\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"sumologic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/sumologic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"SUSE\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/SUSE\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec.CloudWorkloadProtection\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec.CloudWorkloadProtection\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec.CloudWorkloadProtection.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec.CloudWorkloadProtection.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec.CloudWorkloadProtection.TestOnStage\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec.CloudWorkloadProtection.TestOnStage\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec.QA\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec.QA\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec.staging\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec.staging\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Symantec.test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Symantec.test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"symantectest1\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/symantectest1\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"synack-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/synack-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"syncfusion\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/syncfusion\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"syncfusionbigdataplatfor\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/syncfusionbigdataplatfor\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"syncfusiondashboard\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/syncfusiondashboard\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"synechron-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/synechron-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"syte\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/syte\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tableau\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tableau\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tactic\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tactic\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"talari-networks\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/talari-networks\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"talena-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/talena-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"talon\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/talon\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"targit\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/targit\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tavendo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tavendo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"te-systems\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/te-systems\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"techdivision\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/techdivision\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"techlatest\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/techlatest\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"telepat\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/telepat\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tenable\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tenable\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"teradata\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/teradata\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Teradici\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Teradici\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test.Gemalto.SafeNet.ProtectV\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test.Gemalto.SafeNet.ProtectV\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test.HP.AppDefender\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test.HP.AppDefender\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test.Microsoft.VisualStudio.Services\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test.Microsoft.VisualStudio.Services\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test.NJHP.AppDefender\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test.NJHP.AppDefender\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test.TrendMicro.DeepSecurity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test.TrendMicro.DeepSecurity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test1.NJHP.AppDefender\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test1.NJHP.AppDefender\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Test3.Microsoft.VisualStudio.Services\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Test3.Microsoft.VisualStudio.Services\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"thales-vormetric\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/thales-vormetric\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"thoughtspot-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/thoughtspot-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tibco-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tibco-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tig\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tig\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"timextender\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/timextender\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tmaxsoft\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tmaxsoft\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tokyosystemhouse\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tokyosystemhouse\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"topdesk\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/topdesk\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"torusware\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/torusware\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"totemo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/totemo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"townsend-security\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/townsend-security\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"transvault\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/transvault\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"trendmicro\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/trendmicro\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"TrendMicro.DeepSecurity\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/TrendMicro.DeepSecurity\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"TrendMicro.PortalProtect\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/TrendMicro.PortalProtect\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tresorit\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tresorit\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"truestack\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/truestack\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tsa-public-service\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tsa-public-service\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"tunnelbiz\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/tunnelbiz\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"twistlock\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/twistlock\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"typesafe\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/typesafe\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ubeeko\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ubeeko\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ubercloud\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ubercloud\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"ulex\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/ulex\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"unidesk\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/unidesk\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"unidesk-corp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/unidesk-corp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"unifi-software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/unifi-software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"uniprint-net\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/uniprint-net\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"unitrends\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/unitrends\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"usp\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/usp\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"varnish\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/varnish\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vaultive-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vaultive-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vbot\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vbot\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"veeam\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/veeam\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"velocitydb-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/velocitydb-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"velocloud\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/velocloud\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"velostrata\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/velostrata\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"velostrata-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/velostrata-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"veritas\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/veritas\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"versasec\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/versasec\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vidispine\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vidispine\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vidizmo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vidizmo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vigyanlabs-innovations-pvt-ltd\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vigyanlabs-innovations-pvt-ltd\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vintegris\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vintegris\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"viptela\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/viptela\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vircom\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vircom\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vizixiotplatformretail001\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vizixiotplatformretail001\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vmturbo\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vmturbo\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"Vormetric\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/Vormetric\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vte\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vte\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"vu-llc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/vu-llc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"WAD2AI.Diagnostics.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/WAD2AI.Diagnostics.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"WAD2EventHub.Diagnostics.Test\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/WAD2EventHub.Diagnostics.Test\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"wallix\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/wallix\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"wanpath-dba-myworkdrive\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/wanpath-dba-myworkdrive\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"waratek\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/waratek\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"wardy-it-solutions\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/wardy-it-solutions\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"warewolf-esb\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/warewolf-esb\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"watchguard-technologies\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/watchguard-technologies\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"waves\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/waves\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"websense-apmailpe\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/websense-apmailpe\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"winmagic_securedoc_cloudvm\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/winmagic_securedoc_cloudvm\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"wmspanel\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/wmspanel\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"workshare-technology\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/workshare-technology\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"workspot\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/workspot\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"wowza\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/wowza\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"xendata-inc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/xendata-inc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"xfinityinc\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/xfinityinc\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"xtremedata\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/xtremedata\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"xyzrd-group-ou\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/xyzrd-group-ou\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"yellowfin\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/yellowfin\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"your-shop-online\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/your-shop-online\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"z1\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/z1\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"z4it-aps\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/z4it-aps\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"zend\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/zend\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"zerodown_software\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/zerodown_software\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"zerto\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/zerto\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"zoomdata\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/zoomdata\"\r\n },\r\n {\r\n \"location\": \"westus\",\r\n \"name\": \"zscaler\",\r\n \"id\": \"/Subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/Providers/Microsoft.Compute/Locations/westus/Publishers/zscaler\"\r\n }\r\n]", + "ResponseHeaders": { + "Content-Length": [ + "150194" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "x-ms-served-by": [ + "2747c2e2-3160-4ce0-a683-abb6a835b6e9_131696986048482852" + ], + "x-ms-request-id": [ + "f005b905-9f25-4a04-aa88-8726f6b733cf" + ], + "Cache-Control": [ + "no-cache" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14999" + ], + "x-ms-correlation-request-id": [ + "79003797-db39-4941-a325-f633c30d5b34" + ], + "x-ms-routing-request-id": [ + "WESTUS2:20180711T192733Z:79003797-db39-4941-a325-f633c30d5b34" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 11 Jul 2018 19:27:32 GMT" + ] + }, + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb" + } +} \ No newline at end of file diff --git a/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachineSizes.json b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachineSizes.json new file mode 100644 index 000000000000..317b04e27d44 --- /dev/null +++ b/src/Common/Commands.Common.Compute.Tests/SessionRecords/Microsoft.Azure.Commands.Common.Compute.Tests.Version2016_04_preview.ComputeManagementClientShould/ListVirtualMachineSizes.json @@ -0,0 +1,78 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Compute/locations/WestUs/vmSizes?api-version=2016-04-30-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Byb3ZpZGVycy9NaWNyb3NvZnQuQ29tcHV0ZS9sb2NhdGlvbnMvV2VzdFVzL3ZtU2l6ZXM/YXBpLXZlcnNpb249MjAxNi0wNC0zMC1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "38fea5ab-5024-4ce7-9dd6-635ce1d1627a" + ], + "accept-language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Commands.Common.Compute.Version2016_04_preview.ComputeManagementClient/1.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"name\": \"Standard_B1ms\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 4096,\r\n \"memoryInMB\": 2048,\r\n \"maxDataDiskCount\": 2\r\n },\r\n {\r\n \"name\": \"Standard_B1s\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 2048,\r\n \"memoryInMB\": 1024,\r\n \"maxDataDiskCount\": 2\r\n },\r\n {\r\n \"name\": \"Standard_B2ms\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 16384,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_B2s\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 8192,\r\n \"memoryInMB\": 4096,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_B4ms\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 32768,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_B8ms\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS1_v2\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 7168,\r\n \"memoryInMB\": 3584,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_DS2_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 14336,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS3_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS4_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS5_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS11-1_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS11_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS12-1_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS12-2_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS12_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS13-2_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS13-4_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS13_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS14-4_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 229376,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS14-8_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 229376,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS14_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 229376,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS15_v2\",\r\n \"numberOfCores\": 20,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 286720,\r\n \"memoryInMB\": 143360,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS2_v2_Promo\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 14336,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS3_v2_Promo\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS4_v2_Promo\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS5_v2_Promo\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS11_v2_Promo\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS12_v2_Promo\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS13_v2_Promo\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS14_v2_Promo\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 229376,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_F1s\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 4096,\r\n \"memoryInMB\": 2048,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_F2s\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 8192,\r\n \"memoryInMB\": 4096,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_F4s\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 16384,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_F8s\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 32768,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_F16s\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_D2s_v3\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 16384,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_D4s_v3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 32768,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D8s_v3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D16s_v3\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 131072,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D32s_v3\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 262144,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_A0\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 20480,\r\n \"memoryInMB\": 768,\r\n \"maxDataDiskCount\": 1\r\n },\r\n {\r\n \"name\": \"Standard_A1\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 71680,\r\n \"memoryInMB\": 1792,\r\n \"maxDataDiskCount\": 2\r\n },\r\n {\r\n \"name\": \"Standard_A2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 138240,\r\n \"memoryInMB\": 3584,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_A3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 291840,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_A5\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 138240,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_A4\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 619520,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_A6\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 291840,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_A7\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 619520,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Basic_A0\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 20480,\r\n \"memoryInMB\": 768,\r\n \"maxDataDiskCount\": 1\r\n },\r\n {\r\n \"name\": \"Basic_A1\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 40960,\r\n \"memoryInMB\": 1792,\r\n \"maxDataDiskCount\": 2\r\n },\r\n {\r\n \"name\": \"Basic_A2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 61440,\r\n \"memoryInMB\": 3584,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Basic_A3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 122880,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Basic_A4\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 245760,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D1_v2\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 51200,\r\n \"memoryInMB\": 3584,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_D2_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D3_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D4_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D5_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_D11_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D12_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D13_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D14_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_D15_v2\",\r\n \"numberOfCores\": 20,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 286720,\r\n \"memoryInMB\": 143360,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_D2_v2_Promo\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D3_v2_Promo\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D4_v2_Promo\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D5_v2_Promo\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_D11_v2_Promo\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D12_v2_Promo\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D13_v2_Promo\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D14_v2_Promo\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_F1\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 16384,\r\n \"memoryInMB\": 2048,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_F2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 32768,\r\n \"memoryInMB\": 4096,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_F4\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_F8\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 131072,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_F16\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 262144,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_A1_v2\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 10240,\r\n \"memoryInMB\": 2048,\r\n \"maxDataDiskCount\": 2\r\n },\r\n {\r\n \"name\": \"Standard_A2m_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 20480,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_A2_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 20480,\r\n \"memoryInMB\": 4096,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_A4m_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 40960,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_A4_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 40960,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_A8m_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 81920,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_A8_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 81920,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D2_v3\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 51200,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_D4_v3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D8_v3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D16_v3\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 65636,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D32_v3\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D1\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 51200,\r\n \"memoryInMB\": 3584,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_D2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D4\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D11\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_D12\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_D13\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D14\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_DS1\",\r\n \"numberOfCores\": 1,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 7168,\r\n \"memoryInMB\": 3584,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_DS2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 14336,\r\n \"memoryInMB\": 7168,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS4\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS11\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 28672,\r\n \"memoryInMB\": 14336,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_DS12\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_DS13\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_DS14\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 229376,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_D64_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1638400,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_D64s_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 524288,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E2_v3\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 51200,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_E4_v3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 102400,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_E8_v3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 204800,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_E16_v3\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 409600,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E20_v3\",\r\n \"numberOfCores\": 20,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 512000,\r\n \"memoryInMB\": 163840,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E32_v3\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 819200,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E64i_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1638400,\r\n \"memoryInMB\": 442368,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E64_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1638400,\r\n \"memoryInMB\": 442368,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E2s_v3\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 32768,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_E4-2s_v3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_E4s_v3\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_E8-2s_v3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 131072,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_E8-4s_v3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 131072,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_E8s_v3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 131072,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_E16-4s_v3\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 262144,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E16-8s_v3\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 262144,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E16s_v3\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 262144,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E20s_v3\",\r\n \"numberOfCores\": 20,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 327680,\r\n \"memoryInMB\": 163840,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E32-8s_v3\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 524288,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E32-16s_v3\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 524288,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E32s_v3\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 524288,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E64-16s_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 884736,\r\n \"memoryInMB\": 442368,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E64-32s_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 884736,\r\n \"memoryInMB\": 442368,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E64is_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 884736,\r\n \"memoryInMB\": 442368,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_E64s_v3\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 884736,\r\n \"memoryInMB\": 442368,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_G1\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 393216,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_G2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 786432,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_G3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1572864,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_G4\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 3145728,\r\n \"memoryInMB\": 229376,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_G5\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 6291456,\r\n \"memoryInMB\": 458752,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_GS1\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 57344,\r\n \"memoryInMB\": 28672,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_GS2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 114688,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_GS3\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 229376,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_GS4\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 458752,\r\n \"memoryInMB\": 229376,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_GS4-4\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 458752,\r\n \"memoryInMB\": 229376,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_GS4-8\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 458752,\r\n \"memoryInMB\": 229376,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_GS5\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 917504,\r\n \"memoryInMB\": 458752,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_GS5-8\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 917504,\r\n \"memoryInMB\": 458752,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_GS5-16\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 917504,\r\n \"memoryInMB\": 458752,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_L4s\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 694272,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_L8s\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1421312,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_L16s\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 2874368,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_L32s\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 5765120,\r\n \"memoryInMB\": 262144,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_A8\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 391168,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_A9\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 391168,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_A10\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 391168,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_A11\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 391168,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_H8\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1024000,\r\n \"memoryInMB\": 57344,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_H16\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 2048000,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_H8m\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 1024000,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_H16m\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 2048000,\r\n \"memoryInMB\": 229376,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_H16r\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 2048000,\r\n \"memoryInMB\": 114688,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_H16mr\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 2048000,\r\n \"memoryInMB\": 229376,\r\n \"maxDataDiskCount\": 64\r\n },\r\n {\r\n \"name\": \"Standard_F2s_v2\",\r\n \"numberOfCores\": 2,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 16384,\r\n \"memoryInMB\": 4096,\r\n \"maxDataDiskCount\": 4\r\n },\r\n {\r\n \"name\": \"Standard_F4s_v2\",\r\n \"numberOfCores\": 4,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 32768,\r\n \"memoryInMB\": 8192,\r\n \"maxDataDiskCount\": 8\r\n },\r\n {\r\n \"name\": \"Standard_F8s_v2\",\r\n \"numberOfCores\": 8,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 65536,\r\n \"memoryInMB\": 16384,\r\n \"maxDataDiskCount\": 16\r\n },\r\n {\r\n \"name\": \"Standard_F16s_v2\",\r\n \"numberOfCores\": 16,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 131072,\r\n \"memoryInMB\": 32768,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_F32s_v2\",\r\n \"numberOfCores\": 32,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 262144,\r\n \"memoryInMB\": 65536,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_F64s_v2\",\r\n \"numberOfCores\": 64,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 524288,\r\n \"memoryInMB\": 131072,\r\n \"maxDataDiskCount\": 32\r\n },\r\n {\r\n \"name\": \"Standard_F72s_v2\",\r\n \"numberOfCores\": 72,\r\n \"osDiskSizeInMB\": 1047552,\r\n \"resourceDiskSizeInMB\": 589824,\r\n \"memoryInMB\": 147456,\r\n \"maxDataDiskCount\": 32\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "34466" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-resource": [ + "Microsoft.Compute/GetSubscriptionInfo3Min;479" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "x-ms-served-by": [ + "92ee2ba5-d1cb-4536-af4e-e306b67c70d2_131757701560880137" + ], + "x-ms-request-id": [ + "3b81816c-6e5d-4b34-92ae-595bce366364" + ], + "Cache-Control": [ + "no-cache" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14998" + ], + "x-ms-correlation-request-id": [ + "5ff56ad5-e8d2-4704-a4f5-f55e62afce1f" + ], + "x-ms-routing-request-id": [ + "WESTUS2:20180711T192736Z:5ff56ad5-e8d2-4704-a4f5-f55e62afce1f" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Wed, 11 Jul 2018 19:27:36 GMT" + ] + }, + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb" + } +} \ No newline at end of file diff --git a/src/Common/Commands.Common.Compute.Tests/Version2016-04-preview/ComputeManagementClientShould.cs b/src/Common/Commands.Common.Compute.Tests/Version2016-04-preview/ComputeManagementClientShould.cs index 714fa5e1346f..274f3e8a156e 100644 --- a/src/Common/Commands.Common.Compute.Tests/Version2016-04-preview/ComputeManagementClientShould.cs +++ b/src/Common/Commands.Common.Compute.Tests/Version2016-04-preview/ComputeManagementClientShould.cs @@ -12,64 +12,76 @@ // limitations under the License. // ---------------------------------------------------------------------------------- - - namespace Microsoft.Azure.Commands.Common.Compute.Tests { using Compute.Version2016_04_preview; - using Microsoft.WindowsAzure.Commands.ScenarioTest; using Xunit; + using System; using System.Linq; + using System.IO; + using Microsoft.Azure.Test.HttpRecorder; + using Microsoft.Rest.ClientRuntime.Azure.TestFramework; + using Microsoft.WindowsAzure.Commands.ScenarioTest; namespace Version2016_04_preview { public class ComputeManagementClientShould { - private IComputeManagementClient Client {get;} - public ComputeManagementClientShould() { - var credManager = CredentialManager.FromServicePrincipalEnvVariable(); - Client = new ComputeManagementClient(credManager.TokenCredentials) - { - SubscriptionId = credManager.SubscriptionId - }; + HttpMockServer.RecordsDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionRecords"); } [Fact] - [Trait(Category.RunType, Category.LiveOnly)] + [Trait(Category.RunType, Category.CheckIn)] public void ListVirtualMachine() { - var vmClient = Client.VirtualMachines; - var vms = vmClient.ListAll().ToList(); - Assert.True(vms.Count > 0); + using (var context = MockContext.Start(this.GetType().FullName)) + { + var client = context.GetServiceClient(); + var vmClient = client.VirtualMachines; + var vms = vmClient.ListAll().ToList(); + Assert.True(vms.Count > 0); + } } [Fact] - [Trait(Category.RunType, Category.LiveOnly)] + [Trait(Category.RunType, Category.CheckIn)] public void ListVirtualMachineSizes() { - var vmSizeClient = Client.VirtualMachineSizes; - var vmSizes = vmSizeClient.List("WestUs").ToList(); - Assert.True(vmSizes.Count > 0); + using (var context = MockContext.Start(this.GetType().FullName)) + { + var client = context.GetServiceClient(); + var vmSizeClient = client.VirtualMachineSizes; + var vmSizes = vmSizeClient.List("WestUs").ToList(); + Assert.True(vmSizes.Count > 0); + } } [Fact] - [Trait(Category.RunType, Category.LiveOnly)] + [Trait(Category.RunType, Category.CheckIn)] public void ListVirtualMachineImagePublishers() { - var vmImagesClient = Client.VirtualMachineImages; - var vmImagePublisers = vmImagesClient.ListPublishers("WestUs").ToList(); - Assert.True(vmImagePublisers.Count > 0); + using (var context = MockContext.Start(this.GetType().FullName)) + { + var client = context.GetServiceClient(); + var vmImagesClient = client.VirtualMachineImages; + var vmImagePublisers = vmImagesClient.ListPublishers("WestUs").ToList(); + Assert.True(vmImagePublisers.Count > 0); + } } [Fact] - [Trait(Category.RunType, Category.LiveOnly)] + [Trait(Category.RunType, Category.CheckIn)] public void ListDisks() { - var disksClient = Client.Disks; - var disks = disksClient.List().ToList(); - Assert.True(disks.Count > 0); + using (var context = MockContext.Start(this.GetType().FullName)) + { + var client = context.GetServiceClient(); + var disksClient = client.Disks; + var disks = disksClient.List().ToList(); + Assert.True(disks.Count > 0); + } } } } diff --git a/src/Common/Commands.Common.Compute.Tests/packages.config b/src/Common/Commands.Common.Compute.Tests/packages.config index 7ee6464e10a1..2d8e069fcb55 100644 --- a/src/Common/Commands.Common.Compute.Tests/packages.config +++ b/src/Common/Commands.Common.Compute.Tests/packages.config @@ -1,6 +1,9 @@  + + + diff --git a/src/ResourceManager/Common/Commands.TestFx/Commands.TestFx.Netcore.csproj b/src/ResourceManager/Common/Commands.TestFx/Commands.TestFx.Netcore.csproj new file mode 100644 index 000000000000..f026b23e2485 --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/Commands.TestFx.Netcore.csproj @@ -0,0 +1,45 @@ + + + + + + netcoreapp2.0 + Microsoft.Azure.Commands.TestFx + Microsoft.Azure.Commands.TestFx + false + + + + false + TRACE;DEBUG;NETSTANDARD + true + + + + + true + true + MSSharedLibKey.snk + TRACE;RELEASE;NETSTANDARD;SIGN + true + + + + + + + + + + + + + + + + + + PreserveNewest + + + \ No newline at end of file diff --git a/src/ResourceManager/Common/Commands.TestFx/Commands.TestFx.csproj b/src/ResourceManager/Common/Commands.TestFx/Commands.TestFx.csproj new file mode 100644 index 000000000000..d5690e01f7fa --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/Commands.TestFx.csproj @@ -0,0 +1,115 @@ + + + + + Debug + AnyCPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A} + Library + Properties + Microsoft.Azure.Commands.TestFx + Microsoft.Azure.Commands.TestFx + v4.5.2 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\packages\Hyak.Common.1.1.0\lib\net45\Hyak.Common.dll + + + ..\..\..\packages\Microsoft.Azure.Test.HttpRecorder.1.8.1\lib\net452\Microsoft.Azure.Test.HttpRecorder.dll + + + ..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll + + + ..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll + + + ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.0\lib\net452\Microsoft.Rest.ClientRuntime.Azure.Authentication.dll + + + ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.TestFramework.1.7.2\lib\net452\Microsoft.Rest.ClientRuntime.Azure.TestFramework.dll + + + ..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll + + + ..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + ..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + ..\..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + + + + + + + + ..\..\..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll + + + ..\..\..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll + + + + ..\..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll + + + + + + + + + + + + + + + + {70527617-7598-4aef-b5bd-db9186b8184b} + Commands.Common.Authentication.Abstractions + + + {d3804b64-c0d3-48f8-82ec-1f632f833c9e} + Commands.Common.Authentication + + + {269ACF73-0A34-42DC-AB9C-4B15931A489D} + Commands.Common.Graph.RBAC + + + {69C2EB6B-CD63-480A-89A0-C489706E9299} + Commands.Common.Authentication.ResourceManager + + + {3436a126-edc9-4060-8952-9a1be34cdd95} + Commands.ScenarioTests.ResourceManager.Common + + + + + \ No newline at end of file diff --git a/src/ResourceManager/Common/Commands.TestFx/ITestRunner.cs b/src/ResourceManager/Common/Commands.TestFx/ITestRunner.cs new file mode 100644 index 000000000000..b833046a9792 --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/ITestRunner.cs @@ -0,0 +1,21 @@ +// ---------------------------------------------------------------------------------- +// +// 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. +// ---------------------------------------------------------------------------------- + +namespace Microsoft.Azure.Commands.TestFx +{ + public interface ITestRunner + { + void RunTestScript(params string[] scripts); + } +} diff --git a/src/ResourceManager/Common/Commands.TestFx/ITestRunnerFactory.cs b/src/ResourceManager/Common/Commands.TestFx/ITestRunnerFactory.cs new file mode 100644 index 000000000000..6de9e740857a --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/ITestRunnerFactory.cs @@ -0,0 +1,32 @@ +// ---------------------------------------------------------------------------------- +// +// 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 System; +using System.Collections.Generic; +using Microsoft.WindowsAzure.Commands.ScenarioTest; + +namespace Microsoft.Azure.Commands.TestFx +{ + public interface ITestRunnerFactory + { + ITestRunner Build(); + ITestRunnerFactory WithProjectSubfolderForTests(string folderName); + ITestRunnerFactory WithCommonPsScripts(string[] psScriptList); + ITestRunnerFactory WithNewPsScriptFilename(string psScriptName); + ITestRunnerFactory WithExtraRmModules(Func buildModuleList); + ITestRunnerFactory WithNewRmModules(Func buildModuleList); + ITestRunnerFactory WithExtraUserAgentsToIgnore(Dictionary userAgentsToIgnore); + ITestRunnerFactory WithBuildMatcher(BuildMatcherDelegate buildMatcher); + } +} diff --git a/src/ResourceManager/Common/Commands.TestFx/Properties/AssemblyInfo.cs b/src/ResourceManager/Common/Commands.TestFx/Properties/AssemblyInfo.cs new file mode 100644 index 000000000000..9d5372ca7ccc --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Commands.TestFx")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Microsoft Azure Powershell")] +[assembly: AssemblyCopyright("Copyright © Microsoft")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("8c625de3-0067-454a-af2c-efd672eeb31a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/ResourceManager/Common/Commands.TestFx/TestClientFactory.cs b/src/ResourceManager/Common/Commands.TestFx/TestClientFactory.cs new file mode 100644 index 000000000000..164f91e5778e --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/TestClientFactory.cs @@ -0,0 +1,144 @@ +// ---------------------------------------------------------------------------------- +// +// 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 System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.Common.Authentication.Models; +using Microsoft.Azure.Graph.RBAC.Version1_6; +using Microsoft.Rest; +using Microsoft.Rest.ClientRuntime.Azure.TestFramework; + +namespace Microsoft.Azure.Commands.TestFx +{ + public class TestClientFactory : IClientFactory + { + private readonly MockContext _mockContext; + + public TestClientFactory(MockContext mockContext) + { + if (mockContext == null) throw new ArgumentNullException(nameof(mockContext)); + _mockContext = mockContext; + } + + public TClient CreateArmClient(IAzureContext context, string endpoint) where TClient : ServiceClient + { + if (typeof(TClient) != typeof(GraphRbacManagementClient)) + { + return _mockContext.GetServiceClient(); + } + + var graphClient = _mockContext.GetGraphServiceClient(); + graphClient.TenantID = context.Tenant.Id; + return graphClient as TClient; + } + + public TClient CreateCustomArmClient(params object[] parameters) where TClient : ServiceClient + { + return _mockContext.GetServiceClient(); + } + + public HttpClient CreateHttpClient(string endpoint, ICredentials credentials) + { + throw new NotImplementedException(); + } + + public HttpClient CreateHttpClient(string endpoint, HttpMessageHandler effectiveHandler) + { + throw new NotImplementedException(); + } + + #region Action and Handler + + public void AddAction(IClientAction action) + { + // Do nothing + } + + public void RemoveAction(Type actionType) + { + // Do nothing + } + + public void AddHandler(T handler) where T : DelegatingHandler, ICloneable + { + // Do nothing + } + + public void RemoveHandler(Type handlerType) + { + // Do nothing + } + public DelegatingHandler[] GetCustomHandlers() + { + // Do nothing + return new DelegatingHandler[0]; + } + + #endregion + + #region UserAgent + + public HashSet UniqueUserAgents { get; set; } = new HashSet(); + + public void AddUserAgent(string productName, string productVersion) + { + UniqueUserAgents.Add(new ProductInfoHeaderValue(productName, productVersion)); + } + + public void AddUserAgent(string productName) + { + AddUserAgent(productName, string.Empty); + } + + public void RemoveUserAgent(string name) + { + UniqueUserAgents.RemoveWhere(p => string.Equals(p.Product.Name, name, StringComparison.OrdinalIgnoreCase)); + } + + public ProductInfoHeaderValue[] UserAgents => UniqueUserAgents.ToArray(); + + #endregion + + #region Hyak + + public TClient CreateClient(IAzureContext context, string endpoint) where TClient : Hyak.Common.ServiceClient + { + throw new NotImplementedException(); + } + + public TClient CreateClient(IAzureContextContainer profile, string endpoint) where TClient : Hyak.Common.ServiceClient + { + throw new NotImplementedException(); + } + + public TClient CreateClient(IAzureContextContainer profile, IAzureSubscription subscription, string endpoint) where TClient : Hyak.Common.ServiceClient + { + throw new NotImplementedException(); + } + + public TClient CreateCustomClient(params object[] parameters) where TClient : Hyak.Common.ServiceClient + { + throw new NotImplementedException(); + } + + #endregion + + } +} diff --git a/src/ResourceManager/Common/Commands.TestFx/TestManager.cs b/src/ResourceManager/Common/Commands.TestFx/TestManager.cs new file mode 100644 index 000000000000..4124bff6f059 --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/TestManager.cs @@ -0,0 +1,296 @@ +// ---------------------------------------------------------------------------------- +// +// 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 System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.Common.Authentication.Models; +using Microsoft.Azure.Commands.ResourceManager.Common; +using Microsoft.Azure.ServiceManagemenet.Common.Models; +using Microsoft.Azure.Test.HttpRecorder; +using Microsoft.Rest.ClientRuntime.Azure.TestFramework; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Xunit.Abstractions; + +namespace Microsoft.Azure.Commands.TestFx +{ + public delegate IRecordMatcher BuildMatcherDelegate (bool ignoreResourcesClient, Dictionary resourceProviders, Dictionary userAgentsToIgnore); + + public class TestManager : ITestRunnerFactory, ITestRunner + { + private readonly string _callingClassName; + private string _projectSubfolderForTestsName = null; + private string _newPsScriptFilename = null; + private Dictionary _userAgentsToIgnore; + protected EnvironmentSetupHelper Helper; + protected readonly List RmModules; + protected readonly List CommonPsScripts = new List(); + + protected BuildMatcherDelegate BuildMatcher { get; set; } + + protected XunitTracingInterceptor Logger { get; set; } + + /// + /// Factory method + /// + /// + /// + /// + public static ITestRunnerFactory CreateInstance(ITestOutputHelper output, [CallerFilePath] string callerFilePath = null) + { + var callingClassName = string.IsNullOrEmpty(callerFilePath) + ? null + : Path.GetFileNameWithoutExtension(callerFilePath); + return new TestManager(callingClassName).WithTestOutputHelper(output); + } + + /// + /// ctor + /// + /// + protected TestManager(string callingClassName) + { + Helper = new EnvironmentSetupHelper(); + _callingClassName = callingClassName; + + RmModules = new List + { + Helper.RMProfileModule, + Helper.RMResourceModule, + }; + + BuildMatcher = (ignoreResourcesClient, resourceProviders, userAgentsToIgnore) => + new PermissiveRecordMatcherWithApiExclusion(ignoreResourcesClient, resourceProviders, userAgentsToIgnore); + } + + #region Builder impl + + /// + /// Sets a name of the subfolder where a test project keeps tests + /// + /// + /// self + public ITestRunnerFactory WithProjectSubfolderForTests(string folderName) + { + _projectSubfolderForTestsName = folderName ?? "ScenarioTests"; + return this; + } + + /// + /// Add helper scripts + /// + /// + /// self + public ITestRunnerFactory WithCommonPsScripts(string[] psScriptList) + { + CommonPsScripts.AddRange(psScriptList); + return this; + } + + /// + /// Overrided default script name, which by convension is the cs test class name with ps1 extension. + /// + /// + /// self + public ITestRunnerFactory WithNewPsScriptFilename(string psScriptName) + { + _newPsScriptFilename = psScriptName; + return this; + } + + /// + /// Adds extra RM modules in addition to the RMProfileModule and RMResourceModule, + /// witch are added in the constructor. + /// + /// + /// + public ITestRunnerFactory WithExtraRmModules(Func buildModuleList) + { + var moduleList = buildModuleList(Helper); + RmModules.AddRange(moduleList); + return this; + } + + /// + /// Clears default RM modules list and sets a brand new + /// + /// + /// + public ITestRunnerFactory WithNewRmModules(Func buildModuleList) + { + RmModules.Clear(); + var moduleList = buildModuleList(Helper); + RmModules.AddRange(moduleList); + return this; + } + + /// + /// Sets a new HttpMockServer.Matcher implementation. By defauls it's PermissiveRecordMatcherWithApiExclusion + /// + /// delegate + /// self + public ITestRunnerFactory WithBuildMatcher(BuildMatcherDelegate buildMatcher) + { + BuildMatcher = buildMatcher; + return this; + } + + /// + /// + /// + /// + /// Dictionary to store pairs: {user agent name, version-api to ignore}. + /// Initial pair is {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"} + /// + /// self + public ITestRunnerFactory WithExtraUserAgentsToIgnore(Dictionary userAgentsToIgnore) + { + _userAgentsToIgnore = userAgentsToIgnore; + return this; + } + + public ITestRunnerFactory WithTestOutputHelper(ITestOutputHelper output) + { + Logger = new XunitTracingInterceptor(output); + XunitTracingInterceptor.AddToContext(Logger); + Helper.TracingInterceptor = Logger; + return this; + } + + public ITestRunner Build() + { + SetupSessionAndProfile(); + SetupMockServerMatcher(); + HttpMockServer.RecordsDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionRecords"); + Helper.SetupModules(AzureModule.AzureResourceManager, BuildModulesList()); + return this; + } + + public void RunTestScript(params string[] scripts) + { + var sf = new StackTrace().GetFrame(1); + var className = sf.GetMethod().ReflectedType?.ToString(); + var methodName = sf.GetMethod().Name; + + using (var mockContext = MockContext.Start(className, methodName)) + { + AzureSession.Instance.ClientFactory = new TestClientFactory(mockContext); + Helper.SetupEnvironment(AzureModule.AzureResourceManager); + SetupAzureContext(); + Helper.RunPowerShellTest(scripts); + } + } + + #endregion + + #region Helpers + + protected string[] BuildModulesList() + { + if (string.IsNullOrEmpty(_callingClassName) + && string.IsNullOrEmpty(_newPsScriptFilename)) + throw new ArgumentNullException($"Both {nameof(_callingClassName)} and {nameof(_newPsScriptFilename)} are null"); + + var allScripts = CommonPsScripts; + allScripts.Add(_newPsScriptFilename ?? $"{_callingClassName}.ps1"); + + var allScriptsWithPath = _projectSubfolderForTestsName == null + ? allScripts + : allScripts.Select(s => Path.Combine(_projectSubfolderForTestsName, s)); + + var allModules = RmModules; + allModules.AddRange(allScriptsWithPath); + + return allModules.ToArray(); + } + + protected void SetupSessionAndProfile() + { + AzureSessionInitializer.InitializeAzureSession(); + AzureSession.Instance.ARMContextSaveMode = ContextSaveMode.Process; + ResourceManagerProfileProvider.InitializeResourceManagerProfile(); + if (!(AzureSession.Instance?.DataStore is MemoryDataStore)) + { + AzureSession.Instance.DataStore = new MemoryDataStore(); + } + } + + protected void SetupAzureContext() + { + const string tenantIdKey = "TenantId"; + const string domainKey = "Domain"; + const string subscriptionIdKey = "SubscriptionId"; + const string undefined = "Undefined"; + var zeroGuild = Guid.Empty.ToString(); + + string tenantId = null; + string userDomain = null; + string subscriptionId = null; + + if (HttpMockServer.Mode == HttpRecorderMode.Record) + { + var environment = TestEnvironmentFactory.GetTestEnvironment(); + tenantId = environment.Tenant; + userDomain = string.IsNullOrEmpty(environment.UserName) + ? string.Empty + : environment.UserName.Split(new[] { "@" }, StringSplitOptions.RemoveEmptyEntries).Last(); + + subscriptionId = environment.SubscriptionId; + } + else if (HttpMockServer.Mode == HttpRecorderMode.Playback) + { + tenantId = HttpMockServer.Variables.ContainsKey(tenantIdKey) + ? HttpMockServer.Variables[tenantIdKey] + : zeroGuild; + userDomain = HttpMockServer.Variables.ContainsKey(domainKey) + ? HttpMockServer.Variables[domainKey] + : "testdomain.onmicrosoft.com"; + subscriptionId = HttpMockServer.Variables.ContainsKey(subscriptionIdKey) + ? HttpMockServer.Variables[subscriptionIdKey] + : zeroGuild; + } + + AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Id = tenantId ?? undefined; + AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Directory = userDomain ?? undefined; + AzureRmProfileProvider.Instance.Profile.DefaultContext.Subscription.Id = subscriptionId ?? undefined; + } + + protected void SetupMockServerMatcher() + { + var resourceProviders = new Dictionary + { + {"Microsoft.Resources", null}, + {"Microsoft.Features", null}, + {"Microsoft.Authorization", null}, + {"Providers.Test", null}, + }; + + var userAgentsToIgnore = new Dictionary + { + {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"}, + }; + + _userAgentsToIgnore?.Keys.ForEach(k=> userAgentsToIgnore.Add(k, _userAgentsToIgnore[k])); + + HttpMockServer.Matcher = BuildMatcher(true, resourceProviders, userAgentsToIgnore); + } + + #endregion + } +} diff --git a/src/ResourceManager/Common/Commands.TestFx/TestRunnerBase.cs b/src/ResourceManager/Common/Commands.TestFx/TestRunnerBase.cs new file mode 100644 index 000000000000..f1a6fa44c1cb --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/TestRunnerBase.cs @@ -0,0 +1,31 @@ +// ---------------------------------------------------------------------------------- +// +// 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 Xunit.Abstractions; + +namespace Microsoft.Azure.Commands.TestFx +{ + public class TestRunnerBase + { + protected readonly ITestRunner TestRunner; + + protected TestRunnerBase(ITestOutputHelper output) + { + TestRunner = TestManager + .CreateInstance(output) + .WithNewPsScriptFilename($"{GetType().Name}.ps1") + .Build(); + } + } +} diff --git a/src/ResourceManager/Common/Commands.TestFx/packages.config b/src/ResourceManager/Common/Commands.TestFx/packages.config new file mode 100644 index 000000000000..6257334dbbf8 --- /dev/null +++ b/src/ResourceManager/Common/Commands.TestFx/packages.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/ResourceManager/Profile/Commands.Profile.Test/ArgumentCompleterTests.cs b/src/ResourceManager/Profile/Commands.Profile.Test/ArgumentCompleterTests.cs index 5628a67b809e..918f03dc19fc 100644 --- a/src/ResourceManager/Profile/Commands.Profile.Test/ArgumentCompleterTests.cs +++ b/src/ResourceManager/Profile/Commands.Profile.Test/ArgumentCompleterTests.cs @@ -12,48 +12,39 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.Commands.ResourceManager.Common; -using Microsoft.Azure.Commands.Resources.Test.ScenarioTests; -using Microsoft.Azure.Commands.ScenarioTest; -using Microsoft.Azure.ServiceManagemenet.Common.Models; +using Microsoft.Azure.Commands.TestFx; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Profile.Test { - public class ArgumentCompleterTests : RMTestBase + public class ArgumentCompleterTests : TestRunnerBase { - private XunitTracingInterceptor xunitLogger; - - public ArgumentCompleterTests(ITestOutputHelper output) + public ArgumentCompleterTests(ITestOutputHelper output) + : base(output) { - TestExecutionHelpers.SetUpSessionAndProfile(); - ResourceManagerProfileProvider.InitializeResourceManagerProfile(true); - - xunitLogger = new XunitTracingInterceptor(output); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestLocationCompleter() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-LocationCompleter"); + TestRunner.RunTestScript("Test-LocationCompleter"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestResourceGroupCompleter() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-ResourceGroupCompleter"); + TestRunner.RunTestScript("Test-ResourceGroupCompleter"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestResourceIdCompleter() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-ResourceIdCompleter"); + TestRunner.RunTestScript("Test-ResourceIdCompleter"); } } } \ No newline at end of file diff --git a/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.Netcore.csproj b/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.Netcore.csproj index 9855d2b375fd..178db687395f 100644 --- a/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.Netcore.csproj +++ b/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.Netcore.csproj @@ -32,6 +32,7 @@ + diff --git a/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.csproj b/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.csproj index 980d43680b0a..e906426a6a76 100644 --- a/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.csproj +++ b/src/ResourceManager/Profile/Commands.Profile.Test/Commands.Profile.Test.csproj @@ -246,6 +246,10 @@ {3819d8a7-c62c-4c47-8ddd-0332d9ce1252} Commands.ResourceManager.Common + + {8c625de3-0067-454a-af2c-efd672eeb31a} + Commands.TestFx + {142d7b0b-388a-4ceb-a228-7f6d423c5c2e} Commands.Profile diff --git a/src/ResourceManager/Profile/Commands.Profile.Test/DefaultCmdletTests.cs b/src/ResourceManager/Profile/Commands.Profile.Test/DefaultCmdletTests.cs index f4ba350857cd..401cad089663 100644 --- a/src/ResourceManager/Profile/Commands.Profile.Test/DefaultCmdletTests.cs +++ b/src/ResourceManager/Profile/Commands.Profile.Test/DefaultCmdletTests.cs @@ -12,35 +12,25 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.Commands.ResourceManager.Common; -using Microsoft.Azure.Commands.Resources.Test.ScenarioTests; -using Microsoft.Azure.Commands.ScenarioTest; -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; -using System.Threading; +using Microsoft.Azure.Commands.TestFx; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Profile.Test { - public class DefaultCmdletTests : RMTestBase + public class DefaultCmdletTests : TestRunnerBase { - private XunitTracingInterceptor xunitLogger; - public DefaultCmdletTests(ITestOutputHelper output) + : base(output) { - TestExecutionHelpers.SetUpSessionAndProfile(); - ResourceManagerProfileProvider.InitializeResourceManagerProfile(true); - - xunitLogger = new XunitTracingInterceptor(output); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void DefaultResourceGroup() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-DefaultResourceGroup"); + TestRunner.RunTestScript("Test-DefaultResourceGroup"); } } } diff --git a/src/ResourceManager/Profile/Commands.Profile.Test/SessionRecords/Microsoft.Azure.Commands.Profile.Test.SubscriptionCmdletTests/SetAzureRmContextWithoutSubscription.json b/src/ResourceManager/Profile/Commands.Profile.Test/SessionRecords/Microsoft.Azure.Commands.Profile.Test.SubscriptionCmdletTests/SetAzureRmContextWithoutSubscription.json index 4f6482da069a..8d616121d941 100644 --- a/src/ResourceManager/Profile/Commands.Profile.Test/SessionRecords/Microsoft.Azure.Commands.Profile.Test.SubscriptionCmdletTests/SetAzureRmContextWithoutSubscription.json +++ b/src/ResourceManager/Profile/Commands.Profile.Test/SessionRecords/Microsoft.Azure.Commands.Profile.Test.SubscriptionCmdletTests/SetAzureRmContextWithoutSubscription.json @@ -1,115 +1,28 @@ { "Entries": [ { - "RequestUri": "/tenants?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3RlbmFudHM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestUri": "/tenants?api-version=2016-06-01", + "EncodedRequestUri": "L3RlbmFudHM/YXBpLXZlcnNpb249MjAxNi0wNi0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { - "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" - ] - }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/tenants/1449d5b7-8a83-47db-ae4c-9b03e888bad0\",\r\n \"tenantId\": \"1449d5b7-8a83-47db-ae4c-9b03e888bad0\"\r\n },\r\n {\r\n \"id\": \"/tenants/6b895ed6-b009-45a0-84a4-636430b25084\",\r\n \"tenantId\": \"6b895ed6-b009-45a0-84a4-636430b25084\"\r\n },\r\n {\r\n \"id\": \"/tenants/9fe145f5-4a27-4c1f-8ace-230be8b23bcd\",\r\n \"tenantId\": \"9fe145f5-4a27-4c1f-8ace-230be8b23bcd\"\r\n }\r\n ]\r\n}", - "ResponseHeaders": { - "Content-Length": [ - "326" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ], - "Pragma": [ - "no-cache" - ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "14999" - ], - "x-ms-request-id": [ - "b14ae26d-3601-4de7-9fea-83bd494e519f" - ], - "x-ms-correlation-request-id": [ - "b14ae26d-3601-4de7-9fea-83bd494e519f" - ], - "x-ms-routing-request-id": [ - "WESTUS:20151029T035402Z:b14ae26d-3601-4de7-9fea-83bd494e519f" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" + "x-ms-client-request-id": [ + "079ef5ce-c3c7-48bc-8a30-eb87a3a35521" ], - "Cache-Control": [ - "no-cache" + "accept-language": [ + "en-US" ], - "Date": [ - "Thu, 29 Oct 2015 03:54:01 GMT" - ] - }, - "StatusCode": 200 - }, - { - "RequestUri": "/tenants?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3RlbmFudHM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Internal.Subscriptions.SubscriptionClient/4.1.0" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/tenants/1449d5b7-8a83-47db-ae4c-9b03e888bad0\",\r\n \"tenantId\": \"1449d5b7-8a83-47db-ae4c-9b03e888bad0\"\r\n },\r\n {\r\n \"id\": \"/tenants/6b895ed6-b009-45a0-84a4-636430b25084\",\r\n \"tenantId\": \"6b895ed6-b009-45a0-84a4-636430b25084\"\r\n },\r\n {\r\n \"id\": \"/tenants/9fe145f5-4a27-4c1f-8ace-230be8b23bcd\",\r\n \"tenantId\": \"9fe145f5-4a27-4c1f-8ace-230be8b23bcd\"\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/tenants/72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\"\r\n }\r\n ]\r\n}", "ResponseHeaders": { "Content-Length": [ - "326" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ], - "Pragma": [ - "no-cache" - ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "14995" - ], - "x-ms-request-id": [ - "527caad0-6db2-4eb1-9455-a32a1b2acec0" - ], - "x-ms-correlation-request-id": [ - "527caad0-6db2-4eb1-9455-a32a1b2acec0" - ], - "x-ms-routing-request-id": [ - "WESTUS:20151029T035416Z:527caad0-6db2-4eb1-9455-a32a1b2acec0" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" - ], - "Cache-Control": [ - "no-cache" - ], - "Date": [ - "Thu, 29 Oct 2015 03:54:15 GMT" - ] - }, - "StatusCode": 200 - }, - { - "RequestUri": "/subscriptions?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { - "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" - ] - }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"subscriptionId\": \"3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"displayName\": \"AzSdkCore1\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Public_2014-09-01\",\r\n \"quotaId\": \"PayAsYouGo_2014-09-01\"\r\n }\r\n }\r\n ]\r\n}", - "ResponseHeaders": { - "Content-Length": [ - "274" + "116" ], "Content-Type": [ "application/json; charset=utf-8" @@ -124,136 +37,52 @@ "14998" ], "x-ms-request-id": [ - "d551dce4-8f6b-41de-ad50-9d7b0d3aa7b2" + "673ef1bd-52f2-4ab1-b6f3-e3f76eef876c" ], "x-ms-correlation-request-id": [ - "d551dce4-8f6b-41de-ad50-9d7b0d3aa7b2" + "673ef1bd-52f2-4ab1-b6f3-e3f76eef876c" ], "x-ms-routing-request-id": [ - "WESTUS:20151029T035402Z:d551dce4-8f6b-41de-ad50-9d7b0d3aa7b2" + "WESTUS2:20180707T000901Z:673ef1bd-52f2-4ab1-b6f3-e3f76eef876c" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], - "Cache-Control": [ - "no-cache" - ], - "Date": [ - "Thu, 29 Oct 2015 03:54:01 GMT" - ] - }, - "StatusCode": 200 - }, - { - "RequestUri": "/subscriptions?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { - "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" - ] - }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"subscriptionId\": \"3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"displayName\": \"AzSdkCore1\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Public_2014-09-01\",\r\n \"quotaId\": \"PayAsYouGo_2014-09-01\"\r\n }\r\n }\r\n ]\r\n}", - "ResponseHeaders": { - "Content-Length": [ - "274" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ], - "Pragma": [ - "no-cache" - ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "14997" - ], - "x-ms-request-id": [ - "d5148bbf-3244-4b3a-aa0c-a4b3906da70b" - ], - "x-ms-correlation-request-id": [ - "d5148bbf-3244-4b3a-aa0c-a4b3906da70b" - ], - "x-ms-routing-request-id": [ - "WESTUS:20151029T035402Z:d5148bbf-3244-4b3a-aa0c-a4b3906da70b" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" + "X-Content-Type-Options": [ + "nosniff" ], "Cache-Control": [ "no-cache" ], "Date": [ - "Thu, 29 Oct 2015 03:54:01 GMT" + "Sat, 07 Jul 2018 00:09:00 GMT" ] }, "StatusCode": 200 }, { - "RequestUri": "/subscriptions?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestUri": "/subscriptions?api-version=2016-06-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNi0wNi0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { - "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" - ] - }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"subscriptionId\": \"3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"displayName\": \"AzSdkCore1\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Public_2014-09-01\",\r\n \"quotaId\": \"PayAsYouGo_2014-09-01\"\r\n }\r\n }\r\n ]\r\n}", - "ResponseHeaders": { - "Content-Length": [ - "274" + "x-ms-client-request-id": [ + "c6dbd578-a243-4f80-95a9-fbbe6f7e1935" ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ], - "Pragma": [ - "no-cache" - ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "14996" + "accept-language": [ + "en-US" ], - "x-ms-request-id": [ - "2cc6fb82-d174-4e2f-902c-acaaf2109b6f" - ], - "x-ms-correlation-request-id": [ - "2cc6fb82-d174-4e2f-902c-acaaf2109b6f" - ], - "x-ms-routing-request-id": [ - "WESTUS:20151029T035402Z:2cc6fb82-d174-4e2f-902c-acaaf2109b6f" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" - ], - "Cache-Control": [ - "no-cache" - ], - "Date": [ - "Thu, 29 Oct 2015 03:54:02 GMT" - ] - }, - "StatusCode": 200 - }, - { - "RequestUri": "/subscriptions?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Internal.Subscriptions.SubscriptionClient/4.1.0" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"subscriptionId\": \"3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"displayName\": \"AzSdkCore1\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Public_2014-09-01\",\r\n \"quotaId\": \"PayAsYouGo_2014-09-01\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb\",\r\n \"subscriptionId\": \"c9cbd920-c00c-427c-852b-8aaf38badaeb\",\r\n \"displayName\": \"Azure SDK Powershell Test\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Internal_2014-09-01\",\r\n \"quotaId\": \"Internal_2014-09-01\",\r\n \"spendingLimit\": \"Off\"\r\n },\r\n \"authorizationSource\": \"RoleBased\"\r\n }\r\n ]\r\n}", "ResponseHeaders": { "Content-Length": [ - "274" + "345" ], "Content-Type": [ "application/json; charset=utf-8" @@ -265,91 +94,55 @@ "no-cache" ], "x-ms-ratelimit-remaining-tenant-reads": [ - "14994" + "14999" ], "x-ms-request-id": [ - "28fd3356-45dd-4b15-bcc2-d3de558eee61" + "9f87fdc8-57b9-4a89-affc-92720264c754" ], "x-ms-correlation-request-id": [ - "28fd3356-45dd-4b15-bcc2-d3de558eee61" + "9f87fdc8-57b9-4a89-affc-92720264c754" ], "x-ms-routing-request-id": [ - "WESTUS:20151029T035416Z:28fd3356-45dd-4b15-bcc2-d3de558eee61" + "WESTUS2:20180707T000921Z:9f87fdc8-57b9-4a89-affc-92720264c754" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], + "X-Content-Type-Options": [ + "nosniff" + ], "Cache-Control": [ "no-cache" ], "Date": [ - "Thu, 29 Oct 2015 03:54:15 GMT" + "Sat, 07 Jul 2018 00:09:21 GMT" ] }, "StatusCode": 200 }, { - "RequestUri": "/subscriptions?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestUri": "/subscriptions?api-version=2016-06-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNi0wNi0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { - "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" - ] - }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"subscriptionId\": \"3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"displayName\": \"AzSdkCore1\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Public_2014-09-01\",\r\n \"quotaId\": \"PayAsYouGo_2014-09-01\"\r\n }\r\n }\r\n ]\r\n}", - "ResponseHeaders": { - "Content-Length": [ - "274" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ], - "Pragma": [ - "no-cache" + "x-ms-client-request-id": [ + "bb931c82-409c-4f8a-b2bf-66ff6f7ab47e" ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "14993" + "accept-language": [ + "en-US" ], - "x-ms-request-id": [ - "5da6edf9-c2a4-4154-9395-f4115bbc5c1a" - ], - "x-ms-correlation-request-id": [ - "5da6edf9-c2a4-4154-9395-f4115bbc5c1a" - ], - "x-ms-routing-request-id": [ - "WESTUS:20151029T035416Z:5da6edf9-c2a4-4154-9395-f4115bbc5c1a" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" - ], - "Cache-Control": [ - "no-cache" - ], - "Date": [ - "Thu, 29 Oct 2015 03:54:15 GMT" - ] - }, - "StatusCode": 200 - }, - { - "RequestUri": "/subscriptions?api-version=2014-04-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnM/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { "User-Agent": [ - "Microsoft.Azure.Subscriptions.SubscriptionClient/2.0.0.0" + "FxVersion/4.7.3110.0", + "OSName/Windows10Enterprise", + "OSVersion/6.3.17134", + "Microsoft.Azure.Internal.Subscriptions.SubscriptionClient/4.1.0" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"subscriptionId\": \"3ca49042-782a-4cc9-89b5-ee1b487fe115\",\r\n \"displayName\": \"AzSdkCore1\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Public_2014-09-01\",\r\n \"quotaId\": \"PayAsYouGo_2014-09-01\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb\",\r\n \"subscriptionId\": \"c9cbd920-c00c-427c-852b-8aaf38badaeb\",\r\n \"displayName\": \"Azure SDK Powershell Test\",\r\n \"state\": \"Enabled\",\r\n \"subscriptionPolicies\": {\r\n \"locationPlacementId\": \"Internal_2014-09-01\",\r\n \"quotaId\": \"Internal_2014-09-01\",\r\n \"spendingLimit\": \"Off\"\r\n },\r\n \"authorizationSource\": \"RoleBased\"\r\n }\r\n ]\r\n}", "ResponseHeaders": { "Content-Length": [ - "274" + "345" ], "Content-Type": [ "application/json; charset=utf-8" @@ -361,25 +154,28 @@ "no-cache" ], "x-ms-ratelimit-remaining-tenant-reads": [ - "14992" + "14997" ], "x-ms-request-id": [ - "508723cd-8d8a-4a6b-90d7-542ed3f8d43a" + "7200daa7-084a-474d-9b4a-54b69219153e" ], "x-ms-correlation-request-id": [ - "508723cd-8d8a-4a6b-90d7-542ed3f8d43a" + "7200daa7-084a-474d-9b4a-54b69219153e" ], "x-ms-routing-request-id": [ - "WESTUS:20151029T035416Z:508723cd-8d8a-4a6b-90d7-542ed3f8d43a" + "WESTUS2:20180707T000936Z:7200daa7-084a-474d-9b4a-54b69219153e" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], + "X-Content-Type-Options": [ + "nosniff" + ], "Cache-Control": [ "no-cache" ], "Date": [ - "Thu, 29 Oct 2015 03:54:15 GMT" + "Sat, 07 Jul 2018 00:09:36 GMT" ] }, "StatusCode": 200 @@ -387,6 +183,6 @@ ], "Names": {}, "Variables": { - "SubscriptionId": "3ca49042-782a-4cc9-89b5-ee1b487fe115" + "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb" } } \ No newline at end of file diff --git a/src/ResourceManager/Profile/Commands.Profile.Test/SubscriptionCmdletTests.cs b/src/ResourceManager/Profile/Commands.Profile.Test/SubscriptionCmdletTests.cs index ee07e23aa562..e5dbd55cd0f2 100644 --- a/src/ResourceManager/Profile/Commands.Profile.Test/SubscriptionCmdletTests.cs +++ b/src/ResourceManager/Profile/Commands.Profile.Test/SubscriptionCmdletTests.cs @@ -12,54 +12,46 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.Commands.ResourceManager.Common; -using Microsoft.Azure.Commands.Resources.Test.ScenarioTests; -using Microsoft.Azure.Commands.ScenarioTest; -using Microsoft.Azure.ServiceManagemenet.Common.Models; +using Microsoft.Azure.Commands.TestFx; using Microsoft.WindowsAzure.Commands.ScenarioTest; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Profile.Test { - public class SubscriptionCmdletTests + public class SubscriptionCmdletTests : TestRunnerBase { - private XunitTracingInterceptor xunitLogger; - - public SubscriptionCmdletTests(ITestOutputHelper output) + public SubscriptionCmdletTests(ITestOutputHelper output) + : base(output) { - TestExecutionHelpers.SetUpSessionAndProfile(); - ResourceManagerProfileProvider.InitializeResourceManagerProfile(true); - - xunitLogger = new XunitTracingInterceptor(output); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void AllParameterSetsSucceed() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-GetSubscriptionsEndToEnd"); + TestRunner.RunTestScript("Test-GetSubscriptionsEndToEnd"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void SetAzureRmContextWorks() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-SetAzureRmContextEndToEnd"); + TestRunner.RunTestScript("Test-SetAzureRmContextEndToEnd"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void PipingWithRmContextWorks() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-PipingWithContext"); + TestRunner.RunTestScript("Test-PipingWithContext"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void SetAzureRmContextWithoutSubscription() { - ProfileController.NewInstance.RunPsTest(xunitLogger, "72f988bf-86f1-41af-91ab-2d7cd011db47", "Test-SetAzureRmContextWithoutSubscription"); + TestRunner.RunTestScript("Test-SetAzureRmContextWithoutSubscription"); } } } diff --git a/src/ResourceManager/Profile/Profile.sln b/src/ResourceManager/Profile/Profile.sln index dec18c160e5d..0171e6ad819a 100644 --- a/src/ResourceManager/Profile/Profile.sln +++ b/src/ResourceManager/Profile/Profile.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27428.2037 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{95C16AED-FD57-42A0-86C3-2CF4300A4817}" EndProject @@ -54,6 +54,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.CustomAttri EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Aks", "..\..\Common\Commands.Common.Aks\Commands.Common.Aks.csproj", "{87BA5687-5563-4491-8846-77D98D0605D3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.TestFx", "..\Common\Commands.TestFx\Commands.TestFx.csproj", "{8C625DE3-0067-454A-AF2C-EFD672EEB31A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -160,6 +162,10 @@ Global {87BA5687-5563-4491-8846-77D98D0605D3}.Debug|Any CPU.Build.0 = Debug|Any CPU {87BA5687-5563-4491-8846-77D98D0605D3}.Release|Any CPU.ActiveCfg = Release|Any CPU {87BA5687-5563-4491-8846-77D98D0605D3}.Release|Any CPU.Build.0 = Release|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -172,6 +178,7 @@ Global {C2CF99A2-D35E-4AED-AFB9-C26960AF1D0D} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {8A4E00AA-5F65-4A95-B9B0-FEC06486555E} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {696C6B43-B5E0-4775-B493-3A971D0C38C8} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} + {8C625DE3-0067-454A-AF2C-EFD672EEB31A} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AA51E4F8-AA75-429D-9626-12C7B4305D72} diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/App.config b/src/ResourceManager/Resources/Commands.Resources.Test/App.config new file mode 100644 index 000000000000..d9f0a363bb60 --- /dev/null +++ b/src/ResourceManager/Resources/Commands.Resources.Test/App.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.Netcore.csproj b/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.Netcore.csproj index 0526a2f3eb40..8ed509d33a50 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.Netcore.csproj +++ b/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.Netcore.csproj @@ -36,6 +36,7 @@ + diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj b/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj index b70cd3971047..9e62b4924c2d 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj +++ b/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj @@ -82,7 +82,8 @@ ..\..\..\packages\Microsoft.Azure.Test.Framework.1.0.6179.26854-prerelease\lib\net45\Microsoft.Azure.Test.Framework.dll - ..\..\..\packages\Microsoft.Azure.Test.HttpRecorder.1.6.7-preview\lib\net45\Microsoft.Azure.Test.HttpRecorder.dll + False + ..\..\..\packages\Microsoft.Azure.Test.HttpRecorder.1.8.1\lib\net452\Microsoft.Azure.Test.HttpRecorder.dll True @@ -93,12 +94,19 @@ ..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll True + + ..\..\..\packages\Microsoft.Rest.ClientRuntime.2.3.11\lib\net452\Microsoft.Rest.ClientRuntime.dll + True + - ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.Authentication.2.2.9-preview\lib\net45\Microsoft.Rest.ClientRuntime.Azure.Authentication.dll + False + ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.0\lib\net452\Microsoft.Rest.ClientRuntime.Azure.Authentication.dll True - - ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.TestFramework.1.5.0-preview\lib\net45\Microsoft.Rest.ClientRuntime.Azure.TestFramework.dll + + False + ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.TestFramework.1.7.2\lib\net452\Microsoft.Rest.ClientRuntime.Azure.TestFramework.dll + True False @@ -122,8 +130,10 @@ False ..\..\..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll - - ..\..\..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll + + False + ..\..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True @@ -186,6 +196,7 @@ + @@ -225,6 +236,10 @@ {3436a126-edc9-4060-8952-9a1be34cdd95} Commands.ScenarioTests.ResourceManager.Common + + {8c625de3-0067-454a-af2c-efd672eeb31a} + Commands.TestFx + {8058d403-06e3-4bed-8924-d166ce303961} Commands.Resources.Rest @@ -235,6 +250,7 @@ + Always diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs index ad35a7fcf67e..14ab816569b1 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs @@ -18,17 +18,16 @@ using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.Rest.ClientRuntime.Azure.TestFramework; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ActiveDirectoryTests : RMTestBase + public class ActiveDirectoryTests: ResourceTestRunner { XunitTracingInterceptor interceptor { get; set; } - public ActiveDirectoryTests(ITestOutputHelper output) + public ActiveDirectoryTests(ITestOutputHelper output) : base(output) { interceptor = new XunitTracingInterceptor(output); XunitTracingInterceptor.AddToContext(interceptor); @@ -88,7 +87,8 @@ public void TestGetADGroupWithSearchString() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADGroupWithBadSearchString() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADGroupWithBadSearchString"); + //ResourcesController.NewInstance.RunPsTest("Test-GetADGroupWithBadSearchString"); + TestRunner.RunTestScript("Test-GetADGroupWithBadSearchString"); } [Fact] @@ -145,7 +145,7 @@ public void TestGetADGroupSecurityEnabled() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADGroupWithBadObjectId() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADGroupWithBadObjectId"); + TestRunner.RunTestScript("Test-GetADGroupWithBadObjectId"); } [Fact] @@ -214,7 +214,7 @@ public void TestGetADGroupMemberWithGroupObjectId() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADGroupMemberWithBadGroupObjectId() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADGroupMemberWithBadGroupObjectId"); + TestRunner.RunTestScript("Test-GetADGroupMemberWithBadGroupObjectId"); } [Fact] @@ -299,7 +299,7 @@ public void TestGetADServicePrincipalWithObjectId() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADServicePrincipalWithBadObjectId() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADServicePrincipalWithBadObjectId"); + TestRunner.RunTestScript("Test-GetADServicePrincipalWithBadObjectId"); } [Fact] @@ -359,7 +359,7 @@ public void TestGetADServicePrincipalWithSPN() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADServicePrincipalWithBadSPN() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADServicePrincipalWithBadSPN"); + TestRunner.RunTestScript("Test-GetADServicePrincipalWithBadSPN"); } [Fact] @@ -394,7 +394,7 @@ public void TestGetADServicePrincipalWithSearchString() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADServicePrincipalWithBadSearchString() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADServicePrincipalWithBadSearchString"); + TestRunner.RunTestScript("Test-GetADServicePrincipalWithBadSearchString"); } [Fact] @@ -476,7 +476,7 @@ public void TestGetADUserWithMail() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADUserWithBadObjectId() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADUserWithBadObjectId"); + TestRunner.RunTestScript("Test-GetADUserWithBadObjectId"); } [Fact] @@ -533,14 +533,14 @@ public void TestGetADUserWithUPN() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADUserWithFPOUPN() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADUserWithFPOUPN"); + TestRunner.RunTestScript("Test-GetADUserWithFPOUPN"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADUserWithBadUPN() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADUserWithBadUPN"); + TestRunner.RunTestScript("Test-GetADUserWithBadUPN"); } [Fact] @@ -572,49 +572,49 @@ public void TestGetADUserWithSearchString() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetADUserWithBadSearchString() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-GetADUserWithBadSearchString"); + TestRunner.RunTestScript("Test-GetADUserWithBadSearchString"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewADApplication() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-NewADApplication"); + TestRunner.RunTestScript("Test-NewADApplication"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewADServicePrincipalWithoutApp() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-NewADServicePrincipalWithoutApp"); + TestRunner.RunTestScript("Test-NewADServicePrincipalWithoutApp"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewADServicePrincipalWithReaderRole() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-NewADServicePrincipalWithReaderRole"); + TestRunner.RunTestScript("Test-NewADServicePrincipalWithReaderRole"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewADServicePrincipalWithCustomScope() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-NewADServicePrincipalWithCustomScope"); + TestRunner.RunTestScript("Test-NewADServicePrincipalWithCustomScope"); } [Fact(Skip = "Not working in playback.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreateDeleteAppPasswordCredentials() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-CreateDeleteAppPasswordCredentials"); + TestRunner.RunTestScript("Test-CreateDeleteAppPasswordCredentials"); } [Fact(Skip = "Not working in playback.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreateDeleteSpPasswordCredentials() { - ResourcesController.NewInstance.RunPsTest(interceptor, "Test-CreateDeleteSpPasswordCredentials"); + TestRunner.RunTestScript("Test-CreateDeleteSpPasswordCredentials"); } [Fact] diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/DeploymentTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/DeploymentTests.cs index 12a1e04eb3a5..cb8708e832ee 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/DeploymentTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/DeploymentTests.cs @@ -12,28 +12,23 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class DeploymentTests + public class DeploymentTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public DeploymentTests(Xunit.Abstractions.ITestOutputHelper output) + public DeploymentTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact(Skip = "Need to implement storage client mock.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestValidateDeployment() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ValidateDeployment"); + TestRunner.RunTestScript("Test-ValidateDeployment"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -41,7 +36,7 @@ public void TestValidateDeployment() [Trait("Re-record", "ClientRuntime changes")] public void TestNewDeploymentFromTemplateFile() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentFromTemplateFile"); + TestRunner.RunTestScript("Test-NewDeploymentFromTemplateFile"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -49,7 +44,7 @@ public void TestNewDeploymentFromTemplateFile() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNestedDeploymentFromTemplateFile() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NestedDeploymentFromTemplateFile"); + TestRunner.RunTestScript("Test-NestedDeploymentFromTemplateFile"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -57,7 +52,7 @@ public void TestNestedDeploymentFromTemplateFile() [Trait("Re-record", "ClientRuntime changes")] public void TestCrossResourceGroupDeploymentFromTemplateFile() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-CrossResourceGroupDeploymentFromTemplateFile"); + TestRunner.RunTestScript("Test-CrossResourceGroupDeploymentFromTemplateFile"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -65,21 +60,21 @@ public void TestCrossResourceGroupDeploymentFromTemplateFile() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSaveDeploymentTemplateFile() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SaveDeploymentTemplateFile"); + TestRunner.RunTestScript("Test-SaveDeploymentTemplateFile"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNestedErrorsDisplayed() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NestedErrorsDisplayed"); + TestRunner.RunTestScript("Test-NestedErrorsDisplayed"); } [Fact(Skip = "Fix acquisition of TenantId in KeyVault Test.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewDeploymentWithKeyVaultReference() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentWithKeyVaultReference"); + TestRunner.RunTestScript("Test-NewDeploymentWithKeyVaultReference"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -87,7 +82,7 @@ public void TestNewDeploymentWithKeyVaultReference() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewDeploymentWithComplexPramaters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentWithComplexPramaters"); + TestRunner.RunTestScript("Test-NewDeploymentWithComplexPramaters"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -95,7 +90,7 @@ public void TestNewDeploymentWithComplexPramaters() [Trait("Re-record", "ClientRuntime changes")] public void TestNewDeploymentWithParameterObject() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentWithParameterObject"); + TestRunner.RunTestScript("Test-NewDeploymentWithParameterObject"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -103,21 +98,21 @@ public void TestNewDeploymentWithParameterObject() [Trait("Re-record", "ClientRuntime changes")] public void TestNewDeploymentWithDynamicParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentWithDynamicParameters"); + TestRunner.RunTestScript("Test-NewDeploymentWithDynamicParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewDeploymentWithInvalidParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentWithInvalidParameters"); + TestRunner.RunTestScript("Test-NewDeploymentWithInvalidParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewDeploymentWithKeyVaultReferenceInParameterObject() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentWithKeyVaultReferenceInParameterObject"); + TestRunner.RunTestScript("Test-NewDeploymentWithKeyVaultReferenceInParameterObject"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/LocationTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/LocationTests.cs index a972bb643614..e2451c9df608 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/LocationTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/LocationTests.cs @@ -12,29 +12,23 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - - public class LocationTests + public class LocationTests: ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public LocationTests(ITestOutputHelper output) + public LocationTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureLocation() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureLocation"); + TestRunner.RunTestScript("Test-AzureLocation"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationDefinitionTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationDefinitionTests.cs index 374e9cd50dc1..a8c916a40875 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationDefinitionTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationDefinitionTests.cs @@ -13,29 +13,23 @@ // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ManagedApplicationDefinitionTests : RMTestBase + public class ManagedApplicationDefinitionTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public ManagedApplicationDefinitionTests(ITestOutputHelper output) + public ManagedApplicationDefinitionTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestManagedApplicationDefinitionCRUD() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ManagedApplicationDefinitionCRUD"); + TestRunner.RunTestScript("Test-ManagedApplicationDefinitionCRUD"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationTests.cs index 77303202274c..2bda13b459c3 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagedApplicationTests.cs @@ -13,29 +13,23 @@ // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ManagedApplicationTests : RMTestBase + public class ManagedApplicationTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public ManagedApplicationTests(ITestOutputHelper output) + public ManagedApplicationTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestManagedApplicationCRUD() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ManagedApplicationCRUD"); + TestRunner.RunTestScript("Test-ManagedApplicationCRUD"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagementGroupsTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagementGroupsTests.cs index 55d636847c32..d2571c85de4e 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagementGroupsTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ManagementGroupsTests.cs @@ -12,104 +12,99 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; using Xunit; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ManagementGroupsTests + public class ManagementGroupsTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public ManagementGroupsTests(Xunit.Abstractions.ITestOutputHelper output) + public ManagementGroupsTests(Xunit.Abstractions.ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetManagementGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetManagementGroup"); + TestRunner.RunTestScript("Test-GetManagementGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetManagementGroupWithExpand() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetManagementGroupWithExpand"); + TestRunner.RunTestScript("Test-GetManagementGroupWithExpand"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetManagementGroupWithExpandAndRecurse() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetManagementGroupWithExpandAndRecurse"); + TestRunner.RunTestScript("Test-GetManagementGroupWithExpandAndRecurse"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewManagementGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewManagementGroup"); + TestRunner.RunTestScript("Test-NewManagementGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewManagementGroupWithDisplayName() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewManagementGroupWithDisplayName"); + TestRunner.RunTestScript("Test-NewManagementGroupWithDisplayName"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewManagementGroupWithParentId() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewManagementGroupWithParentId"); + TestRunner.RunTestScript("Test-NewManagementGroupWithParentId"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewManagementGroupWithDisplayNameAndParentId() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewManagementGroupWithDisplayNameAndParentId"); + TestRunner.RunTestScript("Test-NewManagementGroupWithDisplayNameAndParentId"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestUpdateManagementGroupWithDisplayName() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-UpdateManagementGroupWithDisplayName"); + TestRunner.RunTestScript("Test-UpdateManagementGroupWithDisplayName"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestUpdateManagementGroupWithParentId() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-UpdateManagementGroupWithParentId"); + TestRunner.RunTestScript("Test-UpdateManagementGroupWithParentId"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestUpdateManagementGroupWithDisplayNameAndParentId() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-UpdateManagementGroupWithDisplayNameAndParentId"); + TestRunner.RunTestScript("Test-UpdateManagementGroupWithDisplayNameAndParentId"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveManagementGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemoveManagementGroup"); + TestRunner.RunTestScript("Test-RemoveManagementGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewRemoveManagementGroupSubscription() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewRemoveManagementGroupSubscription"); + TestRunner.RunTestScript("Test-NewRemoveManagementGroupSubscription"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/MoveResourceTest.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/MoveResourceTest.cs index 9b5e337dc45a..3f21411bcb5f 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/MoveResourceTest.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/MoveResourceTest.cs @@ -14,25 +14,20 @@ namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - using ServiceManagemenet.Common.Models; using WindowsAzure.Commands.ScenarioTest; using Xunit; using Xunit.Abstractions; - public class MoveResourceTest + public class MoveResourceTest : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public MoveResourceTest(ITestOutputHelper output) + public MoveResourceTest(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact(Skip = "Need to re-record test")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMoveAzureResource() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-MoveAzureResource"); + TestRunner.RunTestScript("Test-MoveAzureResource"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/PolicyTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/PolicyTests.cs index ac78b92684c5..e001b578c91d 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/PolicyTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/PolicyTests.cs @@ -13,183 +13,177 @@ // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class PolicyTests : RMTestBase + public class PolicyTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public PolicyTests(ITestOutputHelper output) + public PolicyTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyDefinitionCRUD() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyDefinitionCRUD"); + TestRunner.RunTestScript("Test-PolicyDefinitionCRUD"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyDefinitionCRUDAtManagementGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyDefinitionCRUDAtManagementGroup"); + TestRunner.RunTestScript("Test-PolicyDefinitionCRUDAtManagementGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyDefinitionCRUDAtSubscription() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyDefinitionCRUDAtSubscription"); + TestRunner.RunTestScript("Test-PolicyDefinitionCRUDAtSubscription"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyAssignmentCRUD() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyAssignmentCRUD"); + TestRunner.RunTestScript("Test-PolicyAssignmentCRUD"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyDefinitionWithParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyDefinitionWithParameters"); + TestRunner.RunTestScript("Test-PolicyDefinitionWithParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicySetDefinitionWithParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicySetDefinitionWithParameters"); + TestRunner.RunTestScript("Test-PolicySetDefinitionWithParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyAssignmentWithParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyAssignmentWithParameters"); + TestRunner.RunTestScript("Test-PolicyAssignmentWithParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicySetDefinitionCRUD() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicySetDefinitionCRUD"); + TestRunner.RunTestScript("Test-PolicySetDefinitionCRUD"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicySetDefinitionCRUDAtManagementGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicySetDefinitionCRUDAtManagementGroup"); + TestRunner.RunTestScript("Test-PolicySetDefinitionCRUDAtManagementGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicySetDefinitionCRUDAtSubscription() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicySetDefinitionCRUDAtSubscription"); + TestRunner.RunTestScript("Test-PolicySetDefinitionCRUDAtSubscription"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPolicyDefinitionWithUri() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-PolicyDefinitionWithUri"); + TestRunner.RunTestScript("Test-PolicyDefinitionWithUri"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetPolicyAssignmentParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetPolicyAssignmentParameters"); + TestRunner.RunTestScript("Test-GetPolicyAssignmentParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewPolicyAssignmentParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewPolicyAssignmentParameters"); + TestRunner.RunTestScript("Test-NewPolicyAssignmentParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemovePolicyAssignmentParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemovePolicyAssignmentParameters"); + TestRunner.RunTestScript("Test-RemovePolicyAssignmentParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetPolicyAssignmentParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SetPolicyAssignmentParameters"); + TestRunner.RunTestScript("Test-SetPolicyAssignmentParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetPolicyDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetPolicyDefinitionParameters"); + TestRunner.RunTestScript("Test-GetPolicyDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewPolicyDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewPolicyDefinitionParameters"); + TestRunner.RunTestScript("Test-NewPolicyDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemovePolicyDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemovePolicyDefinitionParameters"); + TestRunner.RunTestScript("Test-RemovePolicyDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetPolicyDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SetPolicyDefinitionParameters"); + TestRunner.RunTestScript("Test-SetPolicyDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetPolicySetDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetPolicySetDefinitionParameters"); + TestRunner.RunTestScript("Test-GetPolicySetDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewPolicySetDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewPolicySetDefinitionParameters"); + TestRunner.RunTestScript("Test-NewPolicySetDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemovePolicySetDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemovePolicySetDefinitionParameters"); + TestRunner.RunTestScript("Test-RemovePolicySetDefinitionParameters"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetPolicySetDefinitionParameters() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SetPolicySetDefinitionParameters"); + TestRunner.RunTestScript("Test-SetPolicySetDefinitionParameters"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderFeatureTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderFeatureTests.cs index 817b4f703727..13d765057572 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderFeatureTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderFeatureTests.cs @@ -15,24 +15,20 @@ namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { using Microsoft.WindowsAzure.Commands.ScenarioTest; - using ServiceManagemenet.Common.Models; using Xunit; using Xunit.Abstractions; - public class ProviderFeatureTests - { - public XunitTracingInterceptor _logger; - public ProviderFeatureTests(ITestOutputHelper output) + public class ProviderFeatureTests : ResourceTestRunner + { + public ProviderFeatureTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureProviderFeature() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureProviderFeature"); + TestRunner.RunTestScript("Test-AzureProviderFeature"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderTests.cs index e274f13f45dd..c92d6143afbf 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ProviderTests.cs @@ -15,45 +15,41 @@ namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { using Microsoft.WindowsAzure.Commands.ScenarioTest; - using ServiceManagemenet.Common.Models; using Xunit; using Xunit.Abstractions; - public class ProviderTests - { - public XunitTracingInterceptor _logger; - public ProviderTests(ITestOutputHelper output) + public class ProviderTests : ResourceTestRunner + { + public ProviderTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureProvider() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureProvider"); + TestRunner.RunTestScript("Test-AzureProvider"); } [Fact(Skip = "ZoneMapping removed.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureProvider_WithZoneMappings() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureProvider-WithZoneMappings"); + TestRunner.RunTestScript("Test-AzureProvider-WithZoneMappings"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureProviderOperation() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureProviderOperation"); + TestRunner.RunTestScript("Test-AzureProviderOperation"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureProviderOperationDataActions() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureProviderOperationDataActions"); + TestRunner.RunTestScript("Test-AzureProviderOperationDataActions"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceGroupTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceGroupTests.cs index 4a4c4020982f..d9b81bbae39c 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceGroupTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceGroupTests.cs @@ -12,99 +12,93 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ResourceGroupTests : RMTestBase + public class ResourceGroupTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public ResourceGroupTests(ITestOutputHelper output) + public ResourceGroupTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreatesNewSimpleResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-CreatesNewSimpleResourceGroup"); + TestRunner.RunTestScript("Test-CreatesNewSimpleResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestUpdatesExistingResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-UpdatesExistingResourceGroup"); + TestRunner.RunTestScript("Test-UpdatesExistingResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreatesAndRemoveResourceGroupViaPiping() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-CreatesAndRemoveResourceGroupViaPiping"); + TestRunner.RunTestScript("Test-CreatesAndRemoveResourceGroupViaPiping"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetNonExistingResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetNonExistingResourceGroup"); + TestRunner.RunTestScript("Test-GetNonExistingResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewResourceGroupInNonExistingLocation() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewResourceGroupInNonExistingLocation"); + TestRunner.RunTestScript("Test-NewResourceGroupInNonExistingLocation"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveNonExistingResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemoveNonExistingResourceGroup"); + TestRunner.RunTestScript("Test-RemoveNonExistingResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestFindResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-FindResourceGroup"); + TestRunner.RunTestScript("Test-FindResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestExportResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ExportResourceGroup"); + TestRunner.RunTestScript("Test-ExportResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestResourceGroupWithPositionalParams() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ResourceGroupWithPositionalParams"); + TestRunner.RunTestScript("Test-ResourceGroupWithPositionalParams"); } [Fact(Skip = "TODO: Fix the broken test.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureTagsEndToEnd() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-AzureTagsEndToEnd"); + TestRunner.RunTestScript("Test-AzureTagsEndToEnd"); } [Fact(Skip = "Depends on Bug 2040630")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewDeploymentAndProviderRegistration() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-NewDeploymentAndProviderRegistration"); + TestRunner.RunTestScript("Test-NewDeploymentAndProviderRegistration"); } [Fact(Skip = "Need service team to re-record test after changes to the ClientRuntime.")] @@ -112,14 +106,14 @@ public void TestNewDeploymentAndProviderRegistration() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveDeployment() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemoveDeployment"); + TestRunner.RunTestScript("Test-RemoveDeployment"); } [Fact(Skip = "Doesn't add any value. Will improve negative tests in a future release")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetNonExistingResourceGroupWithDebugStream() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetNonExistingResourceGroupWithDebugStream"); + TestRunner.RunTestScript("Test-GetNonExistingResourceGroupWithDebugStream"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceLockTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceLockTests.cs index 4eb34b91a4e4..a8c84fdefc08 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceLockTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceLockTests.cs @@ -13,36 +13,30 @@ // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ResourceLockTests : RMTestBase + public class ResourceLockTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public ResourceLockTests(ITestOutputHelper output) + public ResourceLockTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestResourceLockCRUDTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ResourceLockCRUD"); + TestRunner.RunTestScript("Test-ResourceLockCRUD"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestResourceLockNonExisting() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ResourceLockNonExisting"); + TestRunner.RunTestScript("Test-ResourceLockNonExisting"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTestRunner.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTestRunner.cs new file mode 100644 index 000000000000..e7d80eca6e97 --- /dev/null +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTestRunner.cs @@ -0,0 +1,148 @@ +// ---------------------------------------------------------------------------------- +// +// 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 System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Components; +using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Extensions; +using Microsoft.Azure.Commands.TestFx; +using Microsoft.Azure.Test.HttpRecorder; +using Microsoft.Rest; +using Microsoft.Rest.ClientRuntime.Azure.TestFramework; +using Xunit.Abstractions; + +namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests +{ + public class ResourceTestRunner + { + protected readonly ITestRunner TestRunner; + + protected ResourceTestRunner(ITestOutputHelper output) + { + TestRunner = TestFx.TestManager.CreateInstance(output) + .WithNewPsScriptFilename($"{GetType().Name}.ps1") + .WithProjectSubfolderForTests("ScenarioTests") + .WithCommonPsScripts(new[] + { + @"Common.ps1", + }) + .WithExtraRmModules(helper => new[] + { + helper.RMInsightsModule, + }) + .WithBuildMatcher( + (ignoreResourcesClient, resourceProviders, userAgentsToIgnore) => + new ResourcesRecordMatcher(ignoreResourcesClient, resourceProviders, userAgentsToIgnore)) + .WithExtraUserAgentsToIgnore(new Dictionary + { + {"Microsoft.Azure.Management.ResourceManager.ResourceManagementClient", "2016-07-01"}, + }) + .Build(); + + var credentials = HttpMockServer.Mode == HttpRecorderMode.Record + ? new Func(() => + { + var testEnvironment = TestEnvironmentFactory.GetTestEnvironment(); + return new SubscriptionCloudCredentialsAdapter( + testEnvironment.TokenInfo[TokenAudience.Management], + testEnvironment.SubscriptionId); + }) () + : new SubscriptionCloudCredentialsAdapter( + new TokenCredentials("foo"), + Guid.Empty.ToString()); + + HttpClientHelperFactory.Instance = new TestHttpClientHelperFactory(credentials); + } + } + + #region TestHttpClientHelperFactory + + internal class TestHttpClientHelperFactory : HttpClientHelperFactory + { + /// + /// The subscription cloud credentials. + /// + private readonly SubscriptionCloudCredentials credential; + + /// + /// Initializes a new instance of the class. + /// + /// + public TestHttpClientHelperFactory(SubscriptionCloudCredentials credentials) + { + credential = credentials; + } + + /// + /// Creates new instances of the class. + /// + /// The credentials. + /// The headers. + public override HttpClientHelper CreateHttpClientHelper(SubscriptionCloudCredentials credentials, IEnumerable headerValues, Dictionary cmdletHeaderValues) + { + return new TestHttpClientHelperFactory.HttpClientHelperImpl(credentials: credential, headerValues: headerValues, cmdletHeaderValues: cmdletHeaderValues); + } + + /// + /// An implementation of the abstract class. + /// + private class HttpClientHelperImpl : HttpClientHelper + { + /// + /// Initializes new instances of the class. + /// + /// The credentials. + /// The headers. + public HttpClientHelperImpl(SubscriptionCloudCredentials credentials, IEnumerable headerValues, Dictionary cmdletHeaderValues) + : base(credentials: credentials, headerValues: headerValues, cmdletHeaderValues: cmdletHeaderValues) + { + } + + /// + /// Creates an + /// + /// The handlers that will be added to the top of the chain. + public override HttpClient CreateHttpClient(params DelegatingHandler[] primaryHandlers) + { + return base.CreateHttpClient(HttpMockServer.CreateInstance().AsArray().Concat(primaryHandlers).ToArray()); + } + } + } + + //https://gist.github.com/markcowl/4d907da7ce40f2e424e8d0625887b82e + internal class SubscriptionCloudCredentialsAdapter : SubscriptionCloudCredentials + { + private readonly ServiceClientCredentials _wrappedCreds; + + public SubscriptionCloudCredentialsAdapter(ServiceClientCredentials credentials, string subscriptionId) + { + _wrappedCreds = credentials; + SubscriptionId = subscriptionId; + } + + public override string SubscriptionId { get; } + + public override Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + return _wrappedCreds.ProcessHttpRequestAsync(request, cancellationToken); + } + } + + #endregion +} diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTests.cs index bab782bd5c1d..1d553a42a6b7 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTests.cs @@ -12,170 +12,163 @@ // limitations under the License. // ---------------------------------------------------------------------------------- - -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class ResourceTests : RMTestBase + public class ResourceTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public ResourceTests(ITestOutputHelper output) + public ResourceTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreatesNewSimpleResource() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-CreatesNewSimpleResource"); + TestRunner.RunTestScript("Test-CreatesNewSimpleResource"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreatesNewComplexResource() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-CreatesNewComplexResource"); + TestRunner.RunTestScript("Test-CreatesNewComplexResource"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourcesViaPiping() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourcesViaPiping"); + TestRunner.RunTestScript("Test-GetResourcesViaPiping"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourcesFromEmptyGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourcesFromEmptyGroup"); + TestRunner.RunTestScript("Test-GetResourcesFromEmptyGroup"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourcesFromNonExisingGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourcesFromNonExisingGroup"); + TestRunner.RunTestScript("Test-GetResourcesFromNonExisingGroup"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourcesForNonExisingType() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourcesForNonExisingType"); + TestRunner.RunTestScript("Test-GetResourcesForNonExisingType"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourceForNonExisingResource() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourceForNonExisingResource"); + TestRunner.RunTestScript("Test-GetResourceForNonExisingResource"); } [Fact(Skip = "TODO: Re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourcesViaPipingFromAnotherResource() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourcesViaPipingFromAnotherResource"); + TestRunner.RunTestScript("Test-GetResourcesViaPipingFromAnotherResource"); } [Fact(Skip = "Successfully re-recorded, but still failing in playback")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMoveAResourceTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-MoveAResource"); + TestRunner.RunTestScript("Test-MoveAResource"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMoveResourceFailed() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-MoveResourceFailed"); + TestRunner.RunTestScript("Test-MoveResourceFailed"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetAResourceTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SetAResource"); + TestRunner.RunTestScript("Test-SetAResource"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetAResourceUsingPiping() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SetAResourceUsingPiping"); + TestRunner.RunTestScript("Test-SetAResourceUsingPiping"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetAResourceWithPatchTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-SetAResourceWithPatch"); + TestRunner.RunTestScript("Test-SetAResourceWithPatch"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestFindAResourceTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-FindAResource"); + TestRunner.RunTestScript("Test-FindAResource"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestFindAResourceByTag() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-FindAResource-ByTag"); + TestRunner.RunTestScript("Test-FindAResource-ByTag"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourceWithExpandProperties() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourceExpandProperties"); + TestRunner.RunTestScript("Test-GetResourceExpandProperties"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourceByIdAndProperties() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourceByIdAndProperties"); + TestRunner.RunTestScript("Test-GetResourceByIdAndProperties"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetResourceByComponentsAndProperties() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-GetResourceByComponentsAndProperties"); + TestRunner.RunTestScript("Test-GetResourceByComponentsAndProperties"); } [Fact(Skip = "Zones are disabled for now.")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestManageResourceWithZones() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-ManageResourceWithZones"); + TestRunner.RunTestScript("Test-ManageResourceWithZones"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveAResourceTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemoveAResource"); + TestRunner.RunTestScript("Test-RemoveAResource"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveASetOfResourcesTest() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RemoveASetOfResources"); + TestRunner.RunTestScript("Test-RemoveASetOfResources"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs index 98c97bd0e0a5..ee771c3692a7 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs @@ -57,7 +57,6 @@ public sealed class ResourcesController public ManagementGroupsAPIClient ManagementGroupsApiClient { get; private set; } - public string UserDomain { get; private set; } public static ResourcesController NewInstance => new ResourcesController(); diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleAssignmentTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleAssignmentTests.cs index 961106ac4831..98bf514cc648 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleAssignmentTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleAssignmentTests.cs @@ -18,23 +18,22 @@ using Microsoft.Azure.Management.Authorization; using Microsoft.Azure.Management.ResourceManager; using Microsoft.Azure.Management.ResourceManager.Models; -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Microsoft.WindowsAzure.Commands.Utilities.Common; using System.Linq; using System.Reflection; +using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.Rest.ClientRuntime.Azure.TestFramework; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class RoleAssignmentTests : RMTestBase + public class RoleAssignmentTests : ResourceTestRunner { public XunitTracingInterceptor _logger; - public RoleAssignmentTests(ITestOutputHelper output) + public RoleAssignmentTests(ITestOutputHelper output) : base(output) { _logger = new XunitTracingInterceptor(output); XunitTracingInterceptor.AddToContext(_logger); @@ -44,14 +43,14 @@ public RoleAssignmentTests(ITestOutputHelper output) [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaClassicAdmins() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaClassicAdmins"); + TestRunner.RunTestScript("Test-RaClassicAdmins"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaDeletedPrincipals() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaDeletedPrincipals"); + TestRunner.RunTestScript("Test-RaDeletedPrincipals"); } #if NETSTANDARD @@ -62,108 +61,107 @@ public void RaDeletedPrincipals() #endif [Trait(Category.AcceptanceType, Category.Flaky)] public void RaPropertiesValidation() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaPropertiesValidation"); + TestRunner.RunTestScript("Test-RaPropertiesValidation"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaNegativeScenarios() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaNegativeScenarios"); + TestRunner.RunTestScript("Test-RaNegativeScenarios"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaByScope() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaByScope"); + TestRunner.RunTestScript("Test-RaByScope"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaDeleteByPSRoleAssignment() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaDeleteByPSRoleAssignment"); + TestRunner.RunTestScript("Test-RaDeleteByPSRoleAssignment"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaByResourceGroup() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaByResourceGroup"); + TestRunner.RunTestScript("Test-RaByResourceGroup"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaByResource() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaByResource"); + TestRunner.RunTestScript("Test-RaByResource"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaValidateInputParameters() { - var instance = ResourcesController.NewInstance; - instance.RunPsTest(_logger, "Test-RaValidateInputParameters Get-AzureRmRoleAssignment"); - instance.RunPsTest(_logger, "Test-RaValidateInputParameters New-AzureRmRoleAssignment"); - instance.RunPsTest(_logger, "Test-RaValidateInputParameters Remove-AzureRmRoleAssignment"); + TestRunner.RunTestScript("Test-RaValidateInputParameters Get-AzureRmRoleAssignment"); + TestRunner.RunTestScript("Test-RaValidateInputParameters New-AzureRmRoleAssignment"); + TestRunner.RunTestScript("Test-RaValidateInputParameters Remove-AzureRmRoleAssignment"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaByServicePrincipal() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaByServicePrincipal"); + TestRunner.RunTestScript("Test-RaByServicePrincipal"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaById() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaById"); + TestRunner.RunTestScript("Test-RaById"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaDeletionByScope() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaDeletionByScope"); + TestRunner.RunTestScript("Test-RaDeletionByScope"); } [Fact(Skip = "Need AD team to re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaDeletionByScopeAtRootScope() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaDeletionByScopeAtRootScope"); + TestRunner.RunTestScript("Test-RaDeletionByScopeAtRootScope"); } [Fact(Skip = "Need AD team to re-record")] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaDelegation() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaDelegation"); + TestRunner.RunTestScript("Test-RaDelegation"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaByUpn() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaByUpn"); + TestRunner.RunTestScript("Test-RaByUpn"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaGetByScope() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaGetByScope"); + TestRunner.RunTestScript("Test-RaGetByScope"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RaGetByUPNWithExpandPrincipalGroups() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RaGetByUPNWithExpandPrincipalGroups"); + TestRunner.RunTestScript("Test-RaGetByUPNWithExpandPrincipalGroups"); } [Fact(Skip = "Fix the flaky test and token error and then re-record the test. Token from admin user is being used even when trying to use newly created user.")] diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleDefinitionTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleDefinitionTests.cs index 4ba021c92774..d555532e87f9 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleDefinitionTests.cs +++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/RoleDefinitionTests.cs @@ -12,22 +12,16 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagemenet.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Resources.Test.ScenarioTests { - public class RoleDefinitionTests : RMTestBase + public class RoleDefinitionTests : ResourceTestRunner { - public XunitTracingInterceptor _logger; - - public RoleDefinitionTests(ITestOutputHelper output) + public RoleDefinitionTests(ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } #if NETSTANDARD @@ -39,7 +33,7 @@ public RoleDefinitionTests(ITestOutputHelper output) [Trait(Category.AcceptanceType, Category.CheckIn)] public void RoleDefinitionCreateTests() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RoleDefinitionCreateTests"); + TestRunner.RunTestScript("Test-RoleDefinitionCreateTests"); } #if NETSTANDARD @@ -51,7 +45,7 @@ public void RoleDefinitionCreateTests() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RoleDefinitionDataActionsCreateTests() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RoleDefinitionDataActionsCreateTests"); + TestRunner.RunTestScript("Test-RoleDefinitionDataActionsCreateTests"); } #if NETSTANDARD @@ -63,7 +57,7 @@ public void RoleDefinitionDataActionsCreateTests() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RdNegativeScenarios() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RdNegativeScenarios"); + TestRunner.RunTestScript("Test-RdNegativeScenarios"); } #if NETSTANDARD @@ -75,7 +69,7 @@ public void RdNegativeScenarios() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RdPositiveScenarios() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDPositiveScenarios"); + TestRunner.RunTestScript("Test-RDPositiveScenarios"); } #if NETSTANDARD @@ -87,7 +81,8 @@ public void RdPositiveScenarios() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RDUpdate() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDUpdate"); + //ResourcesController.NewInstance.RunPsTest("Test-RDUpdate"); + TestRunner.RunTestScript("Test-RDUpdate"); } #if NETSTANDARD @@ -99,7 +94,7 @@ public void RDUpdate() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RDCreateFromFile() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDCreateFromFile"); + TestRunner.RunTestScript("Test-RDCreateFromFile"); } #if NETSTANDARD @@ -109,10 +104,10 @@ public void RDCreateFromFile() [Fact] #endif [Trait(Category.AcceptanceType, Category.CheckIn)] - public void RDFilter() - { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDFilter"); - } + public void RDFilter() + { + TestRunner.RunTestScript("Test-RDFilter"); + } #if NETSTANDARD [Fact(Skip = "DisableTestParallelization disabled on .NET Core: Test uses RoleDefinitionNames")] @@ -123,7 +118,7 @@ public void RDFilter() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RDRemoveScenario() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDRemove"); + TestRunner.RunTestScript("Test-RDRemove"); } #if NETSTANDARD @@ -135,7 +130,7 @@ public void RDRemoveScenario() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RDGetCustomRoles() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDGetCustomRoles"); + TestRunner.RunTestScript("Test-RDGetCustomRoles"); } #if NETSTANDARD @@ -147,7 +142,7 @@ public void RDGetCustomRoles() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RDDataActionsNegativeTestCases() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDDataActionsNegativeTestCases"); + TestRunner.RunTestScript("Test-RDDataActionsNegativeTestCases"); } #if NETSTANDARD @@ -159,18 +154,17 @@ public void RDDataActionsNegativeTestCases() [Trait(Category.AcceptanceType, Category.CheckIn)] public void RDGetScenario() { - ResourcesController.NewInstance.RunPsTest(_logger, "Test-RDGet"); + TestRunner.RunTestScript("Test-RDGet"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void RdValidateInputParameters() { - var instance = ResourcesController.NewInstance; - instance.RunPsTest(_logger, "Test-RdValidateInputParameters Get-AzureRmRoleDefinition"); - instance.RunPsTest(_logger, "Test-RdValidateInputParameters Remove-AzureRmRoleDefinition"); - instance.RunPsTest(_logger, "Test-RdValidateInputParameters2 New-AzureRmRoleDefinition"); - instance.RunPsTest(_logger, "Test-RdValidateInputParameters2 Set-AzureRmRoleDefinition"); + TestRunner.RunTestScript("Test-RdValidateInputParameters Get-AzureRmRoleDefinition"); + TestRunner.RunTestScript("Test-RdValidateInputParameters Remove-AzureRmRoleDefinition"); + TestRunner.RunTestScript("Test-RdValidateInputParameters2 New-AzureRmRoleDefinition"); + TestRunner.RunTestScript("Test-RdValidateInputParameters2 Set-AzureRmRoleDefinition"); } } } diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/packages.config b/src/ResourceManager/Resources/Commands.Resources.Test/packages.config index c25414d5f40b..e45133af8340 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/packages.config +++ b/src/ResourceManager/Resources/Commands.Resources.Test/packages.config @@ -11,17 +11,18 @@ - + - - + + + - + diff --git a/src/ResourceManager/Resources/Resources.sln b/src/ResourceManager/Resources/Resources.sln index 0862016f1c93..57f052c5730f 100644 --- a/src/ResourceManager/Resources/Resources.sln +++ b/src/ResourceManager/Resources/Resources.sln @@ -33,6 +33,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Insights", "..\Ins EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Authentication.ResourceManager", "..\Common\Commands.Common.Authentication.ResourceManager\Commands.Common.Authentication.ResourceManager.csproj", "{69C2EB6B-CD63-480A-89A0-C489706E9299}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.TestFx", "..\Common\Commands.TestFx\Commands.TestFx.csproj", "{8C625DE3-0067-454A-AF2C-EFD672EEB31A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -87,6 +89,10 @@ Global {69C2EB6B-CD63-480A-89A0-C489706E9299}.Debug|Any CPU.Build.0 = Debug|Any CPU {69C2EB6B-CD63-480A-89A0-C489706E9299}.Release|Any CPU.ActiveCfg = Release|Any CPU {69C2EB6B-CD63-480A-89A0-C489706E9299}.Release|Any CPU.Build.0 = Release|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -96,6 +102,7 @@ Global {3436A126-EDC9-4060-8952-9A1BE34CDD95} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {CFF09E81-1E31-444E-B4D4-A21E946C29E2} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {69C2EB6B-CD63-480A-89A0-C489706E9299} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} + {8C625DE3-0067-454A-AF2C-EFD672EEB31A} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {2CCF981A-8BCD-46DB-954D-289E61E07EE7} diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/App.config b/src/ResourceManager/Storage/Commands.Management.Storage.Test/App.config new file mode 100644 index 000000000000..d9f0a363bb60 --- /dev/null +++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/App.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.Netcore.csproj b/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.Netcore.csproj index 3fc156946335..54c512df4341 100644 --- a/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.Netcore.csproj +++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.Netcore.csproj @@ -33,6 +33,7 @@ + @@ -45,7 +46,7 @@ - + PreserveNewest diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.csproj b/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.csproj index e70a94e9116a..2cf27c4d6480 100644 --- a/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.csproj +++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/Commands.Management.Storage.Test.csproj @@ -61,9 +61,8 @@ ..\..\..\packages\Microsoft.Azure.Test.Framework.1.0.6179.26854-prerelease\lib\net45\Microsoft.Azure.Test.Framework.dll - - ..\..\..\packages\Microsoft.Azure.Test.HttpRecorder.1.6.7-preview\lib\net45\Microsoft.Azure.Test.HttpRecorder.dll - True + + ..\..\..\packages\Microsoft.Azure.Test.HttpRecorder.1.8.1\lib\net452\Microsoft.Azure.Test.HttpRecorder.dll ..\..\..\packages\Microsoft.Data.Edm.5.8.2\lib\net40\Microsoft.Data.Edm.dll @@ -81,12 +80,10 @@ ..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll - ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.Authentication.2.2.9-preview\lib\net45\Microsoft.Rest.ClientRuntime.Azure.Authentication.dll - True + ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.0\lib\net452\Microsoft.Rest.ClientRuntime.Azure.Authentication.dll - - ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.TestFramework.1.5.0-preview\lib\net45\Microsoft.Rest.ClientRuntime.Azure.TestFramework.dll - True + + ..\..\..\packages\Microsoft.Rest.ClientRuntime.Azure.TestFramework.1.7.2\lib\net452\Microsoft.Rest.ClientRuntime.Azure.TestFramework.dll ..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -100,9 +97,8 @@ ..\..\..\packages\WindowsAzure.Storage.8.1.1\lib\net45\Microsoft.WindowsAzure.Storage.dll - - False - ..\..\..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll + + ..\..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll @@ -138,6 +134,7 @@ + @@ -157,12 +154,21 @@ {3436a126-edc9-4060-8952-9a1be34cdd95} Commands.ScenarioTests.ResourceManager.Common + + {8c625de3-0067-454a-af2c-efd672eeb31a} + Commands.TestFx + + + {142d7b0b-388a-4ceb-a228-7f6d423c5c2e} + Commands.Profile + {a50ab133-5c04-4a17-9054-f8343683ec23} Commands.Management.Storage + Designer diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/StorageAccountTests.cs b/src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/StorageAccountTests.cs index 87f6340b52e7..b340ba05b19a 100644 --- a/src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/StorageAccountTests.cs +++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/ScenarioTests/StorageAccountTests.cs @@ -12,114 +12,107 @@ // limitations under the License. // ---------------------------------------------------------------------------------- - -using Microsoft.Azure.ServiceManagemenet.Common.Models; +using Microsoft.Azure.Commands.TestFx; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests { - public class StorageAccountTests : RMTestBase + public class StorageAccountTests : StorageTestRunner { - public XunitTracingInterceptor _logger; - public StorageAccountTests(ITestOutputHelper output) + : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] - public void TestStorageAccount() - { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageAccount"); - } + public void TestStorageAccount() => + TestRunner.RunTestScript("Test-StorageAccount"); [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewAzureStorageAccount() { - TestController.NewInstance.RunPsTest(_logger, "Test-NewAzureStorageAccount"); + TestRunner.RunTestScript("Test-NewAzureStorageAccount"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetAzureStorageAccount() { - TestController.NewInstance.RunPsTest(_logger, "Test-GetAzureStorageAccount"); + TestRunner.RunTestScript("Test-GetAzureStorageAccount"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetAzureStorageAccount() { - TestController.NewInstance.RunPsTest(_logger, "Test-SetAzureStorageAccount"); + TestRunner.RunTestScript("Test-SetAzureStorageAccount"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveAzureStorageAccount() { - TestController.NewInstance.RunPsTest(_logger, "Test-RemoveAzureStorageAccount"); + TestRunner.RunTestScript("Test-RemoveAzureStorageAccount"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetAzureStorageAccountKey() { - TestController.NewInstance.RunPsTest(_logger, "Test-GetAzureStorageAccountKey"); + TestRunner.RunTestScript("Test-GetAzureStorageAccountKey"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNewAzureStorageAccountKey() { - TestController.NewInstance.RunPsTest(_logger, "Test-NewAzureStorageAccountKey"); + TestRunner.RunTestScript("Test-NewAzureStorageAccountKey"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPipingGetAccountToGetKey() { - TestController.NewInstance.RunPsTest(_logger, "Test-PipingGetAccountToGetKey"); + TestRunner.RunTestScript("Test-PipingGetAccountToGetKey"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestPipingSetStorageAccount() { - TestController.NewInstance.RunPsTest(_logger, "Test-PipingToSetAzureRmCurrentStorageAccount"); + TestRunner.RunTestScript("Test-PipingToSetAzureRmCurrentStorageAccount"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetCurrentStorageAccount() { - TestController.NewInstance.RunPsTest(_logger, "Test-SetAzureRmCurrentStorageAccount"); + TestRunner.RunTestScript("Test-SetAzureRmCurrentStorageAccount"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetAzureRmStorageAccountKeySource() { - TestController.NewInstance.RunPsTest(_logger, "Test-SetAzureRmStorageAccountKeySource"); + TestRunner.RunTestScript("Test-SetAzureRmStorageAccountKeySource"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestNetworkRule() { - TestController.NewInstance.RunPsTest(_logger, "Test-NetworkRule"); + TestRunner.RunTestScript("Test-NetworkRule"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestSetAzureStorageAccountStorageV2() { - TestController.NewInstance.RunPsTest(_logger, "Test-SetAzureStorageAccountStorageV2"); + TestRunner.RunTestScript("Test-SetAzureStorageAccountStorageV2"); } } } diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/StorageTestRunner.cs b/src/ResourceManager/Storage/Commands.Management.Storage.Test/StorageTestRunner.cs new file mode 100644 index 000000000000..305cc0d20f7d --- /dev/null +++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/StorageTestRunner.cs @@ -0,0 +1,42 @@ +// ---------------------------------------------------------------------------------- +// +// 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.TestFx; +using Xunit.Abstractions; + +namespace Microsoft.Azure.Commands.Management.Storage.Test +{ + public class StorageTestRunner + { + protected readonly ITestRunner TestRunner; + + protected StorageTestRunner(ITestOutputHelper output) + { + TestRunner = TestManager.CreateInstance(output) + .WithNewPsScriptFilename($"{GetType().Name}.ps1") + .WithProjectSubfolderForTests("ScenarioTests") + .WithCommonPsScripts(new[] + { + @"AzureRM.Resources.ps1", + @"Common.ps1", + }) + .WithExtraRmModules(helper => new[] + { + helper.RMStorageDataPlaneModule, + helper.RMStorageModule, + }) + .Build(); + } + } +} diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config b/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config index a48f1b72904b..457855dca461 100644 --- a/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config +++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config @@ -8,7 +8,7 @@ - + @@ -17,9 +17,9 @@ - - - + + + diff --git a/src/ResourceManager/Storage/Storage.sln b/src/ResourceManager/Storage/Storage.sln index 04a7a6d552c7..dc1b5bf499ba 100644 --- a/src/ResourceManager/Storage/Storage.sln +++ b/src/ResourceManager/Storage/Storage.sln @@ -1,11 +1,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2027 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.ResourceManager.Common", "..\Common\Commands.ResourceManager.Common\Commands.ResourceManager.Common.csproj", "{3819D8A7-C62C-4C47-8DDD-0332D9CE1252}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Resources", "..\Resources\Commands.Resources\Commands.Resources.csproj", "{E1F5201D-6067-430E-B303-4E367652991B}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Storage", "..\..\Common\Commands.Common.Storage\Commands.Common.Storage.csproj", "{65C3A86A-716D-4E7D-AB67-1DB00B3BF72D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Storage.Management", "..\..\Common\Commands.Common.Storage.Management\Commands.Common.Storage.Management.csproj", "{4CCA7339-15BF-4066-9FA1-6A23A58F2CEE}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common", "..\..\Common\Commands.Common\Commands.Common.csproj", "{5EE72C53-1720-4309-B54B-5FB79703195F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Storage", "..\..\Storage\Commands.Storage\Commands.Storage.csproj", "{08CF7DA7-0392-4A19-B79B-E1FF67CDB81A}" @@ -20,12 +24,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{13BB1C60 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.ScenarioTests.ResourceManager.Common", "..\Common\Commands.ScenarioTests.ResourceManager.Common\Commands.ScenarioTests.ResourceManager.Common.csproj", "{3436A126-EDC9-4060-8952-9A1BE34CDD95}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Resources.Rest", "..\Resources\Commands.ResourceManager\Cmdlets\Commands.Resources.Rest.csproj", "{8058D403-06E3-4BED-8924-D166CE303961}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Authentication", "..\..\Common\Commands.Common.Authentication\Commands.Common.Authentication.csproj", "{D3804B64-C0D3-48F8-82EC-1F632F833C9E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Authentication.Abstractions", "..\..\Common\Commands.Common.Authentication.Abstractions\Commands.Common.Authentication.Abstractions.csproj", "{70527617-7598-4AEF-B5BD-DB9186B8184B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Authentication.ResourceManager", "..\Common\Commands.Common.Authentication.ResourceManager\Commands.Common.Authentication.ResourceManager.csproj", "{69C2EB6B-CD63-480A-89A0-C489706E9299}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Authorization", "..\..\Common\Commands.Common.Authorization\Commands.Common.Authorization.csproj", "{24508E26-154D-47F1-80EE-439BF0710996}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Graph.RBAC", "..\..\Common\Commands.Common.Graph.RBAC\Commands.Common.Graph.RBAC.csproj", "{269ACF73-0A34-42DC-AB9C-4B15931A489D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Network", "..\..\Common\Commands.Common.Network\Commands.Common.Network.csproj", "{1338F7AE-7111-4ED3-8916-2D0FECC876F4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Compute", "..\..\Common\Commands.Common.Compute\Commands.Common.Compute.csproj", "{F6D508D1-BE2D-475D-AA0F-DFB5C615CC9D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.KeyVault", "..\..\Common\Commands.Common.KeyVault\Commands.Common.KeyVault.csproj", "{836965C0-B198-4D01-B3D7-757DB62B49A0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.WebSites", "..\..\Common\Commands.Common.Websites\Commands.Common.WebSites.csproj", "{592B3E1B-49E3-4F3C-BF6B-E5D4133B1443}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Profile", "..\Profile\Commands.Profile\Commands.Profile.csproj", "{142D7B0B-388A-4CEB-A228-7F6D423C5C2E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Common.Aks", "..\..\Common\Commands.Common.Aks\Commands.Common.Aks.csproj", "{87BA5687-5563-4491-8846-77D98D0605D3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.TestFx", "..\Common\Commands.TestFx\Commands.TestFx.csproj", "{8C625DE3-0067-454A-AF2C-EFD672EEB31A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -36,10 +60,18 @@ Global {3819D8A7-C62C-4C47-8DDD-0332D9CE1252}.Debug|Any CPU.Build.0 = Debug|Any CPU {3819D8A7-C62C-4C47-8DDD-0332D9CE1252}.Release|Any CPU.ActiveCfg = Release|Any CPU {3819D8A7-C62C-4C47-8DDD-0332D9CE1252}.Release|Any CPU.Build.0 = Release|Any CPU + {E1F5201D-6067-430E-B303-4E367652991B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1F5201D-6067-430E-B303-4E367652991B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1F5201D-6067-430E-B303-4E367652991B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1F5201D-6067-430E-B303-4E367652991B}.Release|Any CPU.Build.0 = Release|Any CPU {65C3A86A-716D-4E7D-AB67-1DB00B3BF72D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {65C3A86A-716D-4E7D-AB67-1DB00B3BF72D}.Debug|Any CPU.Build.0 = Debug|Any CPU {65C3A86A-716D-4E7D-AB67-1DB00B3BF72D}.Release|Any CPU.ActiveCfg = Release|Any CPU {65C3A86A-716D-4E7D-AB67-1DB00B3BF72D}.Release|Any CPU.Build.0 = Release|Any CPU + {4CCA7339-15BF-4066-9FA1-6A23A58F2CEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CCA7339-15BF-4066-9FA1-6A23A58F2CEE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CCA7339-15BF-4066-9FA1-6A23A58F2CEE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CCA7339-15BF-4066-9FA1-6A23A58F2CEE}.Release|Any CPU.Build.0 = Release|Any CPU {5EE72C53-1720-4309-B54B-5FB79703195F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5EE72C53-1720-4309-B54B-5FB79703195F}.Debug|Any CPU.Build.0 = Debug|Any CPU {5EE72C53-1720-4309-B54B-5FB79703195F}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -64,6 +96,10 @@ Global {3436A126-EDC9-4060-8952-9A1BE34CDD95}.Debug|Any CPU.Build.0 = Debug|Any CPU {3436A126-EDC9-4060-8952-9A1BE34CDD95}.Release|Any CPU.ActiveCfg = Release|Any CPU {3436A126-EDC9-4060-8952-9A1BE34CDD95}.Release|Any CPU.Build.0 = Release|Any CPU + {8058D403-06E3-4BED-8924-D166CE303961}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8058D403-06E3-4BED-8924-D166CE303961}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8058D403-06E3-4BED-8924-D166CE303961}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8058D403-06E3-4BED-8924-D166CE303961}.Release|Any CPU.Build.0 = Release|Any CPU {D3804B64-C0D3-48F8-82EC-1F632F833C9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D3804B64-C0D3-48F8-82EC-1F632F833C9E}.Debug|Any CPU.Build.0 = Debug|Any CPU {D3804B64-C0D3-48F8-82EC-1F632F833C9E}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -76,6 +112,42 @@ Global {69C2EB6B-CD63-480A-89A0-C489706E9299}.Debug|Any CPU.Build.0 = Debug|Any CPU {69C2EB6B-CD63-480A-89A0-C489706E9299}.Release|Any CPU.ActiveCfg = Release|Any CPU {69C2EB6B-CD63-480A-89A0-C489706E9299}.Release|Any CPU.Build.0 = Release|Any CPU + {24508E26-154D-47F1-80EE-439BF0710996}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24508E26-154D-47F1-80EE-439BF0710996}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24508E26-154D-47F1-80EE-439BF0710996}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24508E26-154D-47F1-80EE-439BF0710996}.Release|Any CPU.Build.0 = Release|Any CPU + {269ACF73-0A34-42DC-AB9C-4B15931A489D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {269ACF73-0A34-42DC-AB9C-4B15931A489D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {269ACF73-0A34-42DC-AB9C-4B15931A489D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {269ACF73-0A34-42DC-AB9C-4B15931A489D}.Release|Any CPU.Build.0 = Release|Any CPU + {1338F7AE-7111-4ED3-8916-2D0FECC876F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1338F7AE-7111-4ED3-8916-2D0FECC876F4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1338F7AE-7111-4ED3-8916-2D0FECC876F4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1338F7AE-7111-4ED3-8916-2D0FECC876F4}.Release|Any CPU.Build.0 = Release|Any CPU + {F6D508D1-BE2D-475D-AA0F-DFB5C615CC9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6D508D1-BE2D-475D-AA0F-DFB5C615CC9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6D508D1-BE2D-475D-AA0F-DFB5C615CC9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6D508D1-BE2D-475D-AA0F-DFB5C615CC9D}.Release|Any CPU.Build.0 = Release|Any CPU + {836965C0-B198-4D01-B3D7-757DB62B49A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {836965C0-B198-4D01-B3D7-757DB62B49A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {836965C0-B198-4D01-B3D7-757DB62B49A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {836965C0-B198-4D01-B3D7-757DB62B49A0}.Release|Any CPU.Build.0 = Release|Any CPU + {592B3E1B-49E3-4F3C-BF6B-E5D4133B1443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {592B3E1B-49E3-4F3C-BF6B-E5D4133B1443}.Debug|Any CPU.Build.0 = Debug|Any CPU + {592B3E1B-49E3-4F3C-BF6B-E5D4133B1443}.Release|Any CPU.ActiveCfg = Release|Any CPU + {592B3E1B-49E3-4F3C-BF6B-E5D4133B1443}.Release|Any CPU.Build.0 = Release|Any CPU + {142D7B0B-388A-4CEB-A228-7F6D423C5C2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {142D7B0B-388A-4CEB-A228-7F6D423C5C2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {142D7B0B-388A-4CEB-A228-7F6D423C5C2E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {142D7B0B-388A-4CEB-A228-7F6D423C5C2E}.Release|Any CPU.Build.0 = Release|Any CPU + {87BA5687-5563-4491-8846-77D98D0605D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87BA5687-5563-4491-8846-77D98D0605D3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87BA5687-5563-4491-8846-77D98D0605D3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87BA5687-5563-4491-8846-77D98D0605D3}.Release|Any CPU.Build.0 = Release|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C625DE3-0067-454A-AF2C-EFD672EEB31A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -83,7 +155,7 @@ Global GlobalSection(NestedProjects) = preSolution {7D1D3B56-4EB4-4819-86FD-43330DED8EE7} = {13BB1C60-A70E-4780-ABEF-D5EE36754085} {3436A126-EDC9-4060-8952-9A1BE34CDD95} = {13BB1C60-A70E-4780-ABEF-D5EE36754085} - {69C2EB6B-CD63-480A-89A0-C489706E9299} = {13BB1C60-A70E-4780-ABEF-D5EE36754085} + {8C625DE3-0067-454A-AF2C-EFD672EEB31A} = {13BB1C60-A70E-4780-ABEF-D5EE36754085} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4C7FBF09-6EF8-4896-BCD6-7052C267D515}